جتپک سینکور
آخرین بهروزرسانی | انتشار پایدار | کاندیدای انتشار | انتشار بتا | انتشار آلفا |
---|---|---|---|---|
۲۲ اکتبر ۲۰۲۵ | - | - | - | ۱.۰.۰-آلفا۰۸ |
اعلام وابستگیها
برای افزودن وابستگی به XR SceneCore، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Google's Maven را مطالعه کنید.
وابستگیهای مربوط به مصنوعات مورد نیاز خود را در فایل build.gradle
برای برنامه یا ماژول خود اضافه کنید:
شیار
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha08" // Optional dependencies for asynchronous conversions implementation "androidx.xr.scenecore:scenecore-guava:1.0.0-alpha08" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha08" }
کاتلین
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha08") // Optional dependencies for asynchronous conversions implementation("androidx.xr.scenecore:scenecore-guava:1.0.0-alpha08") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha08") }
برای اطلاعات بیشتر در مورد وابستگیها، به «افزودن وابستگیهای ساخت» مراجعه کنید.
بازخورد
بازخورد شما به بهبود Jetpack کمک میکند. اگر مشکلات جدیدی کشف کردید یا ایدههایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد یک کتابخانه جدید، نگاهی به مشکلات موجود در این کتابخانه بیندازید. میتوانید با کلیک بر روی دکمه ستاره، رأی خود را به یک مشکل موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
نسخه ۱.۰
نسخه ۱.۰.۰-آلفا۰۸
۲۲ اکتبر ۲۰۲۵
androidx.xr.scenecore:scenecore-*:1.0.0-alpha08
منتشر شد. نسخه 1.0.0-alpha08 شامل این کامیتها است.
تغییرات API
- تغییر نام
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 )
نسخه ۱.۰.۰-آلفا۰۷
۲۴ سپتامبر ۲۰۲۵
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 شامل این کامیتها است.
تغییرات API
- نام
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
روی یک Entity غیرقابل جابجایی مانندAnchorEntity
، به جای بازگرداندن مقدار بولی false، یکIllegalArgumentException
تولید میکند. ( I62080 ، b/428721695 ، b/422215745 ) - متغیر
SpatialModeChangeListener
صحنه باsetSpatialModeChangedListener
جایگزین شد. این متغیر به جایSpatialModeChangedListener
یکConsumer<SpatialModeChangeEvent>
میگیرد.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
اکنون به جای Entity، نوعGroupEntity
را برمیگرداند. ( I66042 )
رفع اشکالات
- وقتی یک نمونه موجودیت پس از dispose استفاده میشود، یک
IllegalStateException
صادر میکند. ( I90990 , b/427314036 , b/432063442 )
نسخه ۱.۰.۰-alpha06
۱۳ آگوست ۲۰۲۵
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 شامل این کامیتها است.
تغییرات API
- APIهای
BaseEntity
وBaseScenePose
مربوط بهSceneCore
را از حالت محدود خارج کنید ( 88c0ff6 )
نسخه ۱.۰.۰-آلفا۰۵
۳۰ ژوئیه ۲۰۲۵
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 به Panel Entities و
SurfaceEntities
اضافه شد. ( I118f6 ) - متدهای فراخوانی
PerceivedResolution
به Scene.kt اضافه شدند تا وضوح درک شده پنل اصلی فعالیت در HSM را رصد کنند. ( I58084 ) -
SurfaceEntity
- پشتیبانی برای درخواست نمونهبرداری فوقالعاده در زمان ایجاد برنامه اضافه شد. این به برنامهها اجازه میدهد تا از فیلتر نمونهبرداری فوقالعاده برای ضد لغزش استفاده کنند. ( I06913 ) - ویژگی
recommendedContentBoxInFullSpace
بهActivitySpace
اضافه شد. این ویژگی یک کادر پیشنهادی برای قرار دادن محتوا در حالت Full Space برمیگرداند. ( I4cd6f ) - سازندهی overload شدهای برای اصلاحکنندهی متحرک ارائه شده است که امکان لنگر انداختن را فراهم میکند. ( Ic0c70 )
تغییرات API
تغییرات گستردهای در API مربوط به SceneCore
برای این نسخه ایجاد شده است. چندین کلاس تغییر نام داده و/یا به ماژولهای مختلف منتقل شدهاند و اکثر متدهای getter/setter با ویژگیهای Kotlin جایگزین شدهاند. اگرچه پیشبینی میکنیم تغییرات API تا اولین نسخه بتای ما در آینده رخ دهد، اما این تغییرات به اندازه قبل مخرب یا متعدد نخواهند بود.
- کلاسها و رابطهای زیر تغییر نام داده و/یا منتقل شدند:
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
با propertyها جایگزین شدند. ویژگیPanelEntity.size
ازFloat3dSize
بهFloat2dSize
تغییر یافت. متد منسوخandroidx.xr.scenecore.PanelEntity.getPixelDimensions
حذف شد و به جای آن ازgetSizeInPixels
استفاده شد. ( Icc174 ) -
androidx.xr.scenecore.OnSpaceUpdatedListener
باRunnable
جایگزین شد. ( I19308 ) -
SpatialUser.getCameraViews()
با یک ویژگی جایگزین شد. ( Ib0cc5 ) برایExrImage
وGltfModel:
متدهایcreate
به توابع suspend تغییر یافتند؛ پارامترهای create اصلاح شدند تا به جای یکString
، یکUri
یاPath
را بپذیرند. ( Id8883 ) ( I0d247 ) ، ( I25706 ) -
SpatialEnvironment.requestFullSpaceMode
وSpatialEnvironment.requestHomeSpaceMode
را به Scene منتقل کردم، برای مثال ازsession.scene.requestFullSpaceMode()
به جایsession.scene.spatialEnvironment.requestFullSpaceMode()
استفاده کردم.addOnPassthroughOpacityChangedListener
وaddOnSpatialEnvironmentChangedListener
اکنون overrideهایی دارند که Executorهای اختیاری را میپذیرند. ( 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
در متد create به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
برای تنظیم و اضافه کردن شنوندهها، شنونده به آرگومان نهایی منتقل شده و به لامبداهای انتهایی فعال تبدیل شده است.androidx.xr.scenecore.OnStateChangedListener
برایAnchorEntity
باConsumer<AnchorEntity.State>
جایگزین شد. ( I472e0 ) -
GltfModelEntity.getAnimationState()
اکنون یک ویژگی است. ( I10b29 ) -
ActivitySpace.getBounds()
با یک ویژگی جایگزین شد.ActivitySpace.addBoundsChangedListener
بهActivitySpace.addOnBoundsChangedListener
تغییر نام داد.ActivitySpace.setOnSpaceUpdatedListener
با متدهای add/remove جایگزین شد. ( 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
اکنون به جایPanelEntity
( I7125a ) از نوعMainPanelEntity
است. - متد
setFullSpaceMode
صحنه را به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 تغییر نام دادند ( Ie7e8c ) - کلاس
SpatialVisibility
با شیء عمومی با مقادیر ثابت Int جایگزین شده است.setSpatialVisibilityChangedListener
اکنون به جایConsumer<SpatialVisibility>
، یکConsumer<Int>
میپذیرد ( 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
از String بهCharSequence
تغییر یافت. ( Ie59be ) -
Session.create
وSession.configure
اکنون در صورت عدم اعطای مجوزهای کافی، به جای بازگرداندنSessionCreatePermissionsNotGranted
یاSessionConfigurePermissionsNotGranted
، خطایSecurityException
را صادر میکنند ( 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
برایandroidx.xr.scenecore
وandroidx.xr.compose
به ۲۴ کاهش یافت. بستههای XR هنوز در زمان اجرا به API 34 نیاز دارند. ( I17224 ) - محدودیت
RequiresApi(34)
از روی تمام بستههای Jetpack XR حذف شد. این محدودیت اضافی بود زیرا Jetpack XR در حال حاضر فقط روی دستگاههایی با سطح API 34+ در دسترس است. ( Iae0f8 ) - مصنوع اصلی
SceneCore
(xr:scenecore:scenecore
) فقط شامل APIهای ناهمگام به سبک کاتلین خواهد بود. توسعهدهندگان جاوا میتوانند برای دسترسی به APIهای سازگار به کتابخانهxr:scenecore:scenecore-guava
تکیه کنند. ( If221b ) - پروژههای منتشر شده با کاتلین ۲.۰ برای استفاده به KGP 2.0.0 یا جدیدتر نیاز دارند ( Idb6b5 )
- این کتابخانه اکنون از حاشیهنویسیهای nullness از نوع JSpecify استفاده میکند که از نوع استفاده میکنند. توسعهدهندگان Kotlin باید از آرگومان کامپایلر زیر برای اعمال استفاده صحیح استفاده کنند:
-Xjspecify-annotations=strict
(این پیشفرض است که از نسخه 2.1.0 کامپایلر Kotlin شروع میشود) ( Ia8420 ) - تمام متدهای async که
ListenableFuture
برمیگردانند، با توابع تعلیق کاتلین جایگزین شدهاند. توسعهدهندگان جاوا که مایل به استفاده از متدهای async مبتنی برListenableFuture
به جای توابع تعلیق کاتلین هستند، اکنون باید از توابع افزونه در:xr:scenecore-scenecore-guava
استفاده کنند. برای مثال،GuavaExrImage
شامل توابع async معادل Guava یعنی ExrImage است،GuavaScenePose
شامل توابع async معادل Guava یعنیScenePose
است،GuavaGltfModel
شامل توابع asyncGuava-equivalent GltfModel
است و غیره. ( If7283 ) ( I0af60 ) ( If7283 ) ( Ia8515 ) ( I4efdf ) ( I54bbf ) ( I3467a ) ( I82a33 )
رفع اشکالات
- بهروزرسانی قانون Jetpack XR Scenecore
ProGuard
برای جلوگیری ازAbstractMethodError
برای کلاینتهای کوچکشده ( I91a01 ) - اصلاحات اضافی برای پشتیبانی از کوچکسازی Proguard برای Jetpack XR
SceneCore
( I4f47e ) - اشکالی که باعث میشد اگر
hitPosition
در HitInfo ازInputEvent
مقدار null داشته باشد وhitPosition
برگردانده شده از سیستم، ممکن بود باعث خرابیInteractableComponent
شود، برطرف شد ( I7a695 ) - پیکربندی *مقادیر حالت برای انعکاس رفتارشان تغییر نام داده شدهاند. ( I6d247 )
- مشکلات مربوط به FOV و
HitTest
درSceneCore
TestApp برطرف شد. ( I2c51e ) - اشکال موجود در
SpatialCapabilities.hasCapability()
که در آن اگر هر یک از قابلیتهای ارسالی با یک OR بیتی درست باشد، مقدار درست را برمیگرداند، به جای اینکه فقط در صورتی درست برگردانده شود که همه آنها درست باشند، مقدار درست را برمیگرداند، برطرف شد ( I2cd40 ). -
SurfaceEntity.StereoMode.TOP_BOTTOM
بهروزرسانی شد تا نقشه بالا برای چشم چپ و نقشه پایین برای چشم راست باشد. ( I4ae68 )
نسخه ۱.۰.۰-آلفا۰۴
۷ مه ۲۰۲۵
androidx.xr.scenecore:scenecore:1.0.0-alpha04
و androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04
منتشر شدند. نسخه 1.0.0-alpha04 شامل این کامیتها است.
ویژگیهای جدید
- اکنون backhandling روی موجودیتهای پنل بدون activity های تعبیه شده کار خواهد کرد. برای اینکه backhandling کار کند، باید
android:enableOnBackInvokedCallback= "true"
در مانیفست اندروید مشخص کنید. -
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 هستند و مقدار پیشفرض برای این پارامتر Parent است. - متدهای افزونهی فراخوانیِ قابلیت مشاهدهی مکانی (Spatial Visibility) به
SessionExt.kt
اضافه شدهاند تا زمانی که محتوای صحنه در داخل یا خارج از میدان دید کاربر حرکت میکند، نظارت شود. -
setPointSourceParams
بهSpatialAudioTrack
اضافه شده است و به پارامترها اجازه میدهد پس از ساخت آهنگ، بهروزرسانی شوند. - یک کلاس جدید به نام Scene اضافه شده است که ارجاعاتی به APIهای
Scenecore
دارد. Scene به عنوان یک ویژگی الحاقی Session قابل دسترسی خواهد بود. توابع داخلSessionExt
به Scene منتقل شدهاند، بنابراین importها نیاز به تنظیم دارند؛ برای مثال،SessionExt.getScene(session)
addSpatialCapababilitiesChangedListener
در مقابلSessionExt.addSpatialCapabilitiesChangedListener
. -
ActivityPose.hitTestAsync
اضافه شد که امکانhitTest
در برابر محتوای مجازی فراهم میکند. - نوع کامپوننت جدید
SpatialPointerComponent
اضافه شده است که به کلاینتها اجازه میدهد آیکون رندر شده برای اشارهگر را مشخص کنند یا آیکون را غیرفعال کنند. این کامپوننت در حال حاضر فقط میتواند به نمونههایPanelEntity
متصل شود. - معرفی کارخانه جدید
PanelEntity
که ابعاد پنل را بر حسب متر یا پیکسل دریافت میکند. کارخانه قدیمیPanelEntity
که دو پارامتر از نوع Dimension برای پنل میگرفت، حذف شد.
تغییرات API
- محدودیت
RequiresApi(34)
از روی تمام بستههای Jetpack XR حذف شد. این محدودیت اضافی بود زیرا Jetpack XR در حال حاضر فقط روی دستگاههایی با سطح API 34+ در دسترس است. ( Iae0f8 ) - پروژههای منتشر شده با کاتلین ۲.۰ برای استفاده به KGP 2.0.0 یا جدیدتر نیاز دارند ( 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()
پیکربندی شود. - APIهای
SpatialUser
اکنون نیاز دارند کهHeadTrackingMode
درSession.configure()
پیکربندی شود. - وقتی
ResizableComponent
پیوست نشده باشد، به جای گزارش سطح ERROR، گزارش سطح INFO را ارائه میدهد. - کلاس Fov اکنون یک کلاس معمولی کاتلین است.
-
Entity.kt
تقسیم کنید تا هر نوع موجودیت مشخص در فایل جداگانه خود قرار گیرد. - هنگام ایجاد یک
PanelEntity
جدید، اکثر Viewها بهFrameLayout
تغییر نام میدهند. این امر استفاده ازLayoutInspector
با Spatial Panels تسهیل میکند. - نمونهی فعلی
XrExtensions
که در حال حاضر استفاده میشود، اکنون به بهترین شکل ممکن در پلتفرم ثبت شده است تا به اشکالزدایی برنامه کمک کند.
رفع اشکالات
- برای جلوگیری از خرابی که ممکن است هنگام جابجایی یک
PanelEntity
باMovableComponent
وAnchorPlacement
رخ دهد، یک اصلاحیه اضافه شد. - مشکلی که باعث میشد
ResizableComponent
در فراخوانیonResizeStart
اندازههای قدیمی ارائه دهد، برطرف شد. - مشکل از کار افتادن برنامه هنگام فراخوانی چندین بار
dispose()
درJxrPlatformAdapterAxr
برطرف شد.
نسخه ۱.۰.۰-آلفا۰۳
۲۶ فوریه ۲۰۲۵
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 )
نسخه ۱.۰.۰-آلفا۰۲
۱۲ فوریه ۲۰۲۵
androidx.xr.scenecore:scenecore:1.0.0-alpha02
و androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02
منتشر شدند. نسخه 1.0.0-alpha02 شامل این کامیتها است.
تغییر اساسی پیش رو که برنامههای ساخته شده قبل از نسخه ۱.۰.۰-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
انجام خواهد شد.
شکستن و تغییرات رفتاری
- اگر پنل عرض یا ارتفاعی کمتر از ۳۲dp داشته باشد،
PanelEntity
وActivityPanelEntity
شعاع گوشه پیشفرض ۳۲dp یا کمتر خواهند داشت.
APIها و قابلیتهای جدید
-
StereoSurface.CanvasShape
را معرفی میکند که امکان ایجاد بومهایSpherical
وHemispherical
را برای رندر کردن رسانههای فراگیر فراهم میکند. -
StereoSurfaceEntity.create()
اکنون یک پارامترCanvasShape
میپذیرد. (این پارامتر در حال حاضر نادیده گرفته میشود، اما در نسخههای آینده استفاده خواهد شد) -
StereoSurfaceEntity.create()
دیگر پارامترDimensions
دریافت نمیکند. برنامهها باید اندازه بوم را از طریق تنظیمCanvasShape
کنترل کنند. -
StereoSurfaceEntity
یک عضوCanvasShape
دارد که میتواند به صورت پویا تنظیم شود. -
StereoSurfaceEntity.dimensions
اکنون یک ویژگی فقط خواندنی است؛ برنامهها بایدCanvasShape
برای تغییر ابعاد تنظیم کنند. -
StereoSurfaceEntity
اکنون اجازه میدهدStereoMode
پس از ساخت، دوباره تنظیم شود.
تغییرات دیگر
- زمان کامپایل minSDK به ۲۴ کاهش یافت. تمام APIهای Jetpack XR همچنان در زمان اجرا به API 34 نیاز دارند.
- کارخانه Session مربوط به
SceneCore
(Session.create
) دیگر قصدی برای دریافت مجوزSCENE_UNDERSTANDING
راهاندازی نمیکند. در عوض، برنامه کلاینت باید قبل از تلاش برای ایجاد anchorها، صریحاً مجوزها را از کاربر درخواست کند. در صورت عدم اعطای مجوز توسط کاربر، ایجاد anchor با شکست مواجه خواهد شد.
رفع اشکالات
- تابع
getActivitySpacePose()
برای در نظر گرفتن مقیاسActivitySpace
اصلاح شده است، به این صورت که مقادیر ترجمه را به جای اینکه همیشه مقادیر بدون مقیاس را برگرداند، به صورت واحدهای مقیاسبندی شده برمیگرداند.transformPoseTo
اکنون از واحدهای صحیح برای محاسبه تغییرات مختصات زمانی کهActivitySpace
در منبع یا مقصد درگیر است، استفاده میکند. - اکنون هر زمان که یک تنظیمات null برای skybox با استفاده از
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom))
ارسال شود، skybox به یک skybox کاملاً سیاه تنظیم میشود. برای بازگشت به skybox و geometry پیشفرض سیستم، ازsetSpatialEnvironmentPreference(null).
نسخه ۱.۰.۰-آلفا۰۱
۱۲ دسامبر ۲۰۲۴
androidx.xr.scenecore:scenecore-* 1.0.0-alpha01
منتشر شد.
ویژگیهای نسخه اولیه نسخه اولیه توسعهدهندگان Jetpack SceneCore، یک کتابخانه گراف صحنه سهبعدی برای ایجاد و دستکاری صحنهها و محیطهای فراگیر. این کتابخانه به شما امکان میدهد مدلهای سهبعدی و پنلهای محتوا را نسبت به یکدیگر و محیطهای مجازی یا واقعی خود قرار داده و مرتب کنید.
- محیط فضایی : با استفاده از یک تصویر skybox و/یا هندسه مدل سهبعدی به عنوان پسزمینه صحنه XR از محیط خود، تجربیات کاملاً فراگیر ایجاد کنید. یا قابلیت عبور (passthrough) را فعال کنید تا صحنه مجازی شما بتواند با محیط دنیای واقعی کاربر ادغام شود.
- PanelEntity : با جاسازی طرحبندیها و فعالیتهای استاندارد اندروید در پنلهای فضایی که میتوانند شناور باشند یا به سطوح دنیای واقعی متصل شوند، محتوای دوبعدی را به صحنههای سهبعدی خود اضافه کنید.
- GltfModelEntity : مدلهای سهبعدی را در صحنه خود قرار دهید، متحرکسازی کنید و با آنها تعامل داشته باشید. SceneCore از فرمت فایل glTF برای سهولت ادغام با مدلهای موجود پشتیبانی میکند.
- SpatialAudio : منابع صوتی محیطی و نقطهای را به صحنه سهبعدی خود اضافه کنید تا صدای کاملاً فراگیر و فضاسازیشده داشته باشید.
- StereoSurfaceEntity : SceneCore از مسیریابی چشم چپ/راست محتوای رندر شده روی یک سرفیس اندرویدی پشتیبانی میکند. این میتواند برای رندر محتوای استریوسکوپی در قالب پهلو به پهلو یا بالا به پایین، مانند عکسهای استریو، ویدیوی سهبعدی یا سایر رابطهای کاربری رندر شده پویا، استفاده شود. برنامهها باید از MediaPlayer یا ExoPlayer برای رمزگشایی ویدیو استفاده کنند.
- سیستم کامپوننت: SceneCore یک سیستم کامپوننت قوی و انعطافپذیر برای افزودن قابلیتها به محتوای XR شما ارائه میدهد، از جمله امکاناتی برای کاربران جهت جابجایی، تغییر اندازه و تعامل با مدلها و پنلها.
- Anchor : با فعال بودن قابلیت Passthrough، میتوانید پنلها و مدلها را به سطوح واقعی متصل کنید و به کاربران امکان ادغام یکپارچه محتوای مجازی در محیط دنیای واقعی را بدهید.
- موقعیت کاربر: به موقعیت مکانی کاربر در صحنه مجازی دسترسی پیدا کنید تا محتوای خود را حول موقعیت کاربر تنظیم کنید.
- قابلیتهای مکانی : برنامههای کاملاً تطبیقی بسازید که از قابلیتهای مکانی در صورت وجود، مانند موقعیتیابی سهبعدی محتوای رابط کاربری، بهره ببرند. نه تنها این، بلکه برنامه شما میتواند تغییرات قابلیتها را در حین اجرای برنامه رصد کند تا تجربه را بر اساس نحوه استفاده کاربر از دستگاه اندروید XR خود تغییر دهد.
مشکلات شناخته شده
- در حال حاضر برای استفاده از Jetpack SceneCore به minSDK با مقدار 30 نیاز است. به عنوان یک راه حل، ورودی مانیفست زیر را اضافه کنید
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>
تا بتوانید با minSDK با مقدار 23 بسازید و اجرا کنید. - جلسه میتواند در موقعیتهای مختلفی که به طور خودکار فعالیت را بازسازی میکنند، نامعتبر شود، از جمله تغییر اندازه پنل اصلی، اتصال لوازم جانبی و تغییر بین حالت روشن و تاریک. اگر با مشکلات نامعتبر شدن جلسه مواجه شدید، راهحلها شامل تغییر اندازه پنل اصلی به حالت غیرقابل تغییر، استفاده از یک موجودیت پنل پویا، غیرفعال کردن بازآفرینی فعالیت برای تغییرات پیکربندی خاص یا غیرفعال کردن تغییرات تم حالت روشن/تاریک است.
- اجزای قابل جابجایی و تغییر اندازه در GltfEntity پشتیبانی نمیشوند.
- Entity.getSize() در GltfEntity پشتیبانی نمیشود.
- برنامههای Jetpack XR ملزم به درخواست مجوز
android.permission.SCENE_UNDERSTANDING
در AndroidManifest هستند. - ایجاد یک جلسه فقط در دستگاه اندروید XR پشتیبانی میشود. در حال حاضر، اگر یک جلسه ایجاد کنید و سعی کنید از آن در دستگاهی غیر از اندروید XR استفاده کنید، با خطای RuntimeException مواجه خواهید شد.
- تنظیم کادر آسمان به null از طریق `SpatialEnvironment.setSpatialEnvironmentPreference()` منجر به ایجاد یک کادر آسمان کاملاً سیاه، همانطور که مستند شده است، نمیشود. این ممکن است منجر به کادر آسمان پیشفرض سیستم شود یا هیچ تغییری در کادر آسمان فعلی ایجاد نکند.
- کلاینتهای 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 به این راهنما مراجعه کنید.