Jetpack SceneCore
| آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
|---|---|---|---|---|
| 19 نوفمبر 2025 | - | - | - | 1.0.0-alpha09 |
تحديد الاعتماديات
لإضافة اعتمادية على XR SceneCore، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف الاعتماديات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:
رائع
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha09" // Optional dependencies for asynchronous conversions implementation "androidx.xr.scenecore:scenecore-guava:1.0.0-alpha09" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha09" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha09") // Optional dependencies for asynchronous conversions implementation("androidx.xr.scenecore:scenecore-guava:1.0.0-alpha09") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha09") }
لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات البناء.
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
الإصدار 1.0
الإصدار 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من Ints إلى الأنواع الفرعيةPointerCaptureState. (Ic888a) - أصبح
Scene.spatialCapabilitiesالآن من النوعSet<SpatialCapability>بدلاً من حقل Int. تمت إعادة تسمية الثوابتSpatialCapability. (I9c109) - تمت إعادة تسمية أنواع الثوابت
SurfaceEntityوتغييرها من أعداد صحيحة إلى أنواع فرعية منSurfaceEntity. (I419ed) - تمت إعادة تسمية أنواع الثوابت
SpatializerConstantوتغييرها من أعداد صحيحة إلى أنواع فرعية منSpatializerConstant. (Ia0e18) - تمت إعادة تسمية أنواع الثوابت
TextureSamplerوتغييرها من أعداد صحيحة إلى أنواع فرعية منTextureSampler. (I44078) - تم تغيير أنواع الثوابت
SpatialVisibilityمن Ints إلى الأنواع الفرعيةSpatialVisibility. (I70739) - تمت إعادة تسمية أنواع الثوابت
ResizeEvent.ResizeStateوتغييرها من أعداد صحيحة إلى أنواع فرعية منResizeState. (I384d5) - تمت إعادة تسمية أنواع الثوابت
InputEventوتغييرها من Ints إلى أنواع موروثة من النوع المحيط بكل منها. (I82817) - تم تغيير أنواع الثوابت
GltfModelEntity.AnimationStateمن Ints إلى الأنواع الفرعيةAnimationState. (I24f4e) - تمت إعادة تسمية أنواع الثوابت
AlphaModeوتغييرها من أعداد صحيحة إلى أنواع فرعية منAlphaMode. (I27b56) - تم تغيير أنواع الثوابت
Spaceمن أعداد صحيحة إلى أنواع فرعية من المساحة. (I9255b) - تعرِض الدالة
ScenePose.hitTestوالطُرق ذات الصلة الآنnullإذا لم يتم العثور على أي تقاطع، بدلاً منHitTestResultمع قيمة فارغةhitPosition. لم يعُد بإمكانك ضبط قيمةHitTestResult.hitPositionعلى Null. (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على عنصر Entity غير قابل للنقل، مثل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
- تمت إعادة تسمية
SurfaceEntity.CanvasShapeإلىShape - تمت إعادة تسمية
SurfaceEntity.CanvasShape.Vr180HemisphereإلىHemisphere - تمت إعادة تسمية
SurfaceEntity.CanvasShape.Vr360SphereإلىSphere - تمت إعادة تسمية
SurfaceEntity.EdgeFeatheringParams.SmoothFeatherإلىRectangleFeather - تمت إعادة تسمية
SurfaceEntity.EdgeFeathingParams.SolidEdgeإلىNoFeathering - تمت إعادة تسمية
SurfaceEntity.ContentSecurityLevelإلىSurfaceProtection - أضاف
SurfaceEntity.ContentSecurityLevel.{values}البادئةSURFACE_PROTECTION_. - أضاف
SurfaceEntity.SuperSampling.{$values}بادئةSUPER_SAMPLING_ - أضاف
SurfaceEntity.StereoMode.{values}بادئةSTEREO_MODE_ - تمت إعادة تسمية
SurfaceEntity.ContentColorMetadata.maxCLLmaxContentLightLevel(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بدلاً من Entity. (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 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إلغاء حظر واجهات برمجة التطبيقات
SceneCoreوBaseEntityوBaseScenePose(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 هذه التعديلات.
الميزات الجديدة
- تمت إضافة واجهة برمجة التطبيقات "الدقة المدرَكة" إلى "كيانات اللوحة" و
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) - في الكيان: تم تغيير ما يلي إلى سمات:
get/setParent()وsetContentDescription. تم إيقافEntity.is/setHidden()نهائيًا، يُرجى استخدامEntity.is/setEnabledبدلاً من ذلك. (Ibc4c6) - تمت إزالة الفئة
androidx.xr.scenecore.BasePanelEntity، يُرجى استخدامPanelEntityمباشرةً بدلاً منها. تم استبدال دوال الحصول على البيانات وتعيينها لـ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إلى "المشهد"، مثلاً استخدِمsession.scene.requestFullSpaceMode()بدلاً منsession.scene.spatialEnvironment.requestFullSpaceMode(). يتضمّن كل منaddOnPassthroughOpacityChangedListenerوaddOnSpatialEnvironmentChangedListenerالآن عمليات إلغاء تقبل المنفّذين الاختياريين. (I12fe0) (I6b21e) - تمت إزالة طرق
SpatialEnvironmentالمتوقّفة نهائيًا التالية:togglePassthroughوsetPassthroughوsetPassthroughOpacityوgetPassthroughModeوgetPassthroughOpacityوsetSkyboxوsetGeometry. تمت أيضًا إزالة الفئة المتوقّفة نهائيًاSpatialEnvironment.PassthroughMode(I927bd) (I927bd) (I927bd) - تم استبدال دوال الجلب والضبط التالية
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لإعداد المستمعين وإضافتهم، تم نقل المستمع إلى الوسيطة النهائية لتفعيل lambdas اللاحقة. تم استبدال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) - تمت إعادة تسمية القيم UNKNOWN وOUTSIDE_FOV وPARTIALLY_WITHIN_FOV وWITHIN_FOV في
SpatialVisibilityإلى 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(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). - تمت إعادة تسمية قيم *الوضع في ملف الإعداد لتعكس سلوكها. (I6d247)
- تم إصلاح المشاكل المتعلّقة بمجال الرؤية و
HitTestفيSceneCoreTestApp. (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، ما يتيح الحصول على القيم وضبطها بالنسبة إلى مساحات مختلفة. القيم المسموح بها هي "المساحات الرئيسية" و"مساحات الأنشطة" و"مساحات العالم الحقيقي"، والقيمة التلقائية لهذه المَعلمة هي "المساحات الرئيسية". - تمت إضافة طرق ملحقة لـ Spatial Visibility Callback إلى
SessionExt.ktلتتبُّع وقت انتقال محتوى المشهد إلى داخل مجال رؤية المستخدم أو خارجه. - تمت إضافة
setPointSourceParamsإلىSpatialAudioTrack، ما يتيح تعديل المَعلمات بعد إنشاء مسار البناء. - تمت إضافة فئة جديدة، Scene، مع مراجع إلى واجهات برمجة التطبيقات
Scenecore. سيكون المشهد متاحًا كسمة إضافية للجلسة. تم نقل الدوال داخل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 class الآن فئة 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 هذه التعديلات.
الميزات الجديدة
- أصبحت ميزة تصغير Proguard متاحة الآن لرمز Jetpack XR
إصلاح الأخطاء
- إصلاحات إضافية لتوفير إمكانية تصغير 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بعد الإنشاء.
التغييرات الأخرى
- تم خفض الحد الأدنى لـ minSDK في وقت التجميع إلى 24. ستظل جميع واجهات برمجة تطبيقات Jetpack XR تتطلّب المستوى 34 لواجهة برمجة التطبيقات في وقت التشغيل.
- لم يعُد مصنع الجلسات (
Session.create) فيSceneCoreيطلق هدفًا للحصول على إذنSCENE_UNDERSTANDING. بدلاً من ذلك، يجب أن يطلب تطبيق العميل الأذونات صراحةً من المستخدم قبل محاولة إنشاء نقاط الارتكاز. ستتعذّر عملية إنشاء نقاط الارتكاز إذا لم يمنح المستخدم الإذن.
إصلاح الأخطاء
- تم إصلاح
getActivitySpacePose()لاحتساب مقياسActivitySpaceمن خلال عرض قيم الترجمة بالمترات التي تم تغيير مقياسها بدلاً من عرض المترات التي لم يتم تغيير مقياسها دائمًا. يستخدمtransformPoseToالآن أيضًا الوحدات الصحيحة لاحتساب تغييرات الإحداثيات عندما يكونActivitySpaceمتضمّنًا في المصدر أو الوجهة. - سيتم الآن ضبط صندوق السماء على صندوق سماء أسود بالكامل كلما تم تمرير إعداد مفضّل لصندوق سماء فارغ باستخدام
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom)). للتراجع عن التغييرات والعودة إلى إعدادات النظام التلقائية الخاصة بالصندوق السماوي والأشكال الهندسية، استخدِمsetSpatialEnvironmentPreference(null).
الإصدار 1.0.0-alpha01
12 ديسمبر 2024
تم طرح androidx.xr.scenecore:scenecore-* 1.0.0-alpha01.
ميزات الإصدار الأولي الإصدار الأولي من Jetpack SceneCore للمطوّرين، وهي مكتبة رسومات بيانية ثلاثية الأبعاد لإنشاء مشاهد وبيئات غامرة ومعالجتها. تتيح لك هذه المكتبة وضع نماذج ثلاثية الأبعاد ولوحات المحتوى وترتيبها بالنسبة إلى بعضها البعض وإلى بيئاتك الافتراضية أو الواقعية.
- SpatialEnvironment: يمكنك إنشاء تجارب غامرة بالكامل باستخدام صورة skybox و/أو هندسة نموذج ثلاثي الأبعاد كخلفية لمشهد الواقع الممتد في بيئتك. يمكنك أيضًا تفعيل ميزة "المرور" لدمج المشهد الافتراضي مع البيئة المحيطة بالمستخدم في العالم الحقيقي.
- PanelEntity: يمكنك إضافة محتوى ثنائي الأبعاد إلى مشاهدك الثلاثية الأبعاد من خلال تضمين تصميمات وأنشطة Android العادية في لوحات مكانية يمكن أن تطفو أو يتم تثبيتها على أسطح في العالم الحقيقي.
- GltfModelEntity: يمكنك وضع نماذج ثلاثية الأبعاد وتحريكها والتفاعل معها في المشهد. تتوافق SceneCore مع تنسيق ملف glTF لتسهيل عملية الدمج مع التصاميم الحالية.
- SpatialAudio: يمكنك إضافة مصادر صوتية محيطة وموضعية إلى المشهد الثلاثي الأبعاد للحصول على صوت مكاني غامر بالكامل.
- StereoSurfaceEntity: تتيح SceneCore توجيه المحتوى المعروض على مساحة عرض Android إلى العين اليسرى أو اليمنى. يمكن استخدام هذه السمة لعرض المحتوى المجسّم بتنسيق جنبًا إلى جنب أو من أعلى إلى أسفل، مثل الصور المجسّمة أو الفيديوهات الثلاثية الأبعاد أو واجهات المستخدم الأخرى التي يتم عرضها بشكل ديناميكي. يجب أن تستخدم التطبيقات MediaPlayer أو ExoPlayer لفك ترميز الفيديو.
- نظام المكوّنات: يوفّر SceneCore نظام مكوّنات قويًا ومرنًا لإضافة إمكانات إلى محتوى الواقع الممتد، بما في ذلك وسائل مساعدة للمستخدمين لنقل النماذج واللوحات وتغيير حجمها والتفاعل معها.
- نقطة الربط: عند تفعيل ميزة "المرور"، يمكنك ربط اللوحات والنماذج بالأسطح الفعلية، ما يتيح للمستخدمين دمج المحتوى الافتراضي بسلاسة في بيئتهم الواقعية.
- وضعية المستخدم: الوصول إلى الموقع الجغرافي للمستخدم في المشهد الافتراضي لتوجيه المحتوى حول موضع المستخدم
- SpatialCapabilities: يمكنك إنشاء تطبيقات قابلة للتكيّف بالكامل تستفيد من الإمكانات المكانية عند توفّرها، مثل تحديد موضع المحتوى ثلاثي الأبعاد لواجهة المستخدم. بالإضافة إلى ذلك، يمكن لتطبيقك مراقبة التغييرات في الإمكانات أثناء تنفيذه، وذلك لتعديل التجربة استنادًا إلى طريقة استخدام المستخدم لجهاز Android XR.
المشاكل المعروفة
- يجب حاليًا استخدام الإصدار 30 من minSDK لاستخدام Jetpack SceneCore. كحلّ بديل، أضِف إدخال البيان التالي
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>لتتمكّن من الإنشاء والتشغيل باستخدام minSDK 23. - يمكن أن تصبح الجلسة غير صالحة في حالات مختلفة تؤدي إلى إعادة إنشاء النشاط تلقائيًا، بما في ذلك تغيير حجم اللوحة الرئيسية وتوصيل الأجهزة الطرفية والتبديل بين الوضعين الفاتح والداكن. إذا واجهت مشاكل في إبطال الجلسة، تتضمّن الحلول البديلة عدم إمكانية تغيير حجم اللوحة الرئيسية، أو استخدام عنصر لوحة ديناميكية، أو إيقاف إعادة إنشاء النشاط لتغييرات إعدادات معيّنة، أو إيقاف تغييرات سمة الوضع الفاتح/الداكن.
- لا تتوافق المكوّنات القابلة للنقل وتغيير الحجم مع GltfEntity.
- لا يمكن استخدام Entity.getSize() في GltfEntity.
- يجب أن تطلب تطبيقات Jetpack XR الإذن
android.permission.SCENE_UNDERSTANDINGفي ملف AndroidManifest. - لا يمكن إنشاء جلسة إلا على جهاز Android XR. في الوقت الحالي، إذا أنشأت جلسة وحاولت استخدامها على جهاز غير Android XR، سيظهر لك الخطأ RuntimeException.
- لا يؤدي ضبط صندوق السماء على القيمة الخالية باستخدام SpatialEnvironment.setSpatialEnvironmentPreference() إلى إنشاء صندوق سماء أسود ثابت كما هو موضّح في المستندات. وقد يؤدي ذلك إلى استخدام skybox التلقائي للنظام أو عدم إجراء أي تغيير على 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، سيتعطّل التطبيق عند إنشاء Session. كحلّ بديل، أوقِف ProGuard. يمكنك الاطّلاع على هذا الدليل للحصول على مزيد من المعلومات حول كيفية تفعيل ProGuard.