Jetpack SceneCore

إنشاء رسم بياني لمشهد Android XR ومعالجته باستخدام محتوى ثلاثي الأبعاد
آخر تحديث الإصدار المستقر إصدار محتمل الإصدار التجريبي الإصدار الأولي
‫21 أكتوبر 2026 1.0.0 - - 1.1.0-alpha01

تحديد الاعتماديات

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

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

Groovy

dependencies {
    implementation "androidx.xr.scenecore:scenecore:1.1.0-alpha01"

    // Use to write unit tests
    testImplementation "androidx.xr.scenecore:scenecore-testing:1.1.0-alpha01"
}

Kotlin

dependencies {
    implementation("androidx.xr.scenecore:scenecore:1.1.0-alpha01")

    // Use to write unit tests
    testImplementation("androidx.xr.scenecore:scenecore-testing:1.1.0-alpha01")
}

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

الملاحظات

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

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

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

الإصدار 1.1

الإصدار 1.1.0-alpha01

‫21 أكتوبر 2026

تم طرح androidx.xr.scenecore:scenecore-*:1.1.0-alpha01. يتضمّن الإصدار 1.1.0-alpha01 هذه التعديلات.

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

  • تمت إضافة واجهات برمجة تطبيقات لتعديل الشبكة الديناميكية (MeshBuffer.createDynamic وMeshBuffer.updateVertexData وMeshBuffer.updateIndexData ودالة إنشاء CustomMesh.BuilderFromMeshData ديناميكية) لإتاحة تعديل بيانات الرؤوس والفهارس في وقت التشغيل. (Ia1ecb)
  • تمت إضافة طرق مساعدة VertexLayout.getBufferIndex لاسترداد فهرس المخزن المؤقت بسهولة لـ VertexAttribute أو VertexBufferLayout معيّن. (I1a9e3)
  • تم جعل CustomMesh.bounds متغيّرًا لكي يتم تعديل المربّع المحيط ديناميكيًا أثناء التشغيل. (Ib0397)
  • تمت ترقية واجهات برمجة التطبيقات الخاصة بالحركة في glTF (GltfAnimation وGltfModelEntity.getAnimations وGltfModelEntity.stopAllAnimations) إلى الإصدار العلني/الثابت مع الإبقاء على دالة الضبط GltfAnimation.loop كإصدار تجريبي، وGltfAnimationStartOptions وstart(options) كإصدار تجريبي ومتوقّف نهائيًا. (Iacdae)
  • تمت إضافة stopAllAnimations() إلى GltfModelEntity، وجعل GltfAnimation.start() بدون مَعلمات، وإضافة السمتَين loop وspeed إلى GltfAnimation، وإيقاف نهائي لـ GltfAnimationStartOptions وstart(options) وseekTo(Duration). (I53105)
  • تم تعديل واجهات برمجة التطبيقات GltfModelEntity لتوثيق IllegalStateException (خاصةً Entity.DisposedException) عند استدعائها على كيانات تم التخلص منها. I65a76f

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

  • تم تحديث تبعية androidx.lifecycle:lifecycle-runtime إلى الإصدار 2.10.0. هذا الإصدار مطلوب لتشغيل عمليات فحص lint المجمّعة لوقت تشغيل مراحل النشاط مع الإصدار 9.5.0-alpha04 من AGP أو الإصدارات الأحدث. (I99bfd، b/556807521)
  • تحسين kdocs ذات الصلة بـ AudioOutputProvider لتوضيح أنّه يجب عدم إعادة استخدامها مع نُسخ متعددة من ExoPlayer (I6b18e)
  • تمت إزالة التبعيات غير الضرورية على impress من وحدات XR المختلفة. I84636c

الإصدار 1.0

الإصدار 1.0.0

‫21 أكتوبر 2026

تم طرح androidx.xr.scenecore:scenecore-*:1.0.0. يتضمّن الإصدار 1.0.0 هذه التعديلات.

الميزات الرئيسية للإصدار 1.0.0:

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

الإصدار ‎1.0.0-rc02

‫7 أكتوبر 2026

تم طرح androidx.xr.scenecore:scenecore-*:1.0.0-rc02. يتضمّن الإصدار 1.0.0-rc02 هذه التعديلات.

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

  • تم إصلاح مشكلة تسرُّب الذاكرة المحتملة من خلال إزالة perceptionRuntimeCache في SessionExt وإعادة هيكلته لاسترداد PerceptionRuntime مباشرةً من مثيل Session. (Ie35b1)
  • تم إصلاح تسرُّب محتمل للسياق باستخدام applicationContext لمقابض OpenXR الأصلية لضمان عدم احتفاظ وقت التشغيل الأصلي بمراجع لسياق Activity. (Ie35b1)
  • تم إصلاح حالات السباق في XrInstanceManager من خلال تقديم قفل مناسب للمزامنة والتهيئة. (Ie35b1)
  • تم إصلاح ReferenceCleaner لإتاحة إلغاء تسجيل إجراءات التنظيف وضمان تشغيل إجراءات التنظيف في Entity بشكل صريح أثناء dispose()، ما يمنع التنفيذ المكرّر عند تجميع المهملات. (Ie35b1)
  • تم إصلاح مشكلة تسرُّب الذاكرة في Scene من خلال إزالة sceneCache في SessionExt وإعادة تصميم Scene لجلب المثيل مباشرةً من sessionConnectors. (Ie35b1)

الإصدار ‎1.0.0-rc01

‫9 سبتمبر 2026

تم طرح androidx.xr.scenecore:scenecore-*:1.0.0-rc01. يتضمّن الإصدار 1.0.0-rc01 هذه التعديلات.

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

  • تمت إضافة مكتبة واحدة (xr:scenecore:scenecore-openxr). (Ic49f2)
  • تمت إزالة العديد من واجهات برمجة التطبيقات المتوقفة نهائيًا قبل الإصدار الثابت 1.0.0.

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

  • تم حلّ خطأ في تسرّب الذاكرة حيث يمكن للنظام الاحتفاظ بمرجع النشاط عند تدمير النشاط. (I6dcd7)

التغييرات في السلوك

  • تمت إزالة مخرجات logcat من SceneCore. (I10c3c)

الإصدار ‎1.0.0-beta02

‫12 أغسطس 2026

تم طرح androidx.xr.scenecore:scenecore-*:1.0.0-beta02. يتضمّن الإصدار 1.0.0-beta02 هذه التعديلات.

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

  • ستعرض الدالة toMoveEvent() القيمة null إذا تم جمع الكيان الأصلي من خلال عملية جمع المهملات. (Ia7a1b)

الإصدار ‎1.0.0-beta01

‫15 يوليو 2026

تم طرح androidx.xr.scenecore:scenecore-*:1.0.0-beta01. يتضمّن الإصدار 1.0.0-beta01 هذه التعديلات.

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

  • تم تصنيف واجهتَي برمجة التطبيقات GltfAnimation وSpatialGltfModelAnimation على أنّهما تجريبيتان. تم تحويل بعض السمات إلى دوال getter. (I8d689، b/524771027)
  • تمت إزالة طريقة المصنع العلنية MovableComponent.createTrackingMovable. (I00912، b/477169015)
  • تم تحويل Session.create إلى دالة تعليق. (I5d27f)
  • يوسّع ActivitySpace وAnchorSpace الآن فئة SpaceEntity الشائعة التي تحتوي على سلوك شائع للكيانات التي يتحكّم النظام في مواضعها (I506ec، b/513619219)
  • تم تعديل AnchorEntity ليصبح اسمه AnchorSpace (Ifa95e، b/513619219)
  • توفّر واجهة برمجة التطبيقات العامة للاختبار SoundEffectPoolComponentTester. (I87df7، b/498104417)
  • تمت إضافة مَعلمة cornerRadius اختيارية إلى دالة الإنشاء SurfaceEntity.Shape.Quad وجعل السمة cornerRadius علنية. يمكن للمطوّرين الآن تحديد نصف قطر الزاوية عند إنشاء شكل رباعي لعرض لوحات "SurfaceEntity" بزوايا مستديرة، والاستعلام عن نصف قطر الأشكال الرباعية الحالية. (Ia7809، b/474681085)
  • توفير واجهة برمجة تطبيقات عامة للاختبار SpatialAudioTrackBuilderTester وSpatialAudioTrackTester وSceneCoreTestRule.getTester. (I378c6، b/496333938)
  • إضافة عمليات إلغاء متخصّصة لـ toString() لعدد من أنواع ARCore تهدف هذه الأنواع إلى توفير معلومات إضافية للمطوّرين لأغراض تصحيح الأخطاء، وليس من المفترض استخدامها في التطبيقات المنشورة أو قيد الإنتاج.

الإصدار ‎1.0.0-alpha16

‫17 يونيو 2026

تم طرح androidx.xr.scenecore:scenecore-*:1.0.0-alpha16. يتضمّن الإصدار 1.0.0-alpha16 هذه التعديلات.

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

  • تمت إضافة عمليات تحميل زائدة لـ addVertexData وsetIndexData وaddSubset إلى CustomMesh.BuilderFromMeshData وCustomMesh.BuilderFromMeshBuffer. تسمح هذه الدوال الزائدة للمطوّرين بتمرير البيانات الأولية والمَعلمات مباشرةً (مثل ByteBuffer وoffset وsize وtopology وindexOffset وindexCount) بدون الحاجة إلى تضمينها في عناصر وسيطة مثل ByteBufferRegion أو MeshSubset. (I84d5c)
  • تمت إعادة تسمية Scene.requestFullSpaceMode() وScene.requestHomeSpaceMode() إلى requestFullSpace() وrequestHomeSpace() على التوالي. تم أيضًا تعديل الطرق والمستندات الأخرى التي تشير إلى "وضع المساحة المنزلية" و "وضع المساحة الكاملة". (I45751)
  • توفير واجهة برمجة التطبيقات العامة للاختبار PanelEntityTester وMainPanelEntityTester (I961e4)
  • جارٍ إضافة السمة pointSourceParams إلى SoundEffectPoolComponent (I4a750)
  • توفير واجهة برمجة التطبيقات العامة للاختبار MovableComponentTester (I0c972)
  • توفير واجهة برمجة التطبيقات الاختبارية العامة PointerCaptureComponentTester (Ic0d4f)
  • توفير واجهة برمجة التطبيقات الاختبارية العامة ActivityPanelEntityTester (I837c4)
  • توفير واجهة برمجة تطبيقات عامة للاختبار ResizableComponentTester (I0a3a4)
  • توفير واجهة برمجة تطبيقات عامة للاختبار BoundsComponentTester. (Iefd53)
  • توفير واجهة برمجة التطبيقات العامة للاختبار SpatialMediaPlayerTester (Ia3e09)
  • توفير واجهة برمجة التطبيقات الاختبارية العلنية SpatialEnvironmentTester (Icf60f)
  • توفّر واجهة برمجة التطبيقات الاختبارية العامة GltfModelTester وSceneCoreTestRule.getGltfModelTester. (I33fcb)
  • توفّر واجهة برمجة التطبيقات العامة للاختبار InteractableComponentTester. (Ia7096)
  • توفّر واجهة برمجة التطبيقات الاختبارية العامة SurfaceEntityTester. (Ic0740)
  • توفّر واجهة برمجة التطبيقات العامة للاختبار GltfModelEntityTester وTestGltfModelNode وTestGltfAnimation. (I72c4d)
  • توفّر واجهة برمجة التطبيقات الاختبارية العامة SceneTester وSceneCoreTestRule.sceneTester. (Ib4ec5)
  • توفّر واجهة برمجة التطبيقات الاختبارية العامة PerceptionSpaceTester وSceneCoreTestRule.perceptionSpaceTester. (Icf739)
  • توفّر واجهة برمجة التطبيقات الاختبارية العامة MeshEntityTester. (I63801)
  • توفير واجهة برمجة التطبيقات العامة للاختبار ImageBasedLightingAssetTester وSceneCoreTestRule.getTester. (I57ec4)
  • توفير واجهة برمجة التطبيقات الاختبارية العامة TextureTester (Ia865b)
  • توفير واجهة برمجة تطبيقات عامة للاختبار PositionalAudioComponentTester (Icd96e)
  • توفير واجهة برمجة تطبيقات عامة للاختبار SpatialSoundPoolTester (Ia3531)
  • توفير واجهة برمجة التطبيقات الاختبارية العامة SoundEffectPoolTester (If349a)
  • توفّر واجهة برمجة التطبيقات الاختبارية العامة ActivitySpaceTester وSceneCoreTestRule.activitySpaceTester. (I2d5c2)
  • توفير واجهة برمجة تطبيقات عامة للاختبار SpatialWindowTester (I41837)
  • توفير واجهة برمجة تطبيقات عامة للاختبار AnchorEntityTester (I68404)
  • توفّر واجهة برمجة التطبيقات العامة للاختبار SceneCoreTestRule. (Ic72d3)
  • تمت إضافة فئة PixelDensity وعرضها من خلال Scene#virtualPixelDensity لتوفير نسبة بكسل لكل متر مستندة إلى الأجهزة من أجل تعيين الأبعاد المادية بدقة في ActivitySpace. (I0e3ac)
  • تمت إضافة واجهات برمجة تطبيقات عامة لإنشاء وعرض شبكات مخصّصة. (I7ad2f)
  • تم تعديل واجهة برمجة التطبيقات VertexLayout لاستخدام قائمة من VertexBufferLayout، حيث يصف كل VertexBufferLayout السمات داخل مخزن مؤقت واحد للرؤوس. يتيح ذلك ترتيبات أكثر مرونة لبيانات الرؤوس، بما في ذلك السمات المتداخلة مع خطوات وإزاحات مخصّصة. (Ic426b)
  • توفّر هذه السمة MovableComponent.createTrackingMovable لتحويل عنصر قابل للتتبّع في ARCore إلى وضعية مرتبطة بمساحة النشاط. (I12249)
  • تم تعديل القيمة التلقائية للعنصر الرئيسي في Entity.create إلى قيمة فارغة. (Ic3145)
  • تم تعديل Entity ليصبح صنفًا بدلاً من واجهة، وهو الآن الصنف الأساسي لجميع أنواع الكيانات. وفي إطار هذا التغيير، تمت إزالة BaseEntity. (I7fbc9)
  • تنفّذ الآن كل من GltfModel وExrImage وImageBasedLightingAsset الواجهة AutoCloseable للسماح بإدارة الموارد الاصطلاحية باستخدام كتلة use في Kotlin. (I1ac79)
  • تم تقديم فئة ImageBasedLightingAsset لتحل محل ExrImage لتحديد الإضاءة المحيطة المكانية. تم إيقاف ExrImage نهائيًا وإزالتها من واجهة برمجة التطبيقات المتاحة للجميع. تم تعديل "SpatialEnvironmentPreference" لاستخدام "ImageBasedLightingAsset". (I6c92a)
  • تمت إعادة تسمية المَعلمة skybox في SpatialEnvironment إلى imageBasedLightingAsset لتعكس الغرض منها بشكل أفضل، وتم توضيح أنّه يجب تضمين أنسجة skybox المرئية في مَعلمة الهندسة. (I24d4a)
  • تستخدم الكيانات المكانية الآن كثافة ثابتة للجهاز في عمليات حساب البكسل إلى المتر في المستويَين 1 و2 من مستوى واجهة برمجة التطبيقات المكانية، ما يضمن حجمًا متسقًا بغض النظر عن التغييرات في كثافة شاشة النظام. (I37051)

الإصدار 1.0.0-alpha15

‫19 مايو 2026

تم طرح androidx.xr.scenecore:scenecore-*:1.0.0-alpha15. يتضمّن الإصدار 1.0.0-alpha15 هذه التعديلات.

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

  • تمت إزالة Entity.dispose() الآن كواجهة برمجة تطبيقات عامة. بدلاً من استدعاء dispose() على نُسخ Entity، يمكن للتطبيقات جعل النُسخ قابلة للتنظيف من خلال ضبط parent على null ومحو أي مراجع قوية لتلك النُسخ. (I396c9)
  • تم حذف طُرق set/clearOnLoadCompleteListener الخاصة بـ "SoundEffectPool". يمكنك استخدام add/removeLoadCompleteListener كبديل. (Iae78d)
  • تم استبدال set/clearSpatialVisibilityChangedListener في المشهد بـ add/removeSpatialVisibilityChangedListener. (I67dff)
  • تمت إعادة تسمية جميع طرق SceneCore add/removeOnFooListener إلى add/removeFooListener، مع إزالة On من الاسم. (Ibe50b)
  • تم استبدال الطريقتَين AnchorEntity.setOnOriginChangedListener وAnchorEntity.setOnStateChangedListener بالطرق add/removeFooListener لإتاحة استخدام عدة مستمعين في الوقت نفسه. (I13749)
  • تمت إعادة تسمية "AnchorEntity.State.TIMEDOUT" إلى "State.TIMED_OUT". (Id2b8d)
  • تمت إعادة تصميم واجهة Component API لتحسين الأمان وقابلية التوسّع. أصبحت السمة Component الآن فئة مجرّدة. أصبحت الطريقتان onAttach() وonDetach() الآن protected لمنع المكالمات المباشرة. يُرجى استخدام Entity.addComponent() وEntity.removeComponent() لإدارة مراحل نشاط المكوّنات. (Id04e8)
  • تم نقل ثوابت PlaneSemanticType PlaneOrientation في SceneCore من أعداد صحيحة إلى أنواع مخصّصة. ستتم إزالة ثوابت ANY، وعلى العملاء تعداد جميع الثوابت المطلوبة بشكل صريح بدلاً من ذلك، أو استخدام ثوابت Set الجديدة غير القابلة للتغيير .ALL. تقبل الآن طريقة المصنع AnchorEntity مجموعة من هذه الأنواع، بدلاً من قيمة واحدة. (Ib1033)
  • تمت إضافة إمكانية استخدام الرسوم المتحركة الهيكلية (التغطية) إلى واجهة Custom Mesh API التجريبية. يمكن للمطوّرين الآن تحريك الشبكات المخصّصة من خلال تحديد boneCount عند إنشاء MeshEntity وتعديل الحركة في الوقت الفعلي باستخدام MeshEntity.setBoneTransforms(). (Id8ba2، b/496692490)
  • تمت إضافة واجهة برمجة التطبيقات التجريبية CustomMesh. يمكن للمطوّرين الآن إنشاء أشكال هندسية ثلاثية الأبعاد وعرضها آليًا في مشاهد باستخدام CustomMesh وMeshBuffer وMeshEntity. (I94617)
  • تمت إزالة جهة الاتصال "androidx.xr.scenecore.SpatializerConstants.SourceType.SOURCE_TYPE_SOUND_FIELD". يمكنك استخدام SourceType.SOUND_FIELD كبديل. (Ia68b9)
  • إضافة مكوّنات الصوت المكاني: PositionalAudioComponent وSoundEffectPoolComponent وSoundFieldAudioComponent (Ieda89)
  • تم استبدال AnchorEntity.getAnchor بـ AnchorEntity.anchor، وسيتم الآن عرض Anchor عند إنشاء AnchorEntity من Anchor في ARCore (I5c7c8)
  • تم تغيير القيمة التلقائية للمَعلمة parent في طرق المصنع ActivityPanelEntity وGltfModelEntity وGroupEntity وPanelEntity وSurfaceEntity من ActivitySpace إلى null. لإرفاق كيان بالرسم البياني للمشهد وجعله مرئيًا، على المطوّرين الآن ضبط العنصر الرئيسي بشكل صريح أثناء إنشاء مثيل أو من خلال Entity.parent = ... (Ie7cc1)

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

  • يستعيد SceneCore الآن تلقائيًا مثيلات Entity عندما تصبح قابلة للوصول إليها بشكل وهمي، ما يزيل الحاجة إلى استدعاء المطوّرين صراحةً لـ dispose() من أجل تحرير الموارد. لضمان استرداد مثيل [Entity] بشكل صحيح، على المطوّرين اتّباع الخطوات التالية:
    • افصلها عن الرسم البياني للمشهد من خلال ضبط parent على null.
    • التخلّي عن جميع المراجع القوية للنسخة في الرمز البرمجي
    • ملاحظة بشأن أنواع الكيانات الخاصة: بالنسبة إلى الكيانات التي لا يمكن أن تكون تابعة (مثل AnchorEntity)، يجب على المطوّرين الاحتفاظ بمرجع قوي أثناء استخدام النسخة. إذا تم تحرير جميع المراجع، ستصبح هذه النُسخ قابلة للوصول إليها تلقائيًا وستتم استعادتها تلقائيًا. (I83fe4)
  • تم تضييق نطاق قواعد الاحتفاظ ببيانات Proguard لجميع مكتبات SceneCore. (I98447)

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

  • سيؤدي إرفاق PositionalAudioComponent بـ Entity مع مثيل ExoPlayer غير نشط إلى حدوث عطل. لا تستدعِ setPointSourceParams أو ترفق/تفصل مكوّنات الصوت المكاني أثناء إيقاف ExoPlayer. سيتم حلّ هذه المشكلة في الإصدار التالي.

الإصدار ‎1.0.0-alpha14

‫6 مايو 2026

تم طرح androidx.xr.scenecore:scenecore-*:1.0.0-alpha14. يتضمّن الإصدار 1.0.0-alpha14 هذه التعديلات.

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

  • تم نقل TrackingState وVpsAvailabilityResult إلى androidx.xr.arcore package، وأصبحت الأنواع في androidx.xr.runtime متوقفة نهائيًا الآن. (Ic7930، b/480462213)
  • تمت إعادة تسمية "Plane.Type" إلى "PlaneType". (I8c90c، b/482675376)
  • تمت إعادة تسمية "Plane.Label" إلى "PlaneLabel". (Ic6b67، b/482675376)
  • تم إيقاف "androidx.xr.runtime.FieldOfView" نهائيًا. يمكنك استخدام androidx.xr.runtime.math.FieldOfView كبديل. (Ia01a0، b/480233045)
  • تم تغيير اسم "Matrix4.pose" إلى "Matrix4.toPose()". تم إيقاف سمة pose نهائيًا. (I329b4، b/493383490)
  • تمت إعادة تسمية قيم التعداد HandJointType. (Ifbc83، b/482670596)
  • إتاحة Component.onAttach وonDetach كواجهة برمجة تطبيقات عامة للسماح بعمليات تنفيذ Component مخصّصة (I0ca1f)
  • إضافة مكوّنات الصوت المكاني (I39ddd، b/489421980، b/436642086، b/436642499)
  • إزالة الكيان من PointSourceParams بدلاً من ذلك، سيتم استخدام الكيان مباشرةً مع SpatialAudioTrack وSpatialSoundPool وSpatialMediaPlayer (Ib3685، b/489421980، b/436634048)
  • تمت إعادة تسمية DeviceTrackingMode.LAST_KNOWN إلى SPATIAL_LAST_KNOWN (مع استخدام عنصر احتياطي متوقّف نهائيًا)، وتمت إضافة INERTIAL_LAST_KNOWN لتتبُّع 3DoF، وتمت إضافة TRACKING_DEGRADED إلى TrackingState. (Ie661c، b/445466590)
  • تمّت إزالة GroupEntity. للحصول على كيان يتضمّن وظائف الكيان الأساسية فقط، يمكنك استدعاء Entity.create التي ستعرض واجهة الكيان. (I4c450، b/473867483)
  • تمت إضافة واجهة برمجة التطبيقات XrLog. اضبط XrLog.isEnabled على true لتفعيل التسجيل في JetpackXR، واستخدِم XrLog.Level لضبط مستوى السجلّ. (I76a1f، b/463460895، b/487378441)

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

  • يتم الآن ضبط "Scene.keyEntity" تلقائيًا على "mainPanelEntity". (I6a3ef)

الإصدار ‎1.0.0-alpha13

‫25 مارس 2026

تم طرح androidx.xr.scenecore:scenecore-*:1.0.0-alpha13. يتضمّن الإصدار 1.0.0-alpha13 هذه التعديلات.

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

  • تمت إزالة علامة "unscaledGravityAlignedActivitySpace" من "Session.create". يتم الآن عرض "ActivitySpace" دائمًا بالحجم الأصلي وبمحاذاة الجاذبية. (If6f11، b/458173423)
  • تمت إزالة الدالتَين setMaterialOverride وclearMaterialOverride المتوقفتَين نهائيًا من GltfModelEntity، واللتَين يتم استدعاؤهما الآن في GltfModelNode الفردي. (I2e5d2)
  • تمت إضافة transformPixelCoordinatesToLocalPosition وtransformNormalizedCoordinatesToLocalPosition إلى PanelEntity وإزالة الطرق التجريبية المكافئة التي كانت تُرجع الوضعيات بدلاً من مواضع Vector3. (Ib6960، b/460123106، b/458333591)
  • تمت إضافة واجهات برمجة تطبيقات GltfAnimation للتحكّم في صور glTF المتحركة في SceneCore. (I2c172، b/466065486، b/465819070، b/465818617)
  • تم تغيير اسم ScenePose.activitySpacePose إلى ScenePose.poseInActivitySpace (I8f175، b/427822261)
  • تمت إضافة عملية تنفيذ Scenecore Projected Runtime ‏ (I9c4ab، b/476440158)
  • عند تغيير حجم عنصر اللوحة الرئيسية، قد يعيد تحديد موضعه إلى نقطة الأصل ActivitySpace. ما مِن حلّ بديل سوى إعادة اللوحة يدويًا أو آليًا إلى موضعها الأصلي. سيتم إصلاح هذا الخطأ في إصدار مستقبلي. (b/489427007).
  • في بعض الحالات، قد لا يظهر خيار MovableComponent لـ "SurfaceEntity" وأنواع الكيانات الأخرى غير اللوحة. سيؤدي ضبط السمة MovableComponent.size بشكل صريح إلى ظهور الميزة. سيتم إصلاح هذا الخطأ في إصدار مستقبلي (b/490983469).

الإصدار 1.0.0-alpha12

‫25 فبراير 2026

تم طرح androidx.xr.scenecore:scenecore-*:1.0.0-alpha12. يتضمّن الإصدار 1.0.0-alpha12 هذه التعديلات.

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

  • قد تنتقل العناصر الثابتة من موضعها الثابت إلى نقطة بداية مساحة النشاط بعد عدة ثوانٍ.
  • قد تتعطّل التطبيقات عند إنشاء مثيلات SurfaceEntity. تم حلّ هذه المشكلة في الإصدار androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 والإصدارات اللاحقة. يجب تحديث التطبيقات المتأثرة إلى أحدث الإصدارات.

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

  • تم تغيير اسم "ActivitySpace.addOnSpaceUpdatedListener" و"ActivitySpace.removeOnSpaceUpdatedListener" إلى "addOnOriginChangedListener" و"removeOnOriginChangedListener". تم تغيير اسم "AnchorEntity.setOnSpaceUpdatedListener" إلى "setOnOriginChangedListener". (I5d8fb)
  • تمت إضافة سمة الاسم العلني إلى FakeEntity وأصبح العرض علنيًا في FakePanelEntity. (Ifa1f9)

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

  • تم إصلاح عمليات احتساب كثافة وحدات البكسل في صور النظام الأحدث (I57d04)

الإصدار 1.0.0-alpha11

‫28 يناير 2026

تم طرح androidx.xr.scenecore:scenecore-*:1.0.0-alpha11. يتضمّن الإصدار 1.0.0-alpha11 هذه التعديلات.

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

  • تتم إعادة تسمية PerceivedResolutionResult.InvalidCameraView إلى PerceivedResolutionResult.InvalidRenderViewpoint لأنّ واجهات برمجة التطبيقات getPerceivedResolution تعتمد الآن على واجهة برمجة التطبيقات RenderViewpoint في ARCore بدلاً من CameraViewScenePose. يعكس هذا الاسم عملية التنفيذ الجديدة بشكل أفضل. (I8c967، b/446989745، b/419311998)
  • تتطلّب الآن الطريقتان PanelEntity وSurfaceEntity.getPerceivedResolution استخدام RenderViewpoint يوفّره المطوّر كوسيطة. في السابق، كان وقت التشغيل يختار عشوائيًا RenderViewpoint المستخدَم في حساب الدقة المتصوَّرة. (I8c967، b/446989745، b/419311998)
  • تمت إزالة SpatialUser وScenePose.Head وScenePose.CameraView. تتوفّر وظائف واجهات برمجة التطبيقات هذه من خلال واجهتَي برمجة التطبيقات ArDevice وRenderViewpoint ضمن ARCore for Jetpack XR. للحصول على ScenePose يتوافق مع رأس المستخدم أو عينه اليسرى أو اليمنى، يمكن للمطوّرين استخدام PerceptionSpace.getScenePoseFromPerceptionPose مع الوضعية المناسبة التي يتم الحصول عليها باستخدام واجهات برمجة تطبيقات ARCore. (I2f69c، b/446989745)

الإصدار 1.0.0-alpha10

‫3 ديسمبر 2025

تم طرح androidx.xr.scenecore:scenecore-*:1.0.0-alpha10. يتضمّن الإصدار 1.0.0-alpha10 هذه التعديلات.

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

  • تمّت إضافة transformPixelCoordinatesToPose وtransformNormalizedCoordinatesToPose إلى PanelEntity (I462b3)
  • تمت إضافة فئة مساعِدة، Utils، إلى وقت تشغيل SceneCore استنادًا إلى المنطق في SceneCore (I570b9)

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

  • تم إصلاح عطل محتمل يمكن أن يحدث عند إتلاف الجلسة وتلقّي SpatialModeChangeEvent (If44e8)
  • تم إصلاح خلل قد يؤدي إلى ظهور IllegalStateException عند مغادرة نشاط أو إعادة الدخول إليه. (Ibff1c)

الإصدار 1.0.0-alpha09

‫19 نوفمبر 2025

تم طرح androidx.xr.scenecore:scenecore-*:1.0.0-alpha09. يتضمّن الإصدار 1.0.0-alpha09 هذه التعديلات.

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

  • تضيف هذه الميزة واجهة برمجة تطبيقات لاسترداد ScenePose يمثّل تركيبة وضعية مصدر مساحة الإدراك ووضعية بالنسبة إلى مصدر مساحة الإدراك. (I5b50a)
  • تمت إضافة دالة واحدة (getGravityAlignedPose). تتجاهل الوضعية المحاذية للجاذبية دوران المحورين الأفقي والعمودي. (I5ae21)
  • تم تغيير أنواع الثوابت في AnchorEntity.State من أعداد صحيحة إلى أنواع فرعية من الحالة. (Ib0c49)
  • تمت إضافة getChildren() إلى واجهة Entity. تم تعديل مراحل نشاط "MainPanelEntity". (Ia69d6)

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

  • تم تغيير أنواع الثوابت في PointerCaptureComponent.PointerCaptureState من أعداد صحيحة إلى أنواع فرعية من PointerCaptureState. (Ic888a)
  • أصبح Scene.spatialCapabilities الآن من النوع Set<SpatialCapability> بدلاً من حقل Int. تمت إعادة تسمية ثوابت SpatialCapability. (I9c109)
  • تمت إعادة تسمية أنواع الثوابت في SurfaceEntity وتغييرها من أعداد صحيحة إلى أنواع فرعية في SurfaceEntity. (I419ed)
  • تمت إعادة تسمية أنواع الثوابت في SpatializerConstant وتغييرها من أعداد صحيحة إلى أنواع فرعية في SpatializerConstant. (Ia0e18)
  • تمت إعادة تسمية أنواع الثوابت في TextureSampler وتغييرها من أعداد صحيحة إلى أنواع فرعية في TextureSampler. (I44078)
  • تم تغيير نوعَي الثوابت في SpatialVisibility من أعداد صحيحة إلى نوعَين فرعيَّين في SpatialVisibility. (I70739)
  • تمت إعادة تسمية أنواع الثوابت في ResizeEvent.ResizeState وتغييرها من Ints إلى أنواع فرعية من ResizeState. (I384d5)
  • تمت إعادة تسمية أنواع الثوابت في InputEvent وتغييرها من Ints لتكتسب من نوعها المرفق المعني. (I82817)
  • تم تغيير أنواع الثوابت في GltfModelEntity.AnimationState من أعداد صحيحة إلى أنواع فرعية من AnimationState. (I24f4e)
  • تمت إعادة تسمية أنواع الثوابت في AlphaMode وتغييرها من أعداد صحيحة إلى أنواع فرعية في AlphaMode. (I27b56)
  • تم تغيير نوعَي الثوابت في Space من أعداد صحيحة إلى أنواع فرعية من Space. (I9255b)
  • تعرض الآن ScenePose.hitTest والطرق ذات الصلة null في حال عدم العثور على تقاطع، بدلاً من HitTestResult مع قيمة فارغة hitPosition. لم يعُد الحقل "HitTestResult.hitPosition" يقبل قيمة فارغة. (I1400a)
  • تم تغيير الإشارات إلى ActivityPose لتصبح ScenePose. (I7fe43)

الإصدار ‎1.0.0-alpha08

‫22 أكتوبر 2025

تم طرح androidx.xr.scenecore:scenecore-*:1.0.0-alpha08. يتضمّن الإصدار ‎1.0.0-alpha08 هذه التعديلات.

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

  • تمت إعادة تسمية ActivityPanelEntity.moveActivity إلى transferActivity (I273c5، b/430332856)

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

  • تمت إضافة :xr:scenecore:scenecore-spatial-rendering و:xr:scenecore:scenecore-spatial-core كعنصرَي تبعية لتنفيذ :xr:scenecore:scenecore (I6ab65، b/447000520)
  • يتم طرح استثناء في حال الوصول إلى session.scene بعد تدمير الجلسة. (I77e6f)

الإصدار ‎1.0.0-alpha07

‫24 سبتمبر 2025

تم إصدار "androidx.xr.scenecore:scenecore:1.0.0-alpha07" و"androidx.xr.scenecore:scenecore-guava:1.0.0-alpha07" و"androidx.xr.scenecore:scenecore-testing:1.0.0-alpha07". يتضمّن الإصدار 1.0.0-alpha07 هذه التعديلات.

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

  • تم تغيير اسم fixedAspectRatio إلى isFixedAspectRatioEnabled وجعلها سمة منطقية (I5c4e8، b/440588971)
  • أصبحت فئات Scenecore المزيّفة الآن في وحدة xr:scenecore:scenecore-testing. (Idd951)
  • تمت إعادة تسمية shouldAutoHideContent إلى isAutoHideContentWhileResizingEnabled وshouldAlwaysShowOverlay إلى isAlwaysShowOverlayEnabled (I97c36، b/432335421)
  • تم تعديل ثوابت SceneCore TextureSampler لتسهيل قراءتها، على سبيل المثال، أصبحت TextureSampler.MinFilter.LINEAR الآن TextureSampler.MIN_FILTER_LINEAR (Ib159c)
  • تم دمج دالة الضبط setKeyEntity الخاصة بالمشهد في المتغيّر keyEntity. سيؤدي ضبط keyEntity على كيان غير قابل للنقل، مثل AnchorEntity، إلى ظهور IllegalArgumentException بدلاً من عرض قيمة منطقية خاطئة. (I62080، b/428721695، b/422215745)
  • تم استبدال المتغيّر "SpatialModeChangeListener" في المشهد بـ "setSpatialModeChangedListener". وتتلقّى Consumer<SpatialModeChangeEvent> بدلاً من SpatialModeChangedListener. يمكن الآن لـ "setSpatialModeChangedListener" استخدام Executor اختياريًا. (I62080، b/428721695، b/422215745)
  • تمت إزالة المَعلمة bundle من ActivityPanelEntity.startActivity (I64344، b/430332856، b/430333040)
  • تمت إعادة تسمية "SpatializerConstants.SOURCE_TYPE_BYPASS" إلى "SpatializerConstants.SOURCE_TYPE_DEFAULT". (Ifc7fe، b/422215565)
  • تمت إضافة ثابت واحد (SpatialSoundPool.PLAY_FAILED). (Ifc7fe، b/422215565)
  • تمت إضافة وسيطات تلقائية إلى دوال SpatialSoundPool.play. (Ifc7fe، b/422215565)
  • تمت إزالة القيمة المعروضة من دوال الضبط في SpatialAudioTrackBuilder. (Ifc7fe، b/422215565)
  • تغييرات SurfaceEntity
    • تمت إعادة تسمية "Shape" من قِبل "SurfaceEntity.CanvasShape"
    • تمت إعادة تسمية "Hemisphere" من قِبل "SurfaceEntity.CanvasShape.Vr180Hemisphere"
    • تمت إعادة تسمية "Sphere" من قِبل "SurfaceEntity.CanvasShape.Vr360Sphere"
    • تمت إعادة تسمية "RectangleFeather" من قِبل "SurfaceEntity.EdgeFeatheringParams.SmoothFeather"
    • تمت إعادة تسمية "NoFeathering" من قِبل "SurfaceEntity.EdgeFeathingParams.SolidEdge"
    • تمت إعادة تسمية "SurfaceProtection" من قِبل "SurfaceEntity.ContentSecurityLevel"
    • تمت إضافة بادئة SURFACE_PROTECTION_ من قِبل SurfaceEntity.ContentSecurityLevel.{values}.
    • تمت إضافة بادئة SUPER_SAMPLING_ من قِبل SurfaceEntity.SuperSampling.{$values}
    • تمت إضافة بادئة STEREO_MODE_ من قِبل "SurfaceEntity.StereoMode.{values}"
    • تمت إعادة تسمية SurfaceEntity.ContentColorMetadata.maxCLL إلى maxContentLightLevel (I7eb5f، b/422216050، b/427529950)
  • تمت إعادة تسمية launchActivity إلى startActivity (I7db90، b/430332856)
  • تمت إزالة جهة الاتصال "Scene.activitySpaceRoot". يمكنك استخدام Scene.activitySpace كبديل. (I05ee8، b/378706624، b/422215745)
  • تمت إعادة تسمية configureBundleForFullSpaceModeLaunch وconfigureBundleForFullSpaceModeLaunchWithEnvironmentInherited إلى createBundleForFullSpaceModeLaunch وcreateBundleForFullSpaceModeLaunchWithEnvironmentInherited على التوالي، وتم نقلهما إلى ملف LaunchUtils.kt كطريقتَين من المستوى الأعلى، وتم استخدام Session كمَعلمة أولى (I64a2c، b/437186050)
  • تعرض دالة التصنيع GroupEntity الآن نوع GroupEntity بدلاً من الكيان. (I66042)

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

  • يتم عرض IllegalStateException عند استخدام مثيل كيان بعد التخلص منه. (I90990، b/427314036، b/432063442)

الإصدار ‎1.0.0-alpha06

‫13 أغسطس 2025

تم إصدار "androidx.xr.scenecore:scenecore:1.0.0-alpha06" و"androidx.xr.scenecore:scenecore-guava:1.0.0-alpha06" و"androidx.xr.scenecore:scenecore-testing:1.0.0-alpha06". يتضمّن الإصدار 1.0.0-alpha06 هذه التعديلات.

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

  • إزالة القيود عن واجهتَي برمجة التطبيقات BaseEntity وBaseScenePose في "SceneCore" (88c0ff6)

الإصدار ‎1.0.0-alpha05

‫30 يوليو 2025

تم إصدار "androidx.xr.scenecore:scenecore-guava:1.0.0-alpha05" و"androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05" و"androidx.xr.scenecore:scenecore:1.0.0-alpha05". يتضمّن الإصدار 1.0.0-alpha05 هذه التعديلات.

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

  • تمت إضافة واجهة برمجة التطبيقات Perceived Resolution API إلى "كيانات اللوحة" وSurfaceEntities. (I118f6)
  • PerceivedResolution تمت إضافة طرق رد الاتصال إلى Scene.kt لمراقبة درجة الدقة المتصوّرة للّوحة الرئيسية للنشاط في HSM. (I58084)
  • SurfaceEntity - تمت إضافة دعم للتطبيق لطلب أخذ عينات فائقة في وقت الإنشاء. يسمح هذا للتطبيقات باستخدام فلتر أخذ العينات الفائق لمكافحة التعرج. (I06913)
  • تمت إضافة موقع واحد (recommendedContentBoxInFullSpace) إلى ActivitySpace. وتعرض مربّعًا مقترَحًا لوضع المحتوى فيه عند استخدام وضع "المساحة الكاملة". (I4cd6f)
  • تم توفير دالة إنشائية مثقلة لمعدِّل قابل للنقل يسمح بالتثبيت. (Ic0c70)

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

تم إجراء تغييرات شاملة على واجهة برمجة التطبيقات في SceneCore لهذا الإصدار. تمت إعادة تسمية العديد من الفئات و/أو نقلها إلى وحدات مختلفة، وتم استبدال معظم طرق getter/setter بسمات Kotlin. على الرغم من أنّنا نتوقّع حدوث تغييرات جذرية في واجهة برمجة التطبيقات في المستقبل إلى حين طرح أول إصدار تجريبي، لن تكون هذه التغييرات مزعجة أو كثيرة.

  • تمت إعادة تسمية و/أو نقل الفئات والواجهات التالية: androidx.xr.scenecore.PixelDimensions إلى androidx.xr.runtime.math.IntSize2d، وandroidx.xr.scenecore.Dimensions إلى androidx.xr.runtime.math.FloatSize3d، وandroidx.xr.scenecore.ActivityPose إلى ScenePose، وandroidx.xr.scenecore.ContentlessEntity إلى GroupEntity، وandroidx.xr.scenecore.PlaneType إلى PlaneOrientation، وandroidx.xr.scenecore.PlaneSemantic إلى PlaneSemanticType. (Ifd405)(I3b622) (If534d)
  • تم جعل عدد من طرق الضبط لسمات Scene خاصة، ولم يكن من المفترض أن يتم تعديلها من قِبل عملاء SceneCore: activitySpace وactivitySpaceRoot وmainPanelEntity وperceptionSpace وspatialCapabilities وspatialEnvironment وspatialUser. (I2f506)
  • في Entity: تم تغيير السمتَين التاليتَين: get/setParent() وsetContentDescription. تم إيقاف السمة Entity.is/setHidden() نهائيًا، لذا يُرجى استخدام السمة Entity.is/setEnabled بدلاً منها. (Ibc4c6)
  • تمت إزالة الفئة androidx.xr.scenecore.BasePanelEntity، لذا يُرجى استخدام PanelEntity مباشرةً بدلاً منها. تم استبدال دوال getter وsetter لـ "PanelEntity" بسمات. تم تغيير السمة "PanelEntity.size" من "Float3dSize" إلى "Float2dSize". تمت إزالة الطريقة المتوقفة نهائيًا androidx.xr.scenecore.PanelEntity.getPixelDimensions، لذا يُرجى استخدام getSizeInPixels بدلاً منها. (Icc174)
  • تم استبدال androidx.xr.scenecore.OnSpaceUpdatedListener بـ Runnable. (I19308)
  • تم استبدال SpatialUser.getCameraViews() بموقع إلكتروني. (Ib0cc5) بالنسبة إلى ExrImage وGltfModel:، تم تغيير طُرق create لتصبح دوال تعليق، وتم تعديل مَعلمات الإنشاء لقبول Uri أو Path بدلاً من String. (Id8883) (I0d247)، (I25706)
  • تم نقل SpatialEnvironment.requestFullSpaceMode وSpatialEnvironment.requestHomeSpaceMode إلى Scene، على سبيل المثال، استخدِم session.scene.requestFullSpaceMode() بدلاً من session.scene.spatialEnvironment.requestFullSpaceMode(). يحتوي addOnPassthroughOpacityChangedListener وaddOnSpatialEnvironmentChangedListener الآن على عمليات تجاوز تقبل المنفّذين الاختياريين. (I12fe0) (I6b21e)
  • تمت إزالة الطرق التالية المتوقفة نهائيًا في SpatialEnvironment: togglePassthrough وsetPassthrough وsetPassthroughOpacity وgetPassthroughMode وgetPassthroughOpacity وsetSkybox وsetGeometry. تمت أيضًا إزالة الفئة المتوقفة نهائيًا SpatialEnvironment.PassthroughMode (I927bd) (I927bd) (I927bd)
  • تم استبدال دوال getter وsetter التالية في SpatialEnvironment بسمات Kotlin: ‏getCurrentPassthroughOpacity() وget/setPassthroughOpacityPreference() وget/setSpatialEnvironmentPreference() وisSpatialEnvironmentPreferenceActive() (I33a7b) (Ie06e2) (Ie06e2)
  • تم تغيير نوع "SpatialEnvironmentPreference.preferredPassthroughOpacity" من Float? إلى Float. لم يعُد يقبل القيم الفارغة. بدلاً من ذلك، يتم استخدام SpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCE للإشارة إلى عدم وجود تفضيل للتعتيم. (I40107)
  • تم تعديل المَعلمة windowBoundsPx إلى pixelDimensions وتغيير نوعها من Rect إلى IntSize2d في طريقة الإنشاء. (I1926e)
  • أصبح دالة الإنشاء SpatialEnvironment داخلية الآن (I75a51)
  • تم استبدال الفئة SpatialPointerIconNone والفئات SpatialPointerIconCircle بالعناصر المصاحبة SpatialPointerIcon.NONE وSpatialPointerIcon.CIRCLE (I416d2)
  • لم يعُد الحقل "SpatialPointerIcon" في الجدول "SpatialPointerComponent" يقبل القيم الفارغة. استخدِم SpatialPointerIcon.DEFAULT بدلاً من القيمة الفارغة للإشارة إلى أنّه يجب استخدام رمز المؤشر التلقائي للنظام. (I416d2)
  • تم استبدال androidx.xr.scenecore.AnchorEntity.getState() بسمة للقراءة فقط. تمت إعادة تسمية المَعلمات في طريقة AnchorEntity.create() لمزيد من الوضوح. في طرق AnchorEntity لضبط المستمعين وإضافتهم، تم نقل المستمع إلى الوسيطة النهائية لتفعيل دوال lambda اللاحقة. تم استبدال androidx.xr.scenecore.OnStateChangedListener لـ AnchorEntity بـ Consumer<AnchorEntity.State>. (I472e0)
  • أصبح "GltfModelEntity.getAnimationState()" الآن موقعًا. (I10b29)
  • تم استبدال ActivitySpace.getBounds() بموقع إلكتروني. تمت إعادة تسمية "ActivitySpace.addBoundsChangedListener" إلى "ActivitySpace.addOnBoundsChangedListener". تم استبدال ActivitySpace.setOnSpaceUpdatedListener بطريقتَي الإضافة والإزالة. (I4c956)
  • تمت إعادة تسمية "AnchorPlacement: planeTypeFilter" إلى "anchorablePlaneOrientations"، و"planeSemanticFilter" إلى "anchorablePlaneSemanticTypes". إضافة MovableComponent إلى AnchorEntity أو ActivitySpace ستعرض القيمة false، وتمت إعادة تسمية MoveListener إلى EntityMoveListener shouldDisposeParentAnchor وإعادة تسمية disposeParentOnReAnchor systemMovable وإزالته من الدالة create لصالح creeateCustomMovable وcreateSystemMovable وcreateAnchorable (If11c4)
  • تمت إزالة SurfaceEntity.featherRadiusX/Y وإضافة مفهوم فئة EdgeFeatheringParams. (Ic78fc)
  • تم استبدال طريقة PanelEntity.enablePanelDepthTest() بسمة panelClippingConfig. اضبط Scene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true) لتفعيل اختبار العمق أو اضبطه على PanelClippingConfig(isDepthTestEnabled = false) لإيقافه. (I0cbe0)
  • أصبح نوع Scene.mainPanelEntity الآن MainPanelEntity بدلاً من PanelEntity (I7125a)
  • تمت إعادة تسمية طريقة setFullSpaceMode في Scene إلى configureBundleForFullSpaceModeLaunch وطريقة setFullSpaceModeWithEnvironmentInherited إلى configureBundleForFullSpaceModeLaunchWithEnvironmentInherited. (I0cbe0) (I0cbe0)
  • تمت إعادة تسمية قيم SpatialVisibility UNKNOWN وOUTSIDE_FOV وPARTIALLY_WITHIN_FOV وWITHIN_FOV إلى SPATIAL_VISIBILITY_UNKNOWN وSPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW وSPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW وSPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW على التوالي (Ie7e8c)
  • تم استبدال فئة SpatialVisibility بعنصر عام يتضمّن قيم Int ثابتة. ‫setSpatialVisibilityChangedListener يقبل الآن Consumer<Int> بدلاً من Consumer<SpatialVisibility> (Ie7e8c)
  • تمت إعادة تسمية الثوابت PointerCaptureComponent ونقلها إلى الكائن PointerCaptureComponent.PointerCaptureState (I9c7ac)
  • تم استبدال PointerCaptureComponents' StateListener بـ Consumer<Int>. (I9c7ac)
  • تم استبدال InputEventListener بـ Consumer<InputEvent> (I9c7ac)
  • تم نقل setPreferredAspectRatio من فئة Scene إلى عنصر SpatialWindow، ويتم استخدام Session كمَعلمة أولى. (I7b717)
  • تم استبدال "Entity.setHidden()" بـ "Entity.setEnabled()" و"Entity.isHidden()" بـ "Entity.isEnabled()". ‫setHidden(false) تساوي setEnabled(true) وisHidden() == !isEnabled(). (Icf0de)
  • تم تغيير نوع "Entity.contentDescription" من سلسلة إلى CharSequence. (Ie59be)
  • تُظهر الآن الدالتان Session.create وSession.configure الخطأ SecurityException عندما لا يتم منح أذونات كافية بدلاً من عرض SessionCreatePermissionsNotGranted أو SessionConfigurePermissionsNotGranted. (I7c488)
  • يتطلّب "ResizableComponent.create" الآن استبدال "Consumer<ResizeEvent> ResizeEventListener" بـ "Consumer<ResizeEvent> ResizableComponent.size"، وتمت إعادة تسميته إلى "ResizableComponent.affordanceSize ResizableComponent.minimumSize"، ثم إلى "ResizableComponent.minimumEntitySize ResizableComponent.maximumSize"، ثم إلى "ResizableComponent.maximumEntitySize"، وتمت إعادة تسمية "ResizableComponent.autoHideContent" إلى "ResizableComponent.shouldAutoHideContent"، وتمت إعادة تسمية "ResizableComponent.forceShowResizeOverlay" إلى "ResizableComponent.shouldAlwaysShowOverlay" (I97a2d)
  • تم خفض minSDK إلى 24 في androidx.xr.scenecore وandroidx.xr.compose. لا تزال حزم XR تتطلّب المستوى 34 من واجهة برمجة التطبيقات في وقت التشغيل. (I17224)
  • تمت إزالة قيود RequiresApi(34) على جميع حزم Jetpack XR. كان هذا القيد متكررًا لأنّ Jetpack XR لا يتوفّر حاليًا إلا على الأجهزة التي تعمل بالمستوى 34 من واجهة برمجة التطبيقات أو الإصدارات الأحدث. (Iae0f8)
  • SceneCore artifact (xr:scenecore:scenecore) الرئيسي سيحتوي فقط على واجهات برمجة تطبيقات غير متزامنة بنمط Kotlin. يمكن لمطوّري Java الاعتماد على مكتبة xr:scenecore:scenecore-guava للوصول إلى واجهات برمجة التطبيقات المتوافقة. (If221b)
  • تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 من KGP أو إصدار أحدث (Idb6b5)
  • تستخدم هذه المكتبة الآن تعليقات JSpecify التوضيحية للقيمة الفارغة، وهي من نوع الاستخدام. على مطوّري Kotlin استخدام وسيطة برنامج التجميع التالية لفرض الاستخدام الصحيح: -Xjspecify-annotations=strict (هذا هو الإعداد التلقائي بدءًا من الإصدار 2.1.0 من برنامج تجميع Kotlin) (Ia8420)
  • تم استبدال جميع الطرق غير المتزامنة التي تعرض ListenableFuture بدوال تعليق Kotlin. على مطوّري Java الذين يريدون استخدام الطرق غير المتزامنة المستندة إلى ListenableFuture بدلاً من دوال التعليق في Kotlin استخدام دوال الإضافة في :xr:scenecore-scenecore-guava. على سبيل المثال، يحتوي GuavaExrImage على دوال ExrImage غير المتزامنة المكافئة لـ Guava، ويحتوي GuavaScenePose على دوال ScenePose غير المتزامنة المكافئة لـ Guava، ويحتوي GuavaGltfModel على دوال Guava-equivalent GltfModel غير المتزامنة، وما إلى ذلك. (If7283) (I0af60) (If7283) (Ia8515) (I4efdf) (I54bbf) (I3467a) (I82a33)

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

  • تم تعديل قاعدة Jetpack XR Scenecore ProGuard لمنع AbstractMethodError للعملاء الذين تم تصغير حجمهم. (I91a01)
  • إصلاحات إضافية لإتاحة تصغير Proguard في Jetpack XR SceneCore (I4f47e)
  • تم إصلاح خطأ حيث قد يتسبب InteractableComponent في حدوث عطل إذا كان hitPosition في HitInfo الخاص بـ InputEvent قد يتعطل إذا كان hitPosition الذي تم إرجاعه من النظام فارغًا (I7a695)
  • تمت إعادة تسمية قيم Config *Mode لتعكس سلوكها. (I6d247)
  • تم إصلاح المشاكل المتعلّقة بمجال الرؤية وHitTest في تطبيق الاختبار SceneCore. (I2c51e)
  • تم إصلاح خطأ في SpatialCapabilities.hasCapability() حيث كان يعرض القيمة "صحيح" إذا كانت أي من الإمكانات التي تم تمريرها باستخدام عامل التشغيل الثنائي OR صحيحة بدلاً من عرض القيمة "صحيح" فقط إذا كانت جميعها صحيحة. (I2cd40)
  • تم تعديل SurfaceEntity.StereoMode.TOP_BOTTOM لتكون الخريطة العلوية للعين اليسرى والخريطة السفلية للعين اليمنى. (I4ae68)

الإصدار ‎1.0.0-alpha04

‫7 مايو 2025

تم طرح androidx.xr.scenecore:scenecore:1.0.0-alpha04 وandroidx.xr.scenecore:scenecore-testing:1.0.0-alpha04. يتضمّن الإصدار 1.0.0-alpha04 هذه التعديلات.

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

  • ستعمل ميزة "الرجوع" الآن على عناصر اللوحة التي لا تتضمّن أنشطة مضمّنة. لكي تعمل ميزة "التعامل مع زر الرجوع"، عليك تحديد android:enableOnBackInvokedCallback= "true" في ملف بيان Android.
  • يتيح StereoSurfaceEntity الآن تشغيل فيديوهات MV-HEVC من خلال قيمتَي StereoMode جديدتَين: MULTIVIEW_LEFT_PRIMARY وMULTIVIEW_RIGHT_PRIMARY.
  • تعرض السمتان PanelEntity.setSize وPanelEntity.getSize الآن الأحجام في المساحة الرئيسية.
  • تتضمّن الآن الدوال Entity.setPose وEntity.getPose وEntity.setScale وEntity.getScale وEntity.setAlpha وEntity.getAlpha مَعلمة جديدة relativeTo تتيح الحصول على القيم أو ضبطها بالنسبة إلى المساحات المختلفة. القيم المسموح بها هي Parent وActivity وReal World spaces، والقيمة التلقائية لهذه المَعلمة هي Parent.
  • تمت إضافة طرق إضافة Spatial Visibility Callback إلى SessionExt.kt لمراقبة متى ينتقل محتوى المشهد داخل مجال رؤية المستخدم أو خارجه.
  • تمت إضافة setPointSourceParams إلى SpatialAudioTrack، ما يسمح بتعديل المَعلمات بعد إنشاء المسار.
  • تمت إضافة فئة جديدة باسم Scene، مع مراجع إلى واجهات برمجة تطبيقات Scenecore. ستكون Scene متاحة كسمة إضافة في Session. تم نقل الدوال داخل SessionExt إلى Scene، لذا يجب تعديل عمليات الاستيراد، على سبيل المثال، SessionExt.getScene(session).مباراة بين "addSpatialCapababilitiesChangedListener" و"SessionExt.addSpatialCapabilitiesChangedListener".
  • تمت إضافة "ActivityPose.hitTestAsync"، ما يتيح استخدام hitTest ضد المحتوى الافتراضي.
  • تمت إضافة نوع مكوّن جديد SpatialPointerComponent، ما يسمح للعملاء بتحديد الرمز المعروض للمؤشر أو إيقاف الرمز. يمكن حاليًا إرفاق هذا المكوّن بـ PanelEntity مثيل فقط.
  • نقدّم لك فئة جديدة من PanelEntity، والتي تأخذ أبعاد اللوحة إما بالمتر أو بالبكسل. تمت إزالة دالة الإنشاء القديمة PanelEntity التي تقبل مَعلمتَين من نوع Dimension للوحة.

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

  • تمت إزالة قيود RequiresApi(34) على جميع حزم Jetpack XR. كان هذا القيد متكررًا لأنّ Jetpack XR لا يتوفّر حاليًا إلا على الأجهزة التي تعمل بالمستوى 34 من واجهة برمجة التطبيقات أو الإصدارات الأحدث. (Iae0f8)
  • تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 من KGP أو إصدار أحدث (Idb6b5)
  • تمت إزالة صف واحد (PermissionHelper).
  • تم إيقاف PanelEntity.getPixelDensity نهائيًا.
  • تمت إزالة PanelEntity.setPixelDimensions وPanelEntity.getPixelDimension واستبدالهما بـ setSizeInPixels وgetSizeInPixels.
  • تمت إزالة Entity.getActivitySpaceAlpha. يمكن استبدالها بـ Entity.getAlpha(Space.Activity).
  • تمت إزالة Entity.getWorldSpaceScale. يمكن استبدالها بـ Entity.getScale(Space.REAL\_WORLD).
  • تم حذف فئة Session في SceneCore واستبدالها بـ Session في XR Runtime.
  • تم تغيير اسم "StereoSurfaceEntity" إلى "SurfaceEntity".
  • تمت إزالة Entity.setSize وEntity.getSize، وتمت إضافة الطرق نفسها إلى PanelEntity.
  • تم تغيير اسم "PointSourceAttributes" إلى "PointSourceParams".
  • تم تغيير اسم "SpatializerConstants.SOURCE\_TYPE\_BYPASS" إلى "SpatializerConstants.SOURCE\_TYPE\_DEFAULT".
  • تم تعديل الكيان "PointSourceParams" من إذن وصول علني إلى إذن وصول داخلي.
  • يتطلّب تطبيق AnchorEntity.create الآن ضبط PlaneTrackingMode في Session.configure().
  • تتطلّب واجهات برمجة التطبيقات في SpatialUser الآن ضبط HeadTrackingMode في Session.configure().
  • عندما لا يكون ResizableComponent مرفقًا، سيتم عرض سجلّ على مستوى INFO بدلاً من سجلّ على مستوى ERROR.
  • أصبحت فئة Fov الآن فئة Kotlin عادية.
  • قسِّم Entity.kt لوضع كل نوع من أنواع العناصر المحددة في ملف خاص به.
  • عند إنشاء PanelEntity جديد، سيتم نقل معظم "طرق العرض" إلى FrameLayout. يسهّل ذلك استخدام LayoutInspector مع "اللوحات المكانية".
  • تم الآن تسجيل مثيل XrExtensions المستخدَم حاليًا في المنصة، بأفضل طريقة ممكنة، للمساعدة في تصحيح أخطاء التطبيق.

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

  • تمت إضافة إصلاح لمنع حدوث عطل عند نقل PanelEntity مع MovableComponent وAnchorPlacement
  • تم إصلاح مشكلة كانت تؤدي إلى توفير ResizableComponent أحجام قديمة في دالة الاستدعاء onResizeStart.
  • تم إصلاح عطل عند استدعاء dispose() في JxrPlatformAdapterAxr عدة مرات.

الإصدار ‎1.0.0-alpha03

‫26 فبراير 2025

تم طرح androidx.xr.scenecore:scenecore:1.0.0-alpha03 وandroidx.xr.scenecore:scenecore-testing:1.0.0-alpha03. يتضمّن الإصدار ‎1.0.0-alpha03 هذه التعديلات.

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

  • أصبح من الممكن الآن تصغير حجم رمز Jetpack XR باستخدام Proguard

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

  • إصلاحات إضافية لإتاحة تصغير Proguard في Jetpack XR SceneCore ‏ (I4f47e)
  • تم تعديل قاعدة Jetpack XR Scenecore ProGuard لمنع AbstractMethodError للعملاء الذين تم تصغير حجمهم. (I91a01)

الإصدار ‎1.0.0-alpha02

‫12 فبراير 2025

تم طرح androidx.xr.scenecore:scenecore:1.0.0-alpha02 وandroidx.xr.scenecore:scenecore-testing:1.0.0-alpha02. يتضمّن الإصدار ‎1.0.0-alpha02 هذه التعديلات.

تغيير قادم قد يؤدي إلى عطل في التطبيقات التي تم إنشاؤها قبل الإصدار 1.0.0-alpha02

  • تم نقل طرق المصنع من فئة Session إلى طريقة مصاحبة لكل نوع من الأنواع التالية:
    • تم حذف "Session.createActivityPanelEntity(Dimensions, String, Activity, Pose)" واستبداله بـ "ActivityPanelEntity.create(Session, Dimensions, String, Pose)"
    • تم حذف "Session.createAnchorEntity(Anchor)" واستبداله بـ "AnchorEntity.create(Session, Anchor)"
    • تم حذف "Session.createAnchorEntity(Dimensions, Int, Int, Duration)" واستبداله بـ "AnchorEntity.create(Session, Dimensions, Int, Int, Duration)"
    • تم حذف "Session.createEntity(String, Pose)" واستبداله بـ "ContentlessEntity.create(Session, String, Pose)"
    • تم حذف "Session.createExrImageResource(String)" واستبداله بـ "ExrImage.create(Session, String)"
    • تم حذف "Session.createGltfEntity(GltfModel, Pose)" واستبداله بـ "GltfModelEntity.create(Session, GltfModel, Pose)"
    • تم حذف "Session.createGltfModelResource(String)" واستبداله بـ "GltfModel.create(Session, String)"
    • تم حذف "Session.createInteractableComponent(Executor, InputEventListener)" واستبداله بـ "InteractableComponent.create(Session, Executor, InputEventListener)"
    • تم حذف "Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean)" واستبداله بـ "MovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean)"
    • تم حذف "Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose)" واستبداله بـ "PanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose)"
    • تم حذف "Session.createResizableComponent(Dimensions, Dimensions)" واستبداله بـ "ResizableComponent.create(Session, Dimensions, Dimensions)"
    • تم حذف "Session.createStereoSurfaceEntity(Int, Dimensions, Pose)" واستبداله بـ "StereoSurface.create(Session, Int, Dimensions, Pose)"
  • تمت إزالة الطرق التالية التي تم إيقافها نهائيًا:
    • تم حذف Session.canEmbedActivityPanel(Activity). يمكنك استخدام getSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY) كبديل.
    • تم حذف Session.hasSpatialCapability(Int). وقد تم استبدالها لصالح استخدام getSpatialCapabilities().hasCapability() كطريقة أكثر تقسيمًا للتحقّق من توفّر الإمكانات المكانية لأنّ getSpatialCapabilities() تعرض عنصر SpatialCapabilities.
    • تم حذف "Session.requestFullSpaceMode()" واستبداله بـ "SpatialEnvironment.requestFullSpaceMode()"
    • تم حذف "Session.requestHomeSpaceMode()" واستبداله بـ "SpatialEnvironment.requestHomeSpaceMode()"
  • تم نقل Session.setFullSpaceMode(Bundle) وSession.setFullSpaceModeWithEnvironmentInherited(Bundle) إلى دوال الإضافات. يجب أن تضيف ملفات المطوّر عمليات الاستيراد الجديدة للوصول إلى:
    • import androidx.xr.scenecore.setFullSpaceMode
    • import androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
  • تم نقل Session.setPreferredAspectRatio(Activity, Float) إلى دالة إضافة. يجب أن تضيف ملفات المطوّرين عملية الاستيراد الجديدة للوصول إلى:
    • import androidx.xr.scenecore.setPreferredAspectRatio
  • تم نقل Session.getEntitiesOfType(Class<out T>) وSession.getEntityForRtEntity(RtEntity) إلى دوال الإضافات. يجب أن تضيف ملفات المطوّر عمليات الاستيراد الجديدة للوصول إلى:
    • import androidx.xr.scenecore.getEntitiesOfType
    • import androidx.xr.scenecore.getEntityForRtEntity
  • تم حذف Session.unpersistAnchor(Anchor).
  • تم حذف Session.createPersistedAnchorEntity(UUID).

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

  • قد لا يتم تطبيق PanelEntity.setCornerRadius() وActivityPanelEntity.setCornerRadius() إلا بعد نقل اللوحة في المرة التالية، ويمكن التخفيف من حدة ذلك عن طريق نقل اللوحة إلى موضعها الحالي
  • عند استدعاء BoundsChanged في ActivitySpace، قد لا يتم تعديل بعض ActivityPose بشكل صحيح. سيتم تعديلها في المكالمة التالية مع "OnSpaceUpdated" في ‎ActivitySpace

التغييرات التي قد تؤدي إلى أعطال والتغييرات السلوكية

  • سيكون لكل من "PanelEntity" و"ActivityPanelEntity" نصف قطر زاوية تلقائي يبلغ 32 بكسل مستقل الكثافة أو أقل إذا كان عرض اللوحة أو ارتفاعها أقل من 32 بكسل مستقل الكثافة

واجهات برمجة تطبيقات وإمكانات جديدة

  • يقدّم هذا الإصدار StereoSurface.CanvasShape، الذي يسمح بإنشاء لوحات عرض Spherical وHemispherical لعرض الوسائط الغامرة.
  • تقبل دالة StereoSurfaceEntity.create() الآن مَعلمة CanvasShape. (يتم تجاهل هذه المَعلمة حاليًا، ولكن سيتم استخدامها في إصدار مستقبلي)
  • لم تعُد الدالة StereoSurfaceEntity.create() تقبل المَعلمة Dimensions. يجب أن تتحكّم التطبيقات في حجم اللوحة من خلال ضبط السمة CanvasShape
  • يحتوي "StereoSurfaceEntity" على عضو "CanvasShape" يمكن ضبطه ديناميكيًا.
  • أصبحت السمة StereoSurfaceEntity.dimensions للقراءة فقط، ويجب أن تضبط التطبيقات السمة CanvasShape لتغيير الأبعاد.
  • يسمح StereoSurfaceEntity الآن بإعادة ضبط StereoMode بعد الإنشاء.

التغييرات الأخرى

  • تم خفض الحد الأدنى لإصدار حزمة تطوير البرامج (SDK) في وقت التجميع إلى 24. تتطلّب جميع واجهات برمجة تطبيقات Jetpack XR المستوى 34 من واجهة برمجة التطبيقات في وقت التشغيل.
  • لم يعُد Session factory في "SceneCore" (Session.create) يطلق نية للحصول على إذن "SCENE_UNDERSTANDING". بدلاً من ذلك، يجب أن يطلب تطبيق العميل الأذونات صراحةً من المستخدم قبل محاولة إنشاء نقاط الارتكاز. سيتعذّر إنشاء علامة ارتساء إذا لم يمنح المستخدم الإذن.

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

  • تم إصلاح getActivitySpacePose() لمراعاة مقياس ActivitySpace من خلال عرض قيم الترجمة بالأمتار ذات المقياس بدلاً من عرض الأمتار غير ذات المقياس دائمًا. يستخدم transformPoseTo الآن أيضًا الوحدات الصحيحة لحساب تغييرات الإحداثيات عندما يكون ActivitySpace جزءًا من المصدر أو الوجهة.
  • سيتم الآن ضبط skybox على skybox أسود بالكامل عندما يتم تمرير إعدادات skybox فارغة باستخدام setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom)). للعودة إلى الإعدادات التلقائية للنظام في ما يتعلّق بالهندسة وصندوق السماء، استخدِم setSpatialEnvironmentPreference(null).

الإصدار ‎1.0.0-alpha01

‫12 ديسمبر 2024

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

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

  • ‫SpatialEnvironment: يمكنك إنشاء تجارب غامرة بالكامل باستخدام صورة صندوق السماء و/أو هندسة النماذج الثلاثية الأبعاد كخلفية لمشهد الواقع الممتد في بيئتك. أو يمكنك تفعيل ميزة "الرؤية المحيطية" (Passthrough) لدمج المشهد الافتراضي مع بيئة المستخدم في العالم الحقيقي.
  • ‫PanelEntity: يمكنك إضافة محتوى ثنائي الأبعاد إلى المشاهد الثلاثية الأبعاد من خلال تضمين تنسيقات Android العادية والأنشطة في لوحات مكانية يمكن أن تطفو أو يتم تثبيتها على أسطح في العالم الحقيقي.
  • GltfModelEntity: تتيح لك وضع النماذج الثلاثية الأبعاد وتحريكها والتفاعل معها في المشهد. تتيح SceneCore تنسيق ملفات glTF لتسهيل التكامل مع النماذج الحالية.
  • ‫SpatialAudio: تتيح لك إضافة مصادر صوتية محيطية ونقطية إلى المشهد الثلاثي الأبعاد للحصول على صوت مكاني غامر بالكامل.
  • ‫StereoSurfaceEntity: تتيح SceneCore توجيه المحتوى المعروض على Android Surface إلى العين اليسرى أو اليمنى. ويمكن استخدام هذه الميزة لعرض المحتوى المجسّم بتنسيق جنبًا إلى جنب أو من الأعلى إلى الأسفل، مثل الصور المجسّمة أو الفيديوهات الثلاثية الأبعاد أو واجهات المستخدم الأخرى التي يتم عرضها ديناميكيًا. يجب أن تستخدم التطبيقات MediaPlayer أو ExoPlayer لفك ترميز الفيديو.
  • نظام المكوّنات: يوفّر SceneCore نظام مكوّنات قويًا ومرنًا لإضافة إمكانات إلى محتوى الواقع الممتد، بما في ذلك إمكانات تتيح للمستخدمين نقل النماذج واللوحات وتغيير حجمها والتفاعل معها.
  • التثبيت: عند تفعيل ميزة "الرؤية المحيطية"، يمكنك تثبيت اللوحات والنماذج على الأسطح الفعلية، ما يتيح للمستخدمين دمج المحتوى الافتراضي بسلاسة في بيئتهم الواقعية.
  • وضعية المستخدم: يمكنك الوصول إلى الموقع الجغرافي للمستخدم في المشهد الافتراضي لتوجيه المحتوى حول موضع المستخدم.
  • ‫SpatialCapabilities: يمكنك إنشاء تطبيقات متوافقة بالكامل مع جميع الأجهزة تستفيد من الإمكانات المكانية عند توفّرها، مثل تحديد موضع محتوى واجهة المستخدم بشكل ثلاثي الأبعاد. بالإضافة إلى ذلك، يمكن لتطبيقك مراقبة التغييرات في الإمكانات أثناء تشغيله، لتعديل التجربة استنادًا إلى كيفية استخدام المستخدم لجهاز Android XR.

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

  • يتطلّب استخدام Jetpack SceneCore حاليًا إصدار minSDK‏ 30. كحل بديل، يمكنك إضافة إدخال البيان التالي <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> لتتمكّن من إنشاء التطبيق وتشغيله باستخدام الإصدار 23 من minSDK.
  • يمكن أن تصبح الجلسة غير صالحة في حالات مختلفة تؤدي إلى إعادة إنشاء النشاط تلقائيًا، بما في ذلك تغيير حجم اللوحة الرئيسية وتوصيل الأجهزة الملحقة والتبديل بين الوضعَين الفاتح والداكن. إذا واجهت مشاكل في إلغاء صلاحية الجلسة، تشمل الحلول البديلة جعل اللوحة الرئيسية غير قابلة لتغيير الحجم، أو استخدام كيان لوحة ديناميكي، أو إيقاف إعادة إنشاء النشاط لتغييرات معيّنة في الإعدادات، أو إيقاف تغييرات مظهر الوضع الفاتح/الداكن.
  • لا تتوفّر المكوّنات القابلة للنقل وتغيير الحجم في GltfEntity.
  • ‫Entity.getSize()‎ غير متاحة في GltfEntity.
  • يجب أن تطلب تطبيقات Jetpack XR إذن android.permission.SCENE_UNDERSTANDING في ملف AndroidManifest.
  • لا يمكن إنشاء جلسة إلا على جهاز Android XR. في الوقت الحالي، إذا أنشأت جلسة وحاولت استخدامها على جهاز Android XR غير ذلك، فستتلقّى استثناء RuntimeException.
  • لا يؤدي ضبط skybox على قيمة فارغة من خلال `SpatialEnvironment.setSpatialEnvironmentPreference() إلى ظهور skybox أسود ثابت كما هو موضّح. وقد يؤدي ذلك إلى ظهور الخلفية الافتراضية للنظام أو عدم تغيير الخلفية الحالية.
  • على عملاء SceneCore إضافة implementation(“com.google.guava:listenablefuture-1.0”) إلى إعدادات Gradle لتبعيات تطبيقاتهم. في إصدار مستقبلي، ستتضمّن scenecore هذه المكتبة كأحد تبعيات api، وبالتالي لن يحتاج العملاء إلى الإفصاح عنها بشكل صريح.
  • يتضمّن SceneCore عن طريق الخطأ com.google.guava:guava-31.1-android وcom.google.protobuf:protobuf-javalite كتبعيات متعدية. إذا أدى ذلك إلى ظهور أخطاء في الفئات المكرّرة في الإصدار، يمكن استبعاد هاتين التبعيتين بأمان.
  • إذا كان تطبيقك يستخدم SceneCore ويفعّل ProGuard، سيتعطّل عند إنشاء جلسة. كحل بديل، يمكنك إيقاف ProGuard. يمكنك الاطّلاع على هذا الدليل لمزيد من المعلومات حول كيفية تفعيل ProGuard.