جتپک سینکور
| آخرین بهروزرسانی | انتشار پایدار | کاندیدای انتشار | انتشار بتا | انتشار آلفا |
|---|---|---|---|---|
| ۲۲ اکتبر ۲۰۲۵ | - | - | - | ۱.۰.۰-آلفا۰۸ |
اعلام وابستگیها
برای افزودن وابستگی به 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 ) - ثابتهای
SceneCoreTextureSamplerبرای خوانایی بیشتر بهروزرسانی شدند، برای مثال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.Vr180HemisphereHemisphereتغییر نام داد -
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درSceneCoreTestApp برطرف شد. ( 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 به این راهنما مراجعه کنید.