Jetpack SceneCore
| آخر تحديث | الإصدار المستقر | إصدار محتمل | الإصدار التجريبي | الإصدار الأولي |
|---|---|---|---|---|
| 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) - تم نقل ثوابت
PlaneSemanticTypePlaneOrientationفي 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) - تم تعديل ثوابت
SceneCoreTextureSamplerلتسهيل قراءتها، على سبيل المثال، أصبحت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) - تمت إعادة تسمية قيم
SpatialVisibilityUNKNOWN و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) SceneCoreartifact (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.setFullSpaceModeimport 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.getEntitiesOfTypeimport 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.