‫ARCore لـ Jetpack XR

يمكنك دمج المحتوى الرقمي في العالم الحقيقي باستخدام إمكانات الإدراك.
آخر الأخبار الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار الأوّلي
‫30 يوليو 2025 - - - 1.0.0-alpha05

تعريف التبعيات

لإضافة تبعية على ARCore في Jetpack XR، يجب إضافة مستودع Google Maven إلى مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.

أضِف التبعيات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:

Groovy

dependencies {
    implementation "androidx.xr.arcore:arcore:1.0.0-alpha05"
}

Kotlin

dependencies {
    implementation("androidx.xr.arcore:arcore:1.0.0-alpha05")
}

لمزيد من المعلومات حول العناصر التابعة، يُرجى الاطّلاع على إضافة عناصر تابعة للإنشاء.

الملاحظات

تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.

إنشاء مشكلة جديدة

يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.

الإصدار 1.0

الإصدار 1.0.0-alpha05

‫30 يوليو 2025

تم إصدار androidx.xr.arcore:arcore:1.0.0-alpha05 وandroidx.xr.arcore:arcore-guava:1.0.0-alpha05 وandroidx.xr.arcore:arcore-rxjava3:1.0.0-alpha05. يحتوي الإصدار 1.0.0-alpha05 على عمليات الإيداع هذه.

الميزات الجديدة

  • أضِف getPrimaryHandSide ليتمكّن المطوّر من الحصول على معلومات الجانب الأيسر (I270bd).
  • إضافة واجهة برمجة تطبيقات للتحقّق من توفّر خدمة تحديد المواقع المرئية (VPS) (I58573)
  • إضافة ARCore API لـ checkVpsAvailability (Idbded)
  • تمت إضافة دوال الإضافة stateFlowable إلى :xr:arcore:arcore-rxjava3 ليستخدمها مطوّرو Java. (I083aa، b/427247794)

تغييرات واجهة برمجة التطبيقات

  • تمت إعادة تسمية قيم Config *Mode لتعكس سلوكها. (I6d247، b/414648065)
  • سيحتوي العنصر الرئيسي في ARCore (xr:arcore:arcore) على واجهات برمجة تطبيقات غير متزامنة بنمط Kotlin فقط. يمكن لمطوّري تطبيقات Java الاعتماد على مكتبة xr:arcore:arcore-rxjava3 للوصول إلى واجهات برمجة التطبيقات المتوافقة. (Ia525e، b/422794329)
  • سيحتوي العنصر الرئيسي في ARCore (xr:scenecore:scenecore) على واجهات برمجة تطبيقات غير متزامنة بنمط Kotlin فقط. يمكن لمطوّري تطبيقات Java الاعتماد على مكتبة xr:arcore:arcore-guava للوصول إلى واجهات برمجة التطبيقات المتوافقة. (Iffcb4، b/422773524)
  • تمت إضافة Anchor.persistAsync() إلى AnchorGuava ليستخدمها مطوّرو Java. (I4af1c، b/425984631)
  • تمت إضافة Earth.createAnchorOnSurfaceAsync(Session, Double, Double, Double, Quaternion, Surface) إلى EarthGuava ليستخدمها مطوّرو Java. (I66357، b/425992992)
  • سيستخدم مطوّرو Java دوال الإضافة GltfModel.createAsync في GltfModel.kt. سيتم حذف الدوال غير المتزامنة في GltfModel. (I0af60)
  • تستخدم هذه المكتبة الآن تعليقات توضيحية بشأن القيم الخالية في JSpecify، وهي تعليقات توضيحية خاصة بالاستخدام. على مطوّري Kotlin استخدام وسيطة المترجم البرمجي التالية لفرض الاستخدام الصحيح: -Xjspecify-annotations=strict (هذه هي القيمة التلقائية بدءًا من الإصدار 2.1.0 من المترجم البرمجي للغة Kotlin) (Ia8420، b/326456246)
  • تمت إضافة دوال الإضافة subscribeAsFlowable إلى :xr:arcore:arcore-rxjava3 ليستخدمها مطوّرو Java. (Id3e49، b/427277298)

الإصدار 1.0.0-alpha04

‫7 مايو 2025

تم طرح androidx.xr.arcore:arcore:1.0.0-alpha04. يحتوي الإصدار 1.0.0-alpha04 على عمليات الإيداع هذه.

تغييرات واجهة برمجة التطبيقات

  • تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 أو إصدار أحدث من KGP. (Idb6b5)
  • تم نقل TrackingState وHandJointType من ARCore إلى Runtime.
  • تم تغيير Hand.State.isActive (boolean) إلى Hand.State.trackingState (androidx.xr.runtime.TrackingState).
  • تعرض Anchor.load القيمة Anchor.AnchorLoadInvalidUuid إذا كان المعرّف الفريد العالمي (UUID) غير صالح.

الإصدار 1.0.0-alpha03

‫26 فبراير 2025

تم إصدار الإصدار androidx.xr.arcore:arcore:1.0.0-alpha03 بدون أي تغييرات ملحوظة منذ آخر إصدار أولي. يحتوي الإصدار 1.0.0-alpha03 على عمليات الدمج هذه.

الإصدار 1.0.0-alpha02

‫12 فبراير 2025

تم طرح androidx.xr.arcore:arcore:1.0.0-alpha02. يحتوي الإصدار 1.0.0-alpha02 على عمليات الإيداع هذه.

الميزات الجديدة

  • تمت إضافة ميزة تتبُّع اليد. استخدِم Hand.left وHand.right للوصول إلى معلومات التتبُّع.
  • تعرض الآن جميع واجهات برمجة التطبيقات التي تنشئ رابطًا ثابتًا (Anchor.create وAnchor.load وPlane.createAnchor) القيمة AnchorCreateResult وتنفّذ AnchorCreateResourcesExhausted بشكلٍ صحيح.

إصلاح الأخطاء

  • لم يعُد Anchor.detach يتسبّب في حدوث عطل فادح بسبب حالة تزاحم مع سلسلة تعليمات تعديل الجلسة.
  • أصبح تطبيق Anchor.create أكثر ثباتًا عند تشغيله على محاكي

الإصدار 1.0.0-alpha01

‫12 ديسمبر 2024

تم طرح androidx.xr.arcore:arcore-* 1.0.0-alpha01.

ميزات الإصدار الأوّلي

تستوحي مكتبة "ARCore لـ Jetpack XR" تصميمها من مكتبة ARCore الحالية، وتوفّر إمكانات لدمج المحتوى الرقمي مع العالم الحقيقي. تتضمّن هذه المكتبة تتبُّع الحركة، ومرتكزات ثابتة، واختبارات إصابة، وتحديد مستوى مع تصنيف دلالي (على سبيل المثال، الأرضيات والجدران وأسطح الطاولات). يمكنك الاطّلاع على دليل المطوِّرين لمزيد من المعلومات حول استخدام ARCore في Jetpack XR.

  • Session: تستخدم ARCore for Jetpack XR بيئة Jetpack XR Runtime في الخلفية لتشغيل وظائفها. ستستخدم Session للتفاعل مع معظم واجهات برمجة التطبيقات ARCore for Jetpack XR، لذا يُرجى الاطّلاع على مستنداتها.

  • Plane: استخدِم الطائرات لفهم العالم من حولك. يحتوي كل مستوى على Label يصفه دلاليًا. يمكنك استخدام subscribe لتلقّي إشعارات بشأن آخر الطائرات التي تم رصدها أو state لتلقّي إشعارات بشأن التغييرات التي تطرأ على طائرة معيّنة.

  • Anchor: رابط بين كائن افتراضي وموقع جغرافي في العالم الحقيقي يمكن ربط نقاط الارتكاز بموقع جغرافي محدّد في المساحة (باستخدام create) أو Trackable (باستخدام createAnchor).

    • يمكن إعادة استخدام نقاط الارتكاز في الجلسات المتعدّدة. يمكنك استخدام persist لتخزينها، وgetPersistedAnchorUuids لإدراجها، وload لاستردادها. احرص على unpersist هذه الأذونات عندما لا تكون قيد الاستخدام.

    • يمكن استخدام نقاط الارتكاز بشكل متبادل بين ARCore في Jetpack XR وJetpack SceneCore. يمكنك إنشاء AnchorEntity باستخدام نقطة ربط أو، إذا كان لديك AnchorEntity حالي، يمكنك استخدام getAnchor لاسترداد نقطة الربط الأساسية.

    • تقديم تفاعلات طبيعية مع المستخدمين باستخدام hitTest يستخدم اختبار إصابة Ray لتحديد المحتوى الذي يتقاطع معه ولإنشاء Anchor من ذلك الموقع الجغرافي. ننصحك بإجراء اختبار hitTest من InputEvent.

المشاكل المعروفة

  • قد يحدث تأخير بين وقت طلب إزالة unpersist ووقت إزالة معرّف UUID الخاص به من النتائج التي تعرضها getPersistedAnchorUuids.

  • لن يتحقّق create من توفّر موارد كافية في النظام لعرض نقاط ارتكاز جديدة. قد يؤدي إنشاء عدد كبير جدًا من نقاط الارتكاز إلى حدوث عُطل.

  • لا تتوفّر حاليًا إمكانية الاحتفاظ ببيانات Anchor التي تم الاحتفاظ بها سابقًا ثم إزالتها.

  • يمكن استخدامها في المحاكي، ولكن قد لا يكون السلوك ثابتًا كما هو الحال عند التشغيل على جهاز فعلي. على وجه الخصوص، قد يتعذّر إجراء مكالمات إلى create ويظهر خطأ في الرمز الأصلي ويتم إنهاء النشاط على الفور.

  • في ظروف معيّنة، قد يتم عرض الخطأ RuntimeException بشكل خاطئ عند استدعاء persist مع الرسالة "لم يتم حفظ نقطة الارتكاز". وفي هذه الظروف، ستظل الدالة تعمل بنجاح وسيتم حفظ نقطة الارتكاز. ننصحك بتضمين طلب persist في كتلة try كحلّ بديل.