Jetpack SceneCore
آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
---|---|---|---|---|
24 سبتمبر 2025 | - | - | - | 1.0.0-alpha07 |
تحديد الاعتماديات
لإضافة اعتمادية على XR SceneCore، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف الاعتماديات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle
لتطبيقك أو وحدتك:
Groovy
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha07" // Optional dependencies for asynchronous conversions implementation "androidx.xr.scenecore:scenecore-guava:1.0.0-alpha07" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha07" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha07") // Optional dependencies for asynchronous conversions implementation("androidx.xr.scenecore:scenecore-guava:1.0.0-alpha07") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha07") }
لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات البناء.
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
الإصدار 1.0
الإصدار 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
- تمت إعادة تسمية
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.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
بدلاً من 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 هذه التعديلات.
الميزات الجديدة
- تمت إضافة واجهة برمجة التطبيقات Perceived Resolution API إلى "كيانات اللوحة" و
SurfaceEntities
. (I118f6) PerceivedResolution
تمت إضافة طرق معاودة الاتصال إلى Scene.kt لمراقبة الدقة المرئية للّوحة الرئيسية للنشاط في "إعدادات خدمات Google للأجهزة الجوّالة". (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
، وإعادة تسميةEntityMoveListener shouldDisposeParentAnchor
إلىdisposeParentOnReAnchor systemMovable
، وإزالة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
فيSceneCore
TestApp. (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.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.create
) فيSceneCore
يطلق غرضًا للحصول على إذنSCENE_UNDERSTANDING
. بدلاً من ذلك، يجب أن يطلب تطبيق العميل الأذونات صراحةً من المستخدم قبل محاولة إنشاء نقاط الارتكاز. ستتعذّر عملية إنشاء نقاط الارتكاز إذا لم يمنح المستخدم الإذن.
إصلاح الأخطاء
- تم إصلاح
getActivitySpacePose()
لاحتساب مقياسActivitySpace
من خلال عرض قيم الترجمة بالمترات التي تم تغيير مقياسها بدلاً من عرض المترات التي لم يتم تغيير مقياسها دائمًا. يستخدمtransformPoseTo
الآن أيضًا الوحدات الصحيحة لاحتساب تغييرات الإحداثيات عندما يكونActivitySpace
متضمّنًا في المصدر أو الوجهة. - سيتم الآن ضبط صندوق السماء على صندوق سماء أسود بالكامل كلما تم تمرير إعداد مفضّل لصندوق سماء فارغ باستخدام
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom))
. للتراجع عن التغييرات والعودة إلى إعدادات skybox والهندسة التلقائية للنظام، استخدِم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 Surface إلى العين اليسرى أو اليمنى. ويمكن استخدامها لعرض المحتوى المجسّم بتنسيق جنبًا إلى جنب أو من أعلى إلى أسفل، مثل الصور المجسّمة أو فيديوهات ثلاثية الأبعاد أو غيرها من واجهات المستخدم التي يتم عرضها بشكل ديناميكي. يجب أن تستخدم التطبيقات 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.