جتپک سینکور
| آخرین بهروزرسانی | انتشار پایدار | کاندیدای انتشار | انتشار بتا | انتشار آلفا |
|---|---|---|---|---|
| ۱۷ ژوئن ۲۰۲۶ | - | - | - | ۱.۰.۰-آلفا۱۶ |
اعلام وابستگیها
برای افزودن وابستگی به XR SceneCore، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Google's Maven را مطالعه کنید.
وابستگیهای مربوط به مصنوعات مورد نیاز خود را در فایل build.gradle برای برنامه یا ماژول خود اضافه کنید:
شیار
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha16" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha16" }
کاتلین
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha16") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha16") }
برای اطلاعات بیشتر در مورد وابستگیها، به «افزودن وابستگیهای ساخت» مراجعه کنید.
بازخورد
بازخورد شما به بهبود Jetpack کمک میکند. اگر مشکلات جدیدی کشف کردید یا ایدههایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد یک کتابخانه جدید، نگاهی به مشکلات موجود در این کتابخانه بیندازید. میتوانید با کلیک بر روی دکمه ستاره، رأی خود را به یک مشکل موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
نسخه ۱.۰
نسخه ۱.۰.۰-آلفا۱۶
۱۷ ژوئن ۲۰۲۶
androidx.xr.scenecore:scenecore-*:1.0.0-alpha16 منتشر شد. نسخه 1.0.0-alpha16 شامل این کامیتها است.
تغییرات API
- اضافه بارهایی برای
addVertexData،setIndexDataوaddSubsetبهCustomMesh.BuilderFromMeshDataوCustomMesh.BuilderFromMeshBufferاضافه شده است. این اضافه بارهای اضافی به توسعهدهندگان اجازه میدهد تا دادهها و پارامترهای خام (مثلاًByteBuffer،offset،size،topology،indexOffset،indexCount) را مستقیماً و بدون نیاز به قرار دادن آنها در اشیاء واسطه مانندByteBufferRegionیاMeshSubsetارسال کنند. ( I84d5c ) -
Scene.requestFullSpaceMode()وScene.requestHomeSpaceMode()به ترتیب بهrequestFullSpace()وrequestHomeSpace()تغییر نام دادهاند. سایر متدها و مستندات مربوط به "Home Space Mode" و "Full Space Mode" نیز به طور مشابه بهروزرسانی شدهاند. ( I45751 ) - API تست عمومی
PanelEntityTesterوMainPanelEntityTester( I961e4 ) را ارائه میدهد. - افزودن ویژگی
pointSourceParamsبهSoundEffectPoolComponent( I4a750 ) - ارائه API تست عمومی
MovableComponentTester( I0c972 ) - API تست عمومی
PointerCaptureComponentTester( Ic0d4f ) را ارائه میدهد. - API تست عمومی
ActivityPanelEntityTester( I837c4 ) را ارائه میدهد. - API تست عمومی
ResizableComponentTester( I0a3a4 ) را ارائه میدهد. - API تست عمومی
BoundsComponentTester.( Iefd53 ) - ارائه API تست عمومی
SpatialMediaPlayerTester( Ia3e09 ) - ارائه API تست عمومی
SpatialEnvironmentTester( Icf60f ) - API تست عمومی
GltfModelTesterوSceneCoreTestRule.getGltfModelTesterرا ارائه میدهد. ( I33fcb ) - API تست عمومی
InteractableComponentTesterرا ارائه میدهد. ( Ia7096 ) - API تست عمومی
SurfaceEntityTesterرا ارائه میدهد. ( Ic0740 ) - API تست عمومی
GltfModelEntityTester،TestGltfModelNodeوTestGltfAnimationرا ارائه میدهد. ( I72c4d ) - رابط برنامهنویسی کاربردی تست عمومی
SceneTesterوSceneCoreTestRule.sceneTesterرا ارائه میدهد. ( Ib4ec5 ) - رابط برنامهنویسی کاربردی تست عمومی
PerceptionSpaceTesterوSceneCoreTestRule.perceptionSpaceTesterرا ارائه میدهد. ( Icf739 ) - API تست عمومی
MeshEntityTesterرا ارائه میدهد. ( I63801 ) - API تست عمومی
ImageBasedLightingAssetTesterوSceneCoreTestRule.getTesterرا برای overloadها ارائه میدهد. ( I57ec4 ) - ارائه دهنده API تست عمومی
TextureTester( Ia865b ) - API تست عمومی
PositionalAudioComponentTester( Icd96e ) را ارائه میدهد. - ارائه API تست عمومی
SpatialSoundPoolTester( Ia3531 ) - ارائه API تست عمومی
SoundEffectPoolTester( If349a ) - API تست عمومی
ActivitySpaceTesterوSceneCoreTestRule.activitySpaceTesterرا ارائه میدهد. ( I2d5c2 ) - ارائه API تست عمومی
SpatialWindowTester( I41837 ) - ارائه دهنده API تست عمومی
AnchorEntityTester( I68404 ) - رابط API تست عمومی
SceneCoreTestRuleرا ارائه میدهد. ( Ic72d3 ) - کلاس
PixelDensityاضافه شد و از طریقScene#virtualPixelDensityدر معرض آن قرار گرفت تا نسبت پیکسل بر متر مبتنی بر سختافزار برای نگاشت دقیق ابعاد فیزیکی درActivitySpaceارائه شود. ( I0e3ac ) - API های عمومی برای ایجاد و رندر مش های سفارشی اضافه شد. ( I7ad2f )
- رابط برنامهنویسی کاربردی
VertexLayoutبهروزرسانی شده است تا از فهرستی ازVertexBufferLayoutها استفاده کند، که در آن هرVertexBufferLayoutویژگیهای درون یک بافر رأس را توصیف میکند. این امر امکان چیدمان دادههای رأس انعطافپذیرتر، از جمله ویژگیهای درهمتنیده با گامها و آفستهای سفارشی را فراهم میکند. ( Ic426b ) -
MovableComponent.createTrackingMovableرا برای تبدیل یک ARCore Trackable به یک حالت نسبت به فضای فعالیت (Activity Space) فراهم میکند. ( I12249 ) - مقدار پیشفرض برای والد در
Entity.createبه null بهروزرسانی شده است. ( Ic3145 ) -
Entityبه جای یک رابط، به یک کلاس تبدیل شد و اکنون کلاس پایه برای همه انواع Entity است. به عنوان بخشی از این تغییر،BaseEntityحذف شد. ( I7fbc9 ) -
GltfModel،ExrImageوImageBasedLightingAssetاکنونAutoCloseableرا پیادهسازی میکنند تا امکان مدیریت منابع اصطلاحی را با استفاده از بلوکuseدر کاتلین فراهم کنند. ( I1ac79 ) - کلاس
ImageBasedLightingAssetبرای جایگزینیExrImageجهت تعریف نورپردازی محیطی معرفی شد.ExrImageمنسوخ شده و از API عمومی حذف شده است.SpatialEnvironmentPreferenceبرای استفاده ازImageBasedLightingAssetبهروزرسانی شده است. ( I6c92a ) - پارامتر
skyboxدرSpatialEnvironmentبهimageBasedLightingAssetتغییر نام داد تا هدف آن را بهتر منعکس کند، و توضیح داد که بافتهای بصری skybox باید در پارامتر geometry گنجانده شوند. ( I24d4a ) - موجودیتهای مکانی اکنون از چگالی دستگاه پایدار برای محاسبات پیکسل به متر در سطوح ۱ و ۲ API مکانی استفاده میکنند و صرف نظر از تغییرات چگالی نمایش سیستم، اندازه ثابتی را تضمین میکنند. ( I37051 )
نسخه ۱.۰.۰-آلفا۱۵
۱۹ مه ۲۰۲۶
androidx.xr.scenecore:scenecore-*:1.0.0-alpha15 منتشر شد. نسخه 1.0.0-alpha15 شامل این کامیتها است.
تغییرات API
-
Entity.dispose()اکنون به عنوان API عمومی حذف شده است. به جای فراخوانیdispose()در نمونههای Entity، برنامهها میتوانند با تنظیمparentبهnullو با پاک کردن هرگونه ارجاع قوی به آن نمونهها، نمونهها را قابل پاکسازی کنند. ( I396c9 ) - متدهای
set/clearOnLoadCompleteListenerازSoundEffectPoolحذف شدهاند. به جای آنadd/removeLoadCompleteListenerاستفاده کنید. ( Iae78d ) -
set/clearSpatialVisibilityChangedListenerصحنه باadd/removeSpatialVisibilityChangedListener جایگزین شد. ( I67dff ) - تمام متدهای
add/removeOnFooListenerدر SceneCore بهadd/removeFooListenerتغییر نام دادهاند وOnاز نام آنها حذف شده است. ( Ibe50b ) - متدهای
AnchorEntity.setOnOriginChangedListenerوAnchorEntity.setOnStateChangedListenerبا متدهایadd/removeFooListenerجایگزین شدهاند تا از چندین شنونده همزمان پشتیبانی کنند. ( I13749 ) - نام
AnchorEntity.State.TIMEDOUTبهState.TIMED_OUTتغییر یافت. ( Id2b8d ) - رابط برنامهنویسی کاربردی کامپوننت (Component API) برای بهبود ایمنی و توسعهپذیری، بازسازی شده است.
Component(Component) اکنون یک کلاس انتزاعی (abstract) است. متدهایonAttach()وonDetach()اکنون برای جلوگیری از فراخوانی مستقیم،protected. لطفاًEntity.addComponent()وEntity.removeComponent()برای مدیریت چرخه حیات کامپوننت استفاده کنید. ( Id04e8 ) - ثابتهای
PlaneSemanticTypePlaneOrientationدر SceneCore از نوع Ints به نوعهای سفارشی منتقل شدهاند. ثابتهایANYآنها حذف خواهند شد، کلاینتها باید به جای آنها، تمام ثابتهای مورد نظر را به صراحت شمارش کنند، یا از ثابتهای Set تغییرناپذیر جدید.ALLاستفاده کنند. متد کارخانهایAnchorEntityاکنون به جای یک مقدار واحد، مجموعهای از این نوعها را میپذیرد. ( Ib1033 ) - پشتیبانی از انیمیشن اسکلتی (پوستهبندی) به رابط برنامهنویسی کاربردی آزمایشی مش سفارشی اضافه شد. توسعهدهندگان اکنون میتوانند با مشخص کردن
boneCountهنگام ایجاد یکMeshEntityو بهروزرسانی انیمیشن به صورت بلادرنگ با استفاده ازMeshEntity.setBoneTransforms()مشهای سفارشی را متحرکسازی کنند. ( Id8ba2 ، b/496692490 ) - رابط برنامهنویسی کاربردی آزمایشی
CustomMeshمعرفی شد. توسعهدهندگان اکنون میتوانند با استفاده ازCustomMesh،MeshBufferوMeshEntity، هندسه سهبعدی را در صحنههای خود به صورت برنامهنویسی ایجاد و رندر کنند. ( I94617 ) -
androidx.xr.scenecore.SpatializerConstants.SourceType.SOURCE_TYPE_SOUND_FIELDحذف شد. به جای آنSourceType.SOUND_FIELDاستفاده کنید. ( Ia68b9 ) - افزودن اجزای صوتی فضایی:
PositionalAudioComponent،SoundEffectPoolComponentوSoundFieldAudioComponent( Ieda89 ) -
AnchorEntity.getAnchorباAnchorEntity.anchorجایگزین شد و اکنون وقتیAnchorEntityاز یکAnchorARCore ( I5c7c8 ) ایجاد شود، یکAnchorبرمیگرداند. - مقدار پیشفرض برای پارامتر
parentدر متدهای کارخانهایActivityPanelEntity،GltfModelEntity،GroupEntity،PanelEntityوSurfaceEntityازActivitySpaceبهnullتغییر یافته است. برای اتصال یک موجودیت به نمودار صحنه و نمایش آن به صورت قابل مشاهده، توسعهدهندگان اکنون باید والد آن را به طور صریح در حین نمونهسازی یا از طریقEntity.parent = ...( Ie7cc1 ) تنظیم کنند.
رفع اشکالات
-
SceneCoreاکنون به طور خودکار نمونههایEntityرا هنگامی که قابل دسترسی فانتوم میشوند، بازپس میگیرد و نیاز توسعهدهندگان را برای فراخوانی صریحdispose()برای آزادسازی منابع از بین میبرد. برای اطمینان از بازپسگیری صحیح یک نمونه [Entity]، توسعهدهندگان باید:- با تنظیم
parentآن بهnullآن را از نمودار صحنه جدا کنید. - از تمام ارجاعات قوی به نمونه در کد خود صرف نظر کنند.
- نکتهای در مورد انواع موجودیتهای خاص: برای موجودیتهایی که نمیتوان برای آنها والد تعیین کرد (مانند
AnchorEntity)، توسعهدهندگان باید در حین استفاده از نمونه، یک ارجاع قوی را حفظ کنند. اگر همه ارجاعها آزاد شوند، این نمونهها به صورت فانتوم قابل دسترسی میشوند و به طور خودکار بازیابی میشوند. ( I83fe4 )
- با تنظیم
- Proguard محدود شده، قوانین را برای همه کتابخانههای
SceneCoreحفظ میکند. ( I98447 )
مشکلات شناخته شده
- اتصال یک
PositionalAudioComponentبه یکEntityبا یک نمونه غیرفعالExoPlayerباعث خرابی میشود. در حالی که ExoPlayer متوقف است،setPointSourceParamsرا فراخوانی نکنید و اجزای صدای مکانی را متصل/جدا نکنید. این مشکل در نسخه بعدی برطرف خواهد شد.
نسخه ۱.۰.۰-آلفا۱۴
۶ مه ۲۰۲۶
androidx.xr.scenecore:scenecore-*:1.0.0-alpha14 منتشر شد. نسخه 1.0.0-alpha14 شامل این کامیتها است.
تغییرات API
-
TrackingStateوVpsAvailabilityResultبهandroidx.xr.arcore packageمنتقل شدهاند و انواع موجود درandroidx.xr.runtimeاکنون منسوخ شدهاند. ( Ic7930 ، b/480462213 ) - نام
Plane.TypeبهPlaneTypeتغییر یافت. ( I8c90c ، b/482675376 ) - نام
Plane.LabelبهPlaneLabelتغییر یافت. ( Ic6b67 ، b/482675376 ) -
androidx.xr.runtime.FieldOfViewمنسوخ شده است. به جای آنandroidx.xr.runtime.math.FieldOfViewاستفاده کنید. ( Ia01a0 , b/480233045 ) -
Matrix4.poseبهMatrix4.toPose()تغییر نام داده است. ویژگی pose اکنون منسوخ شده است. ( I329b4 , b/493383490 ) - مقادیر شمارشی
HandJointTypeتغییر نام داده شدند. ( Ifbc83 ، b/482670596 ) -
Component.onAttachوonDetachبه عنوان API عمومی ارائه دهید تا امکان پیادهسازیهایComponentسفارشی فراهم شود. ( I0ca1f ) - افزودن مؤلفههای صدای فضایی ( I39ddd ، b/489421980 ، b/436642086 ، b/436642499 )
- Entity را از
PointSourceParamsحذف کنید. در عوض، Entity مستقیماً باSpatialAudioTrack،SpatialSoundPoolوSpatialMediaPlayer( Ib3685 ، b/489421980 ، b/436634048 ) استفاده خواهد شد. - نام
DeviceTrackingMode.LAST_KNOWNبهSPATIAL_LAST_KNOWN(با یک جایگزین منسوخشده) تغییر یافت،INERTIAL_LAST_KNOWNبرای ردیابی 3DoF اضافه شد، وTRACKING_DEGRADEDبهTrackingStateاضافه شد. ( Ie661c ، b/445466590 ) -
GroupEntityمنسوخ شده. برای داشتن یک Entity که فقط قابلیت Entity پایه را دارد،Entity.createرا فراخوانی کنید که رابط Entity و ( I4c450 ، b/473867483 ) را برمیگرداند. - رابط برنامهنویسی کاربردی
XrLogاضافه شد. برای فعال کردن ثبت وقایع در JetpackXR، مقدارXrLog.isEnabledرا رویtrueتنظیم کنید وXrLog.Levelبرای تنظیم سطح ثبت وقایع استفاده کنید. ( I76a1f ، b/463460895 ، b/487378441 )
رفع اشکالات
-
Scene.keyEntityاکنون به طور پیشفرض رویmainPanelEntityتنظیم شده است. ( I6a3ef )
نسخه ۱.۰.۰-آلفا۱۳
۲۵ مارس ۲۰۲۶
androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 منتشر شد. نسخه 1.0.0-alpha13 شامل این کامیتها است.
تغییرات API
- پرچم
unscaledGravityAlignedActivitySpaceازSession.createحذف شد.ActivitySpaceاکنون همیشه بدون مقیاس و با گرانش تراز شده است. ( If6f11 ، b/458173423 ) - توابع منسوخ شده
setMaterialOverrideوclearMaterialOverrideازGltfModelEntityکه اکنون درGltfModelNodeفراخوانی میشوند، حذف شدند. ( I2e5d2 ) -
transformPixelCoordinatesToLocalPositionوtransformNormalizedCoordinatesToLocalPositionبهPanelEntityاضافه شدند و متدهای آزمایشی معادل که به جای موقعیتهایVector3پوزها را برمیگرداندند، حذف شدند. ( Ib6960 ، b/460123106 ، b/458333591 ) - APIهای
GltfAnimationبرای کنترل انیمیشنهای glTF درSceneCoreاضافه شد. ( I2c172 ، b/466065486 ، b/465819070 ، b/465818617 ) - تغییر نام
ScenePose.activitySpacePoseبهScenePose.poseInActivitySpace( I8f175 ، b/427822261 ) - پیادهسازی زمان اجرای پیشبینیشدهی Scenecore اضافه شد ( I9c4ab ، b/476440158 )
- هنگام تغییر اندازهی موجودیت پنل اصلی، ممکن است خود را به مبدا
ActivitySpaceمنتقل کند. هیچ راه حلی جز بازگرداندن پنل به محل اصلی خود به صورت دستی یا برنامهنویسی وجود ندارد. این اشکال در نسخههای آینده برطرف خواهد شد. ( b/489427007 ). - در برخی موارد، ممکن است affordance مربوط به
MovableComponentبرایSurfaceEntityو سایر انواع موجودیتهای غیر Panel ظاهر نشود. تنظیم صریحMovableComponent.sizeباعث ظاهر شدن affordance خواهد شد. این اشکال در نسخه بعدی ( b/490983469 ) برطرف خواهد شد.
نسخه ۱.۰.۰-آلفا۱۲
۲۵ فوریه ۲۰۲۶
androidx.xr.scenecore:scenecore-*:1.0.0-alpha12 منتشر شد. نسخه 1.0.0-alpha12 شامل این کامیتها است.
مشکلات شناخته شده
- موجودات لنگر انداخته شده ممکن است پس از چند ثانیه از موقعیت لنگر انداخته شده خود به مبدا فضای فعالیت منتقل شوند.
- ممکن است برنامهها هنگام ایجاد نمونههای
SurfaceEntityاز کار بیفتند. این مشکل درandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13و نسخههای بعدی حل شده است. برنامههای آسیبدیده باید به آخرین نسخهها بهروزرسانی شوند.
تغییرات API
-
ActivitySpace.addOnSpaceUpdatedListenerوActivitySpace.removeOnSpaceUpdatedListenerبهaddOnOriginChangedListenerوremoveOnOriginChangedListenerتغییر نام دادهاند.AnchorEntity.setOnSpaceUpdatedListenerبهsetOnOriginChangedListenerتغییر نام داده شده است. ( I5d8fb ) - ویژگی نام عمومی به
FakeEntityاضافه شد و نمای آن درFakePanelEntityعمومی شد. ( Ifa1f9 )
رفع اشکالات
- محاسبات تراکم پیکسلی در تصاویر سیستم جدیدتر ( I57d04 ) اصلاح شد.
نسخه ۱.۰.۰-آلفا۱۱
۲۸ ژانویه ۲۰۲۶
androidx.xr.scenecore:scenecore-*:1.0.0-alpha11 منتشر شد. نسخه 1.0.0-alpha11 شامل این کامیتها است.
تغییرات API
- نام
PerceivedResolutionResult.InvalidCameraViewرا بهPerceivedResolutionResult.InvalidRenderViewpointتغییر میدهد، زیرا APIهایgetPerceivedResolutionاکنون به جایCameraViewScenePoseبه APIRenderViewpointبه ARCore متکی هستند. این نام، پیادهسازی جدید را بهتر منعکس میکند. ( I8c967 ، b/446989745 ، b/419311998 ) - متدهای
PanelEntity/SurfaceEntity.getPerceivedResolutionاکنون یکRenderViewpointارائه شده توسط توسعهدهنده را به عنوان آرگومان دریافت میکنند. پیش از این، زمان اجرا به طور دلخواهRenderViewpointمورد استفاده در محاسبه وضوح درک شده را انتخاب میکرد. ( I8c967 ، b/446989745 ، b/419311998 ) -
SpatialUser،ScenePose.HeadوScenePose.CameraViewحذف شدند. عملکرد این APIها توسط APIهایArDeviceوRenderViewpointدر ARCore برای Jetpack XR پوشش داده میشود. برای به دست آوردنScenePoseمربوط به سر یا چشم چپ یا راست کاربر، توسعهدهندگان میتوانندPerceptionSpace.getScenePoseFromPerceptionPoseبا ژست مناسب به دست آمده با استفاده از APIهای ARCore استفاده کنند. ( I2f69c ، b/446989745 )
نسخه ۱.۰.۰-آلفا۱۰
۳ دسامبر ۲۰۲۵
androidx.xr.scenecore:scenecore-*:1.0.0-alpha10 منتشر شد. نسخه 1.0.0-alpha10 شامل این کامیتها است.
تغییرات API
-
transformPixelCoordinatesToPoseوtransformNormalizedCoordinatesToPoseبهPanelEntity( I462b3 ) اضافه شدند. - یک کلاس کمکی، Utils، بر اساس منطق
SceneCore( I570b9 ) بهSceneCoreRuntime اضافه شد.
رفع اشکالات
- مشکل از کار افتادن احتمالی که ممکن بود هنگام از بین رفتن Session و دریافت
SpatialModeChangeEventرخ دهد ( If44e8 ) برطرف شد. - اشکالی که میتوانست باعث شود هنگام خروج یا ورود مجدد به یک فعالیت، یک
IllegalStateExceptionایجاد شود، برطرف شد. ( Ibff1c )
نسخه ۱.۰.۰-آلفا۰۹
۱۹ نوامبر ۲۰۲۵
androidx.xr.scenecore:scenecore-*:1.0.0-alpha09 منتشر شد. نسخه 1.0.0-alpha09 شامل این کامیتها است.
ویژگیهای جدید
- یک API برای بازیابی
ScenePoseاضافه میکند که ترکیب ژست مبدا فضای ادراک و یک ژست نسبت به مبدا فضای ادراک را نشان میدهد. ( I5b50a ) - تابع
getGravityAlignedPoseاضافه شد. پوز همتراز با جاذبه، پیچ و رول چرخش را نادیده میگیرد. ( I5ae21 ) - نوع ثابتهای
AnchorEntity.Stateاز Ints به زیرنوعهای State تغییر یافته است. ( Ib0c49 ) - تابع
getChildren()به رابط Entity اضافه شد. چرخه حیاتMainPanelEntityبهروزرسانی شد. ( Ia69d6 )
تغییرات API
- نوع ثابت
PointerCaptureComponent.PointerCaptureStateاز Ints به زیرنوعPointerCaptureStateتغییر یافته است. ( Ic888a ) -
Scene.spatialCapabilitiesاکنون به جای یک فیلد Int، از نوعSet<SpatialCapability>است. ثابتهایSpatialCapabilityتغییر نام دادهاند. ( I9c109 ) - انواع ثابت
SurfaceEntityتغییر نام داده و از Ints به زیرگروههایSurfaceEntityتغییر یافتهاند. ( ویرایش I419 ) - انواع ثابت
SpatializerConstantتغییر نام داده و از Ints به زیرنوعهایSpatializerConstantتغییر یافتهاند. ( Ia0e18 ) - انواع ثابت
TextureSamplerتغییر نام داده و از Ints به زیرگروههایTextureSamplerتغییر یافتهاند. ( I44078 ) - نوع ثابتهای
SpatialVisibilityاز Ints به زیرنوعهایSpatialVisibilityتغییر یافته است. ( I70739 ) - نوع ثابتهای
ResizeEvent.ResizeStateتغییر نام داده و از Ints به زیرنوعهایResizeStateتغییر یافتهاند. ( I384d5 ) - نوع ثابتهای
InputEventتغییر نام داده و از Ints به ارثبری از نوع دربرگیرنده مربوطه تغییر یافتهاند. ( I82817 ) - نوع ثابتهای
GltfModelEntity.AnimationStateاز Ints به زیرنوعهایAnimationStateتغییر یافته است. ( I24f4e ) - نوع ثابتهای
AlphaModeتغییر نام داده و از Ints به زیرنوعهایAlphaModeتغییر یافتهاند. ( I27b56 ) - انواع ثابتهای
Spaceاز Ints به زیرنوعهای Space تغییر یافتهاند. ( I9255b ) -
ScenePose.hitTestو متدهای مرتبط، اکنون در صورت عدم یافتن تقاطع، به جایHitTestResultباhitPositionتهی،nullتهی (null) را برمیگردانند.HitTestResult.hitPositionدیگر قابل تهیسازی نیست. ( I1400a ) - ارجاعهای
ActivityPoseبهScenePoseتغییر یافت. ( I7fe43 )
نسخه ۱.۰.۰-آلفا۰۸
۲۲ اکتبر ۲۰۲۵
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 will now work on panel entities without embedded activities. For backhandling to work you need to specify
android:enableOnBackInvokedCallback= "true"in the android manifest. -
StereoSurfaceEntitynow supports MV-HEVC playback through two newStereoModevalues: MULTIVIEW_LEFT_PRIMARY and MULTIVIEW_RIGHT_PRIMARY. -
PanelEntity.setSizeandPanelEntity.getSizenow return sizes in parent space. -
Entity.setPose,Entity.getPose,Entity.setScale,Entity.getScale,Entity.setAlphaandEntity.getAlphanow take a new paramrelativeTo, which allows get/set values relative to different spaces. The supported values are Parent, Activity and Real World spaces, and the default value for this param is Parent. - Spatial Visibility Callback extension methods added to
SessionExt.ktto monitor when the scene content moves inside or outside the user's field of view. -
setPointSourceParamshas been added toSpatialAudioTrack, allowing the params to be updated after the track has been built. - Added a new class, Scene, with references to
ScenecoreAPIs. Scene will be accessible as an extension property of Session. Functions inside ofSessionExthave been moved to Scene so imports will be need to be adjusted; for example,SessionExt.getScene(session).addSpatialCapababilitiesChangedListenerversusSessionExt.addSpatialCapabilitiesChangedListener. -
ActivityPose.hitTestAsyncwas added, enabling ahitTestagainst virtual content. - Added new Component type
SpatialPointerComponent, allowing clients to specify the icon rendered for the pointer, or to disable the icon. This Component can currently be attached toPanelEntityinstances only. - Introducing new
PanelEntityfactory, which takes panel dimensions in either meters or pixels. OlderPanelEntityfactory taking two Dimension type params for panel removed.
تغییرات API
- Removed
RequiresApi(34)restriction on all Jetpack XR packages. This restriction was redundant as Jetpack XR is currently only available on devices with API level 34+. ( Iae0f8 ) - پروژههای منتشر شده با کاتلین ۲.۰ برای استفاده به KGP 2.0.0 یا جدیدتر نیاز دارند ( Idb6b5 )
-
PermissionHelperclass has been removed. -
PanelEntity.getPixelDensityis deprecated. -
PanelEntity.setPixelDimensionsandPanelEntity.getPixelDimensionare removed, replaced bysetSizeInPixelsandgetSizeInPixels. -
Entity.getActivitySpaceAlpharemoved. Can be replaced withEntity.getAlpha(Space.Activity). -
Entity.getWorldSpaceScaleremoved. Can be replaced withEntity.getScale(Space.REAL\_WORLD). - The Session class in
SceneCorehas been deleted in favor of the Session in XR Runtime. -
StereoSurfaceEntityhas been renamed toSurfaceEntity. -
Entity.setSizeandEntity.getSizeare removed, and the same methods were added toPanelEntity. -
PointSourceAttributeshas been renamed toPointSourceParams. -
SpatializerConstants.SOURCE\_TYPE\_BYPASShas been renamed toSpatializerConstants.SOURCE\_TYPE\_DEFAULT. -
PointSourceParamsentity has been modified from public to internal access. -
AnchorEntity.createnow requiresPlaneTrackingModeto be configured inSession.configure(). -
SpatialUserAPIs now requireHeadTrackingModeto be configured inSession.configure(). - When
ResizableComponentis not attached, it will give INFO-level log instead of ERROR-level log. - Fov class is now a regular Kotlin class.
- Split
Entity.ktto place each concrete entity type into its own file. - When creating a new
PanelEntity, most Views will be reparented to aFrameLayout. This facilitates the use ofLayoutInspectorwith Spatial Panels. - The currently used
XrExtensionsinstance is now registered with the platform, in a best effort way, to help with app debugging.
رفع اشکالات
- A fix was added to prevent a crash that could occur when a
PanelEntitywithMovableComponentandAnchorPlacementwas moved - Fixed an issue where
ResizableComponentwas providing stale sizes inonResizeStartcallback. - Fixed crash when
JxrPlatformAdapterAxr'sdispose()was called multiple times.
نسخه ۱.۰.۰-آلفا۰۳
۲۶ فوریه ۲۰۲۵
androidx.xr.scenecore:scenecore:1.0.0-alpha03 and androidx.xr.scenecore:scenecore-testing:1.0.0-alpha03 are released. Version 1.0.0-alpha03 contains these commits .
ویژگیهای جدید
- Proguard minification is now supported for Jetpack XR code
رفع اشکالات
- Additional fixes to support Proguard minification for Jetpack XR SceneCore ( I4f47e )
- Updated Jetpack XR Scenecore
ProGuardrule to preventAbstractMethodErrorfor minified clients. ( I91a01 )
نسخه ۱.۰.۰-آلفا۰۲
۱۲ فوریه ۲۰۲۵
androidx.xr.scenecore:scenecore:1.0.0-alpha02 and androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02 are released. Version 1.0.0-alpha02 contains these commits .
Upcoming breaking change affecting apps built before 1.0.0-alpha02
- Factory methods have been moved from the
Sessionclass to a companion method on each respective type:-
Session.createActivityPanelEntity(Dimensions, String, Activity, Pose)has been deleted and replaced withActivityPanelEntity.create(Session, Dimensions, String, Pose) -
Session.createAnchorEntity(Anchor)has been deleted and replaced withAnchorEntity.create(Session, Anchor) -
Session.createAnchorEntity(Dimensions, Int, Int, Duration)has been deleted and replaced withAnchorEntity.create(Session, Dimensions, Int, Int, Duration) -
Session.createEntity(String, Pose)has been deleted and replaced withContentlessEntity.create(Session, String, Pose) -
Session.createExrImageResource(String)has been deleted and replaced withExrImage.create(Session, String) -
Session.createGltfEntity(GltfModel, Pose)has been deleted and replaced withGltfModelEntity.create(Session, GltfModel, Pose) -
Session.createGltfModelResource(String)has been deleted and replaced withGltfModel.create(Session, String) -
Session.createInteractableComponent(Executor, InputEventListener)has been deleted and replaced withInteractableComponent.create(Session, Executor, InputEventListener) -
Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean)has been deleted and replaced withMovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean) -
Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose)has been deleted and replaced withPanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose) -
Session.createResizableComponent(Dimensions, Dimensions)has been deleted and replaced withResizableComponent.create(Session, Dimensions, Dimensions) -
Session.createStereoSurfaceEntity(Int, Dimensions, Pose)has been deleted and replaced withStereoSurface.create(Session, Int, Dimensions, Pose)
-
- The following deprecated methods were removed:
-
Session.canEmbedActivityPanel(Activity)has been deleted. UsegetSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY)instead. -
Session.hasSpatialCapability(Int)has been deleted. It has been replaced in favor of usinggetSpatialCapabilities().hasCapability()as a more compartmentalized way to check for the presence of spatial capabilities sincegetSpatialCapabilities()returns aSpatialCapabilitiesobject. -
Session.requestFullSpaceMode()has been deleted and replaced withSpatialEnvironment.requestFullSpaceMode() -
Session.requestHomeSpaceMode()has been deleted and replaced withSpatialEnvironment.requestHomeSpaceMode()
-
-
Session.setFullSpaceMode(Bundle)andSession.setFullSpaceModeWithEnvironmentInherited(Bundle)have been moved to extension functions. Developer files will need to add the new imports for access:-
import androidx.xr.scenecore.setFullSpaceMode -
import androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
-
-
Session.setPreferredAspectRatio(Activity, Float)has been moved to an extension function. Developer files will need to add the new import for access:-
import androidx.xr.scenecore.setPreferredAspectRatio
-
-
Session.getEntitiesOfType(Class<out T>)andSession.getEntityForRtEntity(RtEntity)have been moved to extension functions. Developer files will need to add the new imports for access:-
import androidx.xr.scenecore.getEntitiesOfType -
import androidx.xr.scenecore.getEntityForRtEntity
-
-
Session.unpersistAnchor(Anchor)has been deleted -
Session.createPersistedAnchorEntity(UUID)has been deleted
مشکلات شناخته شده
-
PanelEntity.setCornerRadius()andActivityPanelEntity.setCornerRadius()may not take effect until the panel is next moved, this can be mitigated by moving the panel to its current position - When
BoundsChangedis called on theActivitySpace, someActivityPoses may not have been correctly updated. It will be updated on the followingOnSpaceUpdatedcall on theActivitySpace
Breaking & behavioral changes
-
PanelEntityandActivityPanelEntitywill have a default corner radius of 32dp or smaller if the panel has a width or height smaller than 32dp
New APIs and capabilities
- Introduces
StereoSurface.CanvasShape, which allows for the creation ofSphericalandHemisphericalcanvases for rendering immersive media. -
StereoSurfaceEntity.create()now accepts aCanvasShapeparameter. (This parameter is currently ignored, but will be used in a future release) -
StereoSurfaceEntity.create()no longer takes aDimensionsparameter. Applications should control the size of the canvas through setting theCanvasShape -
StereoSurfaceEntityhas aCanvasShapemember which can be set dynamically. -
StereoSurfaceEntity.dimensionsis now a read-only property; applications should set theCanvasShapeto change dimensions. -
StereoSurfaceEntitynow allows theStereoModeto be re-set after construction.
تغییرات دیگر
- Reduced compile-time minSDK to 24. All Jetpack XR APIs continue to require API 34 at runtime.
-
SceneCore's Session factory (Session.create) no longer launches an intent to acquire theSCENE_UNDERSTANDINGpermission. Instead, the client application must explicitly request the permissions from the user, before attempting to create the anchors. Anchor creation will fail if the permission is not granted by the user.
رفع اشکالات
-
getActivitySpacePose()has been fixed to account for theActivitySpacescale by returning translation values in scaled meters rather than always returning non-scaled meters.transformPoseTonow also uses the right units to compute coordinate changes when theActivitySpaceis involved in the source or destination. - The skybox will now be set to an all-black skybox whenever a null skybox preference is passed using
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom)). To revert to the system default skybox and geometry, usesetSpatialEnvironmentPreference(null).
نسخه ۱.۰.۰-آلفا۰۱
۱۲ دسامبر ۲۰۲۴
androidx.xr.scenecore:scenecore-* 1.0.0-alpha01 is released.
Features of Initial Release Initial developer release of Jetpack SceneCore, a 3D scene graph library for creating and manipulating immersive scenes and environments. This library allows you to place and arrange 3D models and content panels relative to each other and your virtual or real-world environments.
- SpatialEnvironment : Create fully immersive experiences with a skybox image and/or 3D model geometry as the backdrop for your XR scene of your environment. Or enable passthrough, so your virtual scene can integrate with the user's real-world environment.
- PanelEntity : Add 2D content to your 3D scenes by embedding standard Android layouts and Activities into spatialized panels that can float or be anchored to real-world surfaces.
- GltfModelEntity : Place, animate, and interact with 3D models in your scene. SceneCore supports the glTF file format for ease of integration with existing models.
- SpatialAudio : Add ambient and point audio sources into your 3D scene for fully immersive, spatialized sound.
- StereoSurfaceEntity : SceneCore supports left/right eye routing of content rendered onto an Android Surface. This can be used to render stereoscopic content in a side-by-side or top-bottom format, such as stereo photos, 3D video, or other dynamically rendered UIs. Applications should use MediaPlayer or ExoPlayer for video decoding.
- Component System: SceneCore offers a robust and flexible component system for adding capabilities to your XR content, including affordances for users to move, resize, and interact with models and panels.
- Anchor : With passthrough enabled, you can attach panels and models to actual surfaces, giving users seamless integration of virtual content in their real-world environment.
- User Pose: Access the user's location in the virtual scene, to orient your content around the user's position.
- SpatialCapabilities : Build fully adaptive apps that take advantage of spatialized capabilities when available, such as 3D positioning of UI content. Not only that, but your app can monitor for changes to capabilities while the app is executing, to modify the experience based on how the user is using their Android XR device.
مشکلات شناخته شده
- Currently a minSDK of 30 is required to use Jetpack SceneCore. As a workaround add the following manifest entry
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>to be able to build and run with a minSDK of 23. - Session can become invalid in various situations that automatically recreate the Activity, including resizing a main panel, connecting peripherals, and changing between light and dark mode. If you encounter session invalidation issues, workarounds include making you main panel non-resizable, using a dynamic panel entity, disabling activity recreation for specific config changes or disabling light/dark mode theme changes.
- Movable and Resizable components are not supported on GltfEntity.
- Entity.getSize() is not supported on GltfEntity.
- Jetpack XR apps required to request
android.permission.SCENE_UNDERSTANDINGpermission in AndroidManifest. - Creating a session is only supported on an Android XR device. At this time, if you create a Session and try to use it on a non Android XR device, you'll get a RuntimeException.
- Setting the skybox to null via `SpatialEnvironment.setSpatialEnvironmentPreference() does not result in a solid black skybox as documented. It may result in the system default skybox or no change to the current skybox.
- SceneCore clients should add
implementation(“com.google.guava:listenablefuture-1.0”)to their Gradle configuration for their app's dependencies. In a future release, scenecore will include this library as anapidependency so clients will not need to explicitly declare it. - SceneCore erroneously includes
com.google.guava:guava-31.1-androidandcom.google.protobuf:protobuf-javaliteas transitive dependencies. If this results in duplicate class errors in your build, these two dependencies can be safely excluded. - If your app uses SceneCore and enables ProGuard, it will crash when you create a Session. As a workaround, disable ProGuard. See this guide for more information on how to enable ProGuard.