Jetpack SceneCore
| جدیدترین بهروزرسانی | نسخه پایدار | نامزد انتشار | انتشار نسخه بتا | نسخه آلفا |
|---|---|---|---|---|
| ۷ اکتبر ۲۰۲۶ | - | 1.0.0-rc02 | - | - |
اعلام وابستگیها
برای افزودن وابستگی به XR SceneCore، باید مخزن Google Maven را به پروژهتان اضافه کنید. برای اطلاعات بیشتر، مخزن Maven در Google را بخوانید.
وابستگیهای آرتیفکتهای موردنیازتان را در فایل build.gradle برای برنامه یا واحدتان اضافه کنید:
شیار
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-rc01" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-rc01" }
کاتلین
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-rc01") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-rc01") }
برای اطلاعات بیشتر درباره وابستگیها، افزودن وابستگیهای ساخت را ببینید.
بازخورد
بازخوردتان به بهبود Jetpack کمک میکند. اگر مشکلات جدیدی پیدا کردید یا ایدههایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبلاز ایجاد کتابخانه جدید، مشکلات موجود در این کتابخانه را بررسی کنید. با کلیک کردن روی دکمه ستاره میتوانید رأی خود را به یک مشکل موجود اضافه کنید.
برای کسب اطلاعات بیشتر، به مستندات «پیگیری مسائل» مراجعه کنید.
نسخه 1.0
نسخه 1.0.0-rc02
۷ اکتبر ۲۰۲۶
androidx.xr.scenecore:scenecore-*:1.0.0-rc02 منتشر شد. نسخه 1.0.0-rc02 شامل این تعهدات است.
رفع اشکالها
- با برداشتن
perceptionRuntimeCacheدرSessionExtو بازسازی آن برای بازیابی مستقیمPerceptionRuntimeاز نمونهSession، نشت احتمالی حافظه را برطرف کردیم. (Ie35b1) - بااستفاده از
applicationContextبرایOpenXRکنترلگر بومی، نشت احتمالی زمینه را برطرف کردیم تا مطمئن شویم زمان اجرای بومی به زمینهActivityارجاع نمیدهد. (Ie35b1) - با معرفی همگامسازی مناسب و قفل کردن مقدار اولیه، شرایط مسابقه در
XrInstanceManagerرا اصلاح کردیم. (Ie35b1) ReferenceCleanerبرای پشتیبانی از لغو ثبت کنشهای پاکسازی اصلاح شد و اطمینان حاصل شد که کنشهای پاکسازیEntityبهطور صریح درطولdispose()اجرا میشوند و از اجرای تکراری هنگام جمعآوری دادههای نامعتبر جلوگیری میشود. (Ie35b1)- با برداشتن
sceneCacheدرSessionExtو بازسازیSceneبرای واکشی مستقیم نمونه ازsessionConnectors، نشت حافظه درSceneرا برطرف کردیم. (Ie35b1)
نسخه 1.0.0-rc01
۹ سپتامبر ۲۰۲۶
androidx.xr.scenecore:scenecore-*:1.0.0-rc01 منتشر شد. نسخه 1.0.0-rc01 شامل این تعهدها است.
تغییرات میانای برنامهسازی کاربردی
-
xr:scenecore:scenecore-openxrکتابخانه اضافه شد. (Ic49f2) - چندین API منسوخشده را پیشاز انتشار پایدار نسخه ۱.۰.۰ برداشتیم.
رفع اشکالها
- اشکال نشت حافظه که در آن مرجع «فعالیت» میتوانست هنگام ازبین رفتن «فعالیت» توسط سیستم حفظ شود برطرف شد. (I6dcd7)
تغییرات رفتار
- برونداد logcat از SceneCore برداشته شد. (I10c3c)
نسخه 1.0.0-beta02
۱۲ اوت ۲۰۲۶
androidx.xr.scenecore:scenecore-*:1.0.0-beta02 منتشر شد. نسخه 1.0.0-beta02 شامل این تعهدها است.
رفع اشکالها
- اگر نهاد والد جمعآوری زباله شده باشد،
toMoveEvent()مقدارnullرا برمیگرداند. (Ia7a1b)
نسخه 1.0.0-beta01
۱۵ ژوئیه ۲۰۲۶
androidx.xr.scenecore:scenecore-*:1.0.0-beta01 منتشر شد. نسخه 1.0.0-beta01 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
-
GltfAnimationوSpatialGltfModelAnimationمیانای برنامهسازی کاربردی بهعنوان آزمایشی علامتگذاری شدهاند. برخیاز داراییها به دریافتکننده تبدیل شدند. (I8d689، b/524771027) - روش کارخانه عمومی
MovableComponent.createTrackingMovableبرداشته شد. (I00912، b/477169015) - Session.create به تابع تعلیق تبدیل شد. (I5d27f)
-
ActivitySpaceوAnchorSpaceاکنون کلاسSpaceEntityمشترکی را گسترش میدهند که حاوی رفتار مشترک برای نهادهایی است که موقعیتهایشان توسط سیستم کنترل میشود (I506ec، b/513619219) -
AnchorEntityبهروز شد تاAnchorSpaceنامیده شود (Ifa95e، b/513619219) - میانای برنامهسازی کاربردی آزمایش عمومی
SoundEffectPoolComponentTesterرا ارائه میدهد. (I87df7, b/498104417) - پارامتر اختیاری
cornerRadiusبه سازندهSurfaceEntity.Shape.Quadاضافه شد و داراییcornerRadiusعمومی شد. توسعهدهندگان اکنون میتوانند هنگام ایجاد شکل «چهارگوش» شعاع گوشه را مشخص کنند تاSurfaceEntityبوم با گوشههای گرد ارائه شود و شعاع «چهارگوشهای» موجود را پُرسمان کنند. (Ia7809، b/474681085) - میانای برنامهسازی کاربردی عمومی آزمایشی
SpatialAudioTrackBuilderTester،SpatialAudioTrackTester، وSceneCoreTestRule.getTesterرا ارائه میدهد. (I378c6، b/496333938) - برای تعدادی از انواع ARCore، جایگزینهای تخصصی
toString()را اضافه کنید. این نوعها برای ارائه اطلاعات بیشتر به توسعهدهندگان برای اهداف اشکالزدایی درنظر گرفته شدهاند و برای استفاده در برنامههای تولید یا ارسالشده درنظر گرفته نشدهاند.
نسخه 1.0.0-alpha16
۱۷ ژوئن ۲۰۲۶
androidx.xr.scenecore:scenecore-*:1.0.0-alpha16 منتشر شد. نسخه 1.0.0-alpha16 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- سربارها را برای
addVertexData،setIndexData، وaddSubsetبهCustomMesh.BuilderFromMeshDataوCustomMesh.BuilderFromMeshBufferاضافه کرد. این سربارها به توسعهدهندگان اجازه میدهند دادههای خام و پارامترها را مستقیماً (برای نمونه،ByteBuffer،offset،size،topology،indexOffset،indexCount) بدون نیاز به پیچیدن آنها در اشیای واسطه مانندByteBufferRegionیاMeshSubsetارسال کنند. (I84d5c) - نام
Scene.requestFullSpaceMode()وScene.requestHomeSpaceMode()بهrequestFullSpace()وrequestHomeSpace()تغییر کرده است. سایر روشها و اسناد مربوط به «حالت فضای خانه» و «حالت کل فضا» نیز بهطور مشابه بهروز شدهاند. (I45751) - میانای برنامهسازی کاربردی آزمایش عمومی
PanelEntityTesterوMainPanelEntityTesterرا ارائه میدهد (I961e4) - درحال افزودن
pointSourceParamsدارایی بهSoundEffectPoolComponent(I4a750) - میانای برنامهسازی کاربردی آزمایشی عمومی
MovableComponentTesterرا ارائه میدهد (I0c972) - میانای برنامهسازی کاربردی آزمایشی عمومی
PointerCaptureComponentTesterرا ارائه میدهد (Ic0d4f) - میانای برنامهسازی کاربردی آزمایش عمومی
ActivityPanelEntityTesterرا ارائه میدهد (I837c4) - API آزمایش عمومی
ResizableComponentTester(I0a3a4) را ارائه میدهد - API آزمایشی عمومی
BoundsComponentTester.(Iefd53) را ارائه میدهد - میانای برنامهسازی کاربردی آزمایش عمومی
SpatialMediaPlayerTester(Ia3e09) را ارائه میدهد - میانای برنامهسازی کاربردی آزمایش عمومی
SpatialEnvironmentTester(Icf60f) را ارائه میدهد - میانای برنامهسازی کاربردی آزمایش عمومی
GltfModelTesterوSceneCoreTestRule.getGltfModelTesterرا ارائه میدهد. (I33fcb) - میانای برنامهسازی کاربردی آزمایش عمومی
InteractableComponentTesterرا ارائه میدهد. (Ia7096) - میانای برنامهسازی کاربردی آزمایش عمومی
SurfaceEntityTesterرا ارائه میدهد. (Ic0740) - میانای برنامهسازی کاربردی عمومی آزمایشی
GltfModelEntityTester،TestGltfModelNode، وTestGltfAnimationرا ارائه میدهد. (I72c4d) - میانای برنامهسازی کاربردی آزمایش عمومی
SceneTesterوSceneCoreTestRule.sceneTesterرا ارائه میدهد. (Ib4ec5) - میانای برنامهسازی کاربردی آزمایش عمومی
PerceptionSpaceTesterوSceneCoreTestRule.perceptionSpaceTesterرا ارائه میدهد. (Icf739) - میانای برنامهسازی کاربردی آزمایش عمومی
MeshEntityTesterرا ارائه میدهد. (I63801) - میانای برنامهسازی کاربردی آزمایش عمومی
ImageBasedLightingAssetTesterوSceneCoreTestRule.getTesterسربار را ارائه میدهد. (I57ec4) - میانای برنامهسازی کاربردی آزمایش عمومی
TextureTester(Ia865b) را ارائه میدهد - API آزمایش عمومی
PositionalAudioComponentTester(Icd96e) را ارائه میدهد - میانای برنامهسازی کاربردی آزمایش عمومی
SpatialSoundPoolTester(Ia3531) را ارائه میدهد - میانای برنامهسازی کاربردی عمومی آزمایشی
SoundEffectPoolTester(If349a) را ارائه میدهد - میانای برنامهسازی کاربردی آزمایش عمومی
ActivitySpaceTesterوSceneCoreTestRule.activitySpaceTesterرا ارائه میدهد. (I2d5c2) - API آزمایش عمومی
SpatialWindowTesterرا ارائه میدهد (I41837) - میانای برنامهسازی کاربردی آزمایشی عمومی
AnchorEntityTesterرا ارائه میدهد (I68404) - واسط API آزمایش عمومی
SceneCoreTestRuleرا ارائه میدهد. (Ic72d3) - کلاس
PixelDensityاضافه شد و ازطریقScene#virtualPixelDensityآشکار شد تا نسبت پیکسل در متر مبتنی بر سختافزار برای نگاشت دقیق ابعاد فیزیکی درActivitySpaceارائه دهد. (I0e3ac) - میاناهای برنامهسازی کاربردی عمومی برای ایجاد و ارائه «مشهای سفارشی» اضافه شد. (I7ad2f)
-
VertexLayoutAPI بهروز شده است تا از فهرستVertexBufferLayoutاستفاده کند، که در آن هرVertexBufferLayoutمشخصههای درون یک بافر رأس را توصیف میکند. این کار امکان چیدمان انعطافپذیرتر دادههای رأس را فراهم میکند، ازجمله ویژگیهای درهمآمیخته با گامها و جبرانهای سفارشی. (Ic426b) -
MovableComponent.createTrackingMovableرا برای تبدیل کردن «قابل ردیابی ARCore» به ژست نسبی «فضای فعالیت» ارائه میدهد. (I12249) - مقدار پیشفرض برای ولی در
Entity.createبه null بهروزرسانی شده است. (Ic3145) -
Entityبهروزرسانی شد تا بهجای میانای کلاس باشد و اکنون کلاس پایه برای همه انواع «نهاد» است. بهعنوان بخشی از این تغییر،BaseEntityبرداشته شد. (I7fbc9) -
GltfModel،ExrImage، وImageBasedLightingAssetاکنونAutoCloseableرا پیادهسازی میکنند تا مدیریت منابع اصطلاحی بااستفاده از بلوکuseدر Kotlin امکانپذیر شود. (I1ac79) - کلاس
ImageBasedLightingAssetبرای جایگزینیExrImageبرای تعریف نورپردازی محیط فضایی معرفی شد. ExrImageمنسوخ شده است و از API عمومی برداشته شده است. SpatialEnvironmentPreferenceبهروز شده است تا ازImageBasedLightingAssetاستفاده کند. (I6c92a) - پارامتر
skyboxدرSpatialEnvironmentبهimageBasedLightingAssetتغییر نام داد تا هدف آن بهتر منعکس شود، و توضیح داد که بافتهای آسماننمای دیداری باید در پارامتر هندسه گنجانده شود. (I24d4a) - اکنون نهادهای فضایی از تراکم دستگاه پایدار برای محاسبات پیکسل به متر در سطوح «میانای برنامهسازی کاربردی فضایی» ۱ و ۲ استفاده میکنند و بدین ترتیب اندازه ثابت بدون درنظر گرفتن تغییرات تراکم نمایشگر سیستم تضمین میشود. (I37051)
نسخه 1.0.0-alpha15
۱۹ مه ۲۰۲۶
androidx.xr.scenecore:scenecore-*:1.0.0-alpha15 منتشر شد. نسخه 1.0.0-alpha15 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
-
Entity.dispose()اکنون بهعنوان «میانای برنامهسازی کاربردی» عمومی برداشته شده است. برنامهها بهجای فراخوانیdispose()در نمونههای «نهاد»، میتوانند با تنظیمparentرویnullو پاک کردن هرگونه مرجع قوی به آن نمونهها، نمونهها را پاکشدنی کنند. (I396c9) - روشهای
set/clearOnLoadCompleteListenerمتعلق بهSoundEffectPoolحذف شده است. درعوض ازadd/removeLoadCompleteListenerاستفاده کنید. (Iae78d) -
set/clearSpatialVisibilityChangedListenerصحنه باadd/removeSpatialVisibilityChangedListenerجایگزین شد. (I67dff) - همه روشهای SceneCore
add/removeOnFooListenerبهadd/removeFooListenerتغییر نام دادهاند وOnاز نام برداشته شده است. (Ibe50b) - روشهای
AnchorEntity.setOnOriginChangedListenerوAnchorEntity.setOnStateChangedListenerبا روشهایadd/removeFooListenerجایگزین شدهاند تا از چندین «شنونده» همزمان پشتیبانی کنند. (I13749) - نام
AnchorEntity.State.TIMEDOUTبهState.TIMED_OUTتغییر کرد. (Id2b8d) - «میانای برنامهسازی کاربردی مؤلفه» برای بهبود ایمنی و توسعهپذیری بازسازی شده است.
Componentاکنون یک کلاس انتزاعی است. روشهایonAttach()وonDetach()اکنونprotectedهستند تا از تماسهای مستقیم جلوگیری شود. لطفاً ازEntity.addComponent()وEntity.removeComponent()برای مدیریت چرخه عمر مؤلفه استفاده کنید. (Id04e8) - ثابتهای
PlaneSemanticTypePlaneOrientationدر SceneCore از نوع Int به انواع سفارشی انتقال یافته است. ثابتهایANYآنها برداشته خواهد شد، مشتریان باید بهجای آن همه ثابتهای موردنظر را بهطور صریح فهرست کنند، یا از ثابتهای «مجموعه» تغییرناپذیر.ALLجدید استفاده کنند. روش کارخانهایAnchorEntityاکنون بهجای مقدار واحد، «مجموعهای» از این نوعها را میپذیرد. (Ib1033) - پشتیبانی از پویانمایی استخوانی (پوستگذاری) به Custom Mesh API آزمایشی اضافه شد. توسعهدهندگان اکنون میتوانند با مشخص کردن
boneCountهنگام ایجادMeshEntityو بهروزرسانی پویانمایی در زمان واقعی بااستفاده ازMeshEntity.setBoneTransforms()، مشهای سفارشی را پویانمایی کنند. (Id8ba2, b/496692490) -
CustomMeshAPI آزمایشی معرفی شد. توسعهدهندگان اکنون میتوانند بااستفاده از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تماس نگیرید یا عناصر صدای فراگیر را پیوست/جدا نکنید. این مشکل در نسخه پخش بعدی برطرف خواهد شد.
نسخه 1.0.0-alpha14
۶ مه ۲۰۲۶
androidx.xr.scenecore:scenecore-*:1.0.0-alpha14 منتشر شد. نسخه 1.0.0-alpha14 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
-
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()تغییر کرد. دارایی ژست اکنون منسوخ شده است. (I329b4، b/493383490) - نام
HandJointTypeمقدار شمارشی تغییر کرد. (Ifbc83، b/482670596) -
Component.onAttachوonDetachرا بهعنوان میانای برنامهسازی کاربردی عمومی آشکار کنید تا پیادهسازیهای سفارشیComponentامکانپذیر شود. (I0ca1f) - درحال افزودن عناصر صدای فراگیر (I39ddd، b/489421980، b/436642086، b/436642499)
- برداشتن «نهاد» از
PointSourceParams. درعوض، «نهاد» مستقیماً با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.createرا فراخوانی کنید که رابط «نهاد» را برمیگرداند. (I4c450، b/473867483) -
XrLogAPI اضافه شد. برای فعال کردن گزارشگیری در JetpackXR، مقدارXrLog.isEnabledرا رویtrueتنظیم کنید و ازXrLog.Levelبرای تنظیم سطح گزارش استفاده کنید. (I76a1f، b/463460895، b/487378441)
رفع اشکالها
-
Scene.keyEntityاکنون بهطور پیشفرض رویmainPanelEntityتنظیم میشود. (I6a3ef)
نسخه 1.0.0-alpha13
۲۵ مارس ۲۰۲۶
androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 منتشر شد. نسخه 1.0.0-alpha13 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- پرچم
unscaledGravityAlignedActivitySpaceازSession.createبرداشته شد. ActivitySpaceاکنون همیشه بدون مقیاس و همراستا با جاذبه است. (If6f11، b/458173423) - عملکردهای منسوخشده
setMaterialOverrideوclearMaterialOverrideرا ازGltfModelEntityبرداشتیم که اکنون درGltfModelNodeجداگانه فراخوانده میشوند. (I2e5d2) -
transformPixelCoordinatesToLocalPositionوtransformNormalizedCoordinatesToLocalPositionبهPanelEntityاضافه شد و روشهای آزمایشی معادل که قبلاً بهجای موقعیتهایVector3ژست برمیگرداندند برداشته شدند. (Ib6960، b/460123106، b/458333591) -
GltfAnimationAPI برای کنترل پویانماییهای glTF درSceneCoreاضافه شد. (I2c172، b/466065486، b/465819070، b/465818617) - نام
ScenePose.activitySpacePoseبهScenePose.poseInActivitySpaceتغییر کرد (I8f175، b/427822261) - پیادهسازی زمان اجرای پیشبینیشده Scenecore اضافه شد (I9c4ab، b/476440158)
- هنگام تغییر اندازه نهاد پانل اصلی، ممکن است به مبدأ
ActivitySpaceتغییر موقعیت دهد. هیچ راهکاری بهجز تغییر دستی یا برنامهریزیشده موقعیت پانل به مکان اصلی آن وجود ندارد. این اشکال در نسخهٔ پخش بعدی برطرف خواهد شد. (b/489427007). - در برخی موارد، امکان
MovableComponentممکن است برایSurfaceEntityو دیگر انواع نهاد غیر «پانل» نشان داده نشود. تنظیم صریحMovableComponent.sizeباعث میشود که این امکان ظاهر شود. این اشکال در نسخهٔ پخش بعدی برطرف خواهد شد (b/490983469).
نسخه 1.0.0-alpha12
۲۵ فوریه ۲۰۲۶
androidx.xr.scenecore:scenecore-*:1.0.0-alpha12 منتشر شد. نسخه 1.0.0-alpha12 شامل این تعهدات است.
مشکلات شناختهشده
- نهادهای ثابت ممکن است پساز چند ثانیه از موقعیت ثابت خود به مبدأ فضای فعالیت بروند.
- هنگام ایجاد
SurfaceEntityنمونه، ممکن است برنامهها ازکار بیفتند. این مشکل درandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13و نسخههای پخش بعدی برطرف شده است. برنامههای تحتتأثیر باید به جدیدترین نسخهها بهروزرسانی شوند.
تغییرات میانای برنامهسازی کاربردی
- نام
ActivitySpace.addOnSpaceUpdatedListenerوActivitySpace.removeOnSpaceUpdatedListenerبهaddOnOriginChangedListenerوremoveOnOriginChangedListenerتغییر کرد. نامAnchorEntity.setOnSpaceUpdatedListenerبهsetOnOriginChangedListenerتغییر کرد. (I5d8fb) - دارایی نام عمومی به
FakeEntityاضافه شد و نما درFakePanelEntityعمومی شد. (Ifa1f9)
رفع اشکالها
- محاسبات تراکم پیکسل در تصاویر سیستم جدیدتر (I57d04) اصلاح شد
نسخه 1.0.0-alpha11
۲۸ ژانویه ۲۰۲۶
androidx.xr.scenecore:scenecore-*:1.0.0-alpha11 منتشر شد. نسخه 1.0.0-alpha11 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
-
PerceivedResolutionResult.InvalidCameraViewبهPerceivedResolutionResult.InvalidRenderViewpointتغییر نام میدهد زیرا میاناهای برنامهسازی کاربردیgetPerceivedResolutionاکنون بهجایCameraViewScenePoseبه میانای برنامهسازی کاربردیRenderViewpointدر 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با ژست مناسب بهدستآمده بااستفاده از ARCore APIs استفاده کنند. (I2f69c، b/446989745)
نسخه 1.0.0-alpha10
۳ دسامبر ۲۰۲۵
androidx.xr.scenecore:scenecore-*:1.0.0-alpha10 منتشر شد. نسخه 1.0.0-alpha10 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
-
transformPixelCoordinatesToPoseوtransformNormalizedCoordinatesToPoseبهPanelEntity(I462b3) اضافه شدند - کلاس کمکی، Utils، به
SceneCoreRuntime براساس منطق درSceneCoreاضافه شد (I570b9)
رفع اشکالها
- ازکارافتادن احتمالی که ممکن است هنگام ازبین رفتن «جلسه» و دریافت
SpatialModeChangeEventرخ دهد برطرف شد (If44e8) - اشکالی که میتوانست باعث پرتاب شدن
IllegalStateExceptionهنگام خروج یا ورود مجدد به «فعالیت» شود برطرف شد. (Ibff1c)
نسخه 1.0.0-alpha09
۱۹ نوامبر ۲۰۲۵
androidx.xr.scenecore:scenecore-*:1.0.0-alpha09 منتشر شد. نسخه 1.0.0-alpha09 شامل این تغییرات است.
ویژگیهای جدید
- یک API برای بازیابی
ScenePoseاضافه میکند که نشاندهنده ترکیب وضعیت مبدأ فضای ادراک و وضعیتی با توجه به مبدأ فضای ادراک است. (I5b50a) -
getGravityAlignedPoseتابع اضافه شد. ژست ترازشده با جاذبه، «گام» و «غلتش» چرخش را نادیده میگیرد. (I5ae21) -
AnchorEntity.Stateنوع ثابت از «عدد صحیح» به زیرنوعهای «وضعیت» تغییر کرده است. (Ib0c49) -
getChildren()به میانای Entity اضافه شد. چرخه عمرMainPanelEntityبهروزرسانی شد. (Ia69d6)
تغییرات میانای برنامهسازی کاربردی
-
PointerCaptureComponent.PointerCaptureStateنوع ثابت از «عدد صحیح» به زیرنوعهایPointerCaptureStateتغییر کرده است. (Ic888a) -
Scene.spatialCapabilitiesاکنون از نوعSet<SpatialCapability>است بهجای فیلد «عدد صحیح». نام ثابتهایSpatialCapabilityتغییر کرده است. (I9c109) -
SurfaceEntityنوع ثابت تغییر نام داده شده است و از Ints بهSurfaceEntityزیرنوع تغییر کرده است. (I419ed) -
SpatializerConstantنوع ثابت تغییر نام داده شده است و از Ints بهSpatializerConstantزیرنوع تغییر کرده است. (Ia0e18) -
TextureSamplerنوع ثابت تغییر نام داده شده است و از Ints بهTextureSamplerزیرنوع تغییر کرده است. (I44078) -
SpatialVisibilityنوع ثابت از «عدد صحیح» بهSpatialVisibilityنوع فرعی تغییر کرده است. (I70739) -
ResizeEvent.ResizeStateنوع ثابت تغییر نام داده شده است و از Ints به زیرنوعهایResizeStateتغییر کرده است. (I384d5) -
InputEventنوع ثابت تغییر نام داده شده است و از Ints به ارث بردن از نوع محصورکننده مربوطه تغییر کرده است. (I82817) -
GltfModelEntity.AnimationStateنوع ثابت از «عدد صحیح» به زیرنوعهایAnimationStateتغییر کرده است. (I24f4e) -
AlphaModeنوع ثابت تغییر نام داده شده است و از Ints بهAlphaModeزیرنوع تغییر کرده است. (I27b56) -
Spaceنوع ثابت از Ints به زیرنوعهای «فضا» تغییر کرده است. (I9255b) -
ScenePose.hitTestو روشهای مرتبط اکنون درصورت پیدا نشدن تقاطع، بهجایHitTestResultباhitPositionتهی،nullرا برمیگردانند. HitTestResult.hitPositionدیگر نمیتواند تهی باشد. (I1400a) - مرجعهای
ActivityPoseبهScenePoseتغییر کرد. (I7fe43)
نسخه 1.0.0-alpha08
۲۲ اکتبر ۲۰۲۵
androidx.xr.scenecore:scenecore-*:1.0.0-alpha08 منتشر شد. نسخه 1.0.0-alpha08 شامل این تعهدها است.
تغییرات میانای برنامهسازی کاربردی
- نام
ActivityPanelEntity.moveActivityبهtransferActivityتغییر کرد (I273c5، b/430332856)
رفع اشکالها
-
:xr:scenecore:scenecore-spatial-renderingو:xr:scenecore:scenecore-spatial-coreبهعنوان وابستگی پیادهسازی:xr:scenecore:scenecore(I6ab65، b/447000520) اضافه شدند - اگر پساز ازبین رفتن جلسه به
session.sceneدسترسی پیدا شود، استثنایی ایجاد میشود. (I77e6f)
نسخه 1.0.0-alpha07
۲۴ سپتامبر ۲۰۲۵
androidx.xr.scenecore:scenecore:1.0.0-alpha07، androidx.xr.scenecore:scenecore-guava:1.0.0-alpha07، و androidx.xr.scenecore:scenecore-testing:1.0.0-alpha07 منتشر شدند. نسخه 1.0.0-alpha07 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- نام
fixedAspectRatioبهisFixedAspectRatioEnabledتغییر کرد و به دارایی بولی تبدیل شد (I5c4e8، b/440588971) - اکنون
Scenecore«جعلی» در واحدxr:scenecore:scenecore-testingقرار دارد. (Idd951) - نام
shouldAutoHideContentبهisAutoHideContentWhileResizingEnabledوshouldAlwaysShowOverlayبهisAlwaysShowOverlayEnabledتغییر کرد (I97c36، b/432335421) -
SceneCoreثابتTextureSamplerبرای خوانایی بهروزرسانی شد، برای مثالTextureSampler.MinFilter.LINEARاکنونTextureSampler.MIN_FILTER_LINEARاست (Ib159c) - تنظیمکننده
setKeyEntityصحنه در متغیرkeyEntityادغام شده است. تنظیمkeyEntityروی «نهاد» غیرقابلحرکتی مثلAnchorEntityباعث میشودIllegalArgumentExceptionبهجای برگرداندن مقدار بولی نادرست ایجاد شود. (I62080، b/428721695، b/422215745) - متغیر
SpatialModeChangeListenerصحنه باsetSpatialModeChangedListenerجایگزین شد. بهجایSpatialModeChangedListener،Consumer<SpatialModeChangeEvent>را میگیرد. setSpatialModeChangedListenerاکنون میتواند بهصورت اختیاری «مجری» را بپذیرد. (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 منتقل شدند و «جلسه» را بهعنوان پارامتر اول میگیرند (I64a2c، b/437186050) - کارخانه
GroupEntityاکنون بهجای «نهاد»، نوعGroupEntityرا برمیگرداند. (I66042)
رفع اشکالها
- وقتی نمونه نهاد پساز دور انداختن استفاده میشود،
IllegalStateExceptionپرتاب کنید. (I90990، b/427314036، b/432063442)
نسخه 1.0.0-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 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- رفع محدودیت از
BaseEntityوBaseScenePoseمیانای برنامهسازی کاربردیSceneCore(88c0ff6)
نسخه 1.0.0-alpha05
۳۰ ژوئیه ۲۰۲۵
androidx.xr.scenecore:scenecore-guava:1.0.0-alpha05، androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05، و androidx.xr.scenecore:scenecore:1.0.0-alpha05 منتشر شدند. نسخه 1.0.0-alpha05 شامل این تعهدات است.
ویژگیهای جدید
- Perceived Resolution API به «نهادهای پانل» و
SurfaceEntitiesاضافه شد. (I118f6) - روشهای «بازخوانی»
PerceivedResolutionبه Scene.kt اضافه شد تا وضوح درکشده پانل اصلی فعالیت در HSM را پایش کند. (I58084) SurfaceEntity- پشتیبانی از «برنامه» برای درخواست نمونهبرداری ممتاز در زمان ایجاد اضافه شد. این کار به برنامهها اجازه میدهد از فیلتر نمونهبرداری بیشازحد برای ضدعلیگرایی استفاده کنند. (I06913)-
recommendedContentBoxInFullSpaceدارایی بهActivitySpaceاضافه شد. وقتی در «حالت فضای کامل» هستید، چارگوش توصیهشدهای برای قرار دادن محتوا برمیگرداند. (I4cd6f) - سازنده سربارشدهای برای اصلاحگر قابلحرکت ارائه شد که امکان لنگرگذاری را فراهم میکند. (Ic0c70)
تغییرات میانای برنامهسازی کاربردی
برای این نسخه پخش، تغییرات گستردهای در «میانای برنامهسازی کاربردی» 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) - در «نهاد»: موارد زیر به دارایی تغییر کرد:
get/setParent()،setContentDescription؛Entity.is/setHidden()منسوخ شد، بهجای آن ازEntity.is/setEnabledاستفاده کنید. (Ibc4c6) - کلاس
androidx.xr.scenecore.BasePanelEntityبرداشته شد، درعوض مستقیماً ازPanelEntityاستفاده کنید. جایگزین کردن دریافتکنندهها و تنظیمکنندهها برایPanelEntityبا ویژگیها. خصوصیتPanelEntity.sizeازFloat3dSizeبهFloat2dSizeتغییر کرد. روش منسوخشدهandroidx.xr.scenecore.PanelEntity.getPixelDimensionsبرداشته شد، درعوض ازgetSizeInPixelsاستفاده کنید. (Icc174) -
androidx.xr.scenecore.OnSpaceUpdatedListenerباRunnableجایگزین شد. (I19308) -
SpatialUser.getCameraViews()با دارایی جایگزین شد. (Ib0cc5) برایExrImageوGltfModel:createروش تغییر کرد تا تابع تعلیق شود؛ پارامترهای ایجاد اصلاح شد تاUriیاPathرا بهجایStringبپذیرد. (Id8883) (I0d247)، (I25706) -
SpatialEnvironment.requestFullSpaceModeوSpatialEnvironment.requestHomeSpaceModeبه «صحنه» منتقل شد، برای مثال بهجایsession.scene.spatialEnvironment.requestFullSpaceMode()ازsession.scene.requestFullSpaceMode()استفاده کنید. addOnPassthroughOpacityChangedListenerوaddOnSpatialEnvironmentChangedListenerاکنون دارای ملغیکنندههایی هستند که «مجریان» اختیاری را میپذیرند. (I12fe0) (I6b21e) - روشهای منسوخشده
SpatialEnvironmentزیر برداشته شد:togglePassthrough،setPassthrough،setPassthroughOpacity،getPassthroughMode،getPassthroughOpacity،setSkybox، وsetGeometry. همچنین کلاس منسوخشدهSpatialEnvironment.PassthroughMode(I927bd) (I927bd) (I927bd) برداشته شد -
SpatialEnvironmentدریافتکننده و تنظیمکننده زیر با داراییهای Kotlin جایگزین شد:getCurrentPassthroughOpacity()،get/setPassthroughOpacityPreference()،get/setSpatialEnvironmentPreference()،isSpatialEnvironmentPreferenceActive()(I33a7b) (Ie06e2) (Ie06e2) - نوع
SpatialEnvironmentPreference.preferredPassthroughOpacityازFloat?بهFloatتغییر کرد. دیگر مقادیر تهی را نمیپذیرد. بهجای آن، ازSpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCEبرای نشان دادن اینکه اولویتی برای کدری وجود ندارد استفاده میشود. (I40107) - پارامتر
windowBoundsPxرا بهpixelDimensionsو نوع آن را از «مستطیل» بهIntSize2dدر روش ایجاد بهروزرسانی کرد. (I1926e) - سازنده
SpatialEnvironmentاکنون داخلی است (I75a51) - کلاس
SpatialPointerIconNoneوSpatialPointerIconCircleکلاس با اشیای همراهSpatialPointerIcon.NONEوSpatialPointerIcon.CIRCLEجایگزین شد (I416d2) -
SpatialPointerIconدرSpatialPointerComponentدیگر نمیتواند تهی باشد. برای نشان دادن اینکه باید از نماد اشارهگر پیشفرض سیستم استفاده شود، بهجای null از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با روشهای افزودن/برداشتن جایگزین شد. (I4c956) -
AnchorPlacement: planeTypeFilterبهanchorablePlaneOrientationsتغییر نام داد،planeSemanticFilterبهanchorablePlaneSemanticTypesتغییر نام داد. افزودنMovableComponentبهAnchorEntityیاActivitySpaceمقدار نادرست برمیگرداند،MoveListenerبهEntityMoveListener shouldDisposeParentAnchorتغییر نام داد،EntityMoveListener shouldDisposeParentAnchorبهdisposeParentOnReAnchor systemMovableتغییر نام داد،disposeParentOnReAnchor systemMovableاز تابعcreateبهنفعcreeateCustomMovable،createSystemMovable، وcreateAnchorableبرداشته شد (If11c4) -
SurfaceEntity.featherRadiusX/Yبرداشته شد و مفهوم کلاسEdgeFeatheringParamsاضافه شد. (Ic78fc) - روش
PanelEntity.enablePanelDepthTest()با داراییpanelClippingConfigجایگزین شد. برای فعال کردن آزمایش عمق،Scene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true)را تنظیم کنید یا برای غیرفعال کردن آن،PanelClippingConfig(isDepthTestEnabled = false)را تنظیم کنید. (I0cbe0) -
Scene.mainPanelEntityاکنون از نوعMainPanelEntityبهجایPanelEntityاست (I7125a) - نام روش
setFullSpaceMode«صحنه» بهconfigureBundleForFullSpaceModeLaunchو نام روشsetFullSpaceModeWithEnvironmentInheritedبهconfigureBundleForFullSpaceModeLaunchWithEnvironmentInheritedتغییر کرد. (I0cbe0) (I0cbe0) - مقادیر UNKNOWN، OUTSIDE_FOV، PARTIALLY_WITHIN_FOV، و WITHIN_FOV در
SpatialVisibilityرا بهترتیب به SPATIAL_VISIBILITY_UNKNOWN، SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW، SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW، و SPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW تغییر نام داد (Ie7e8c) - کلاس
SpatialVisibilityبا شیء عمومی با مقادیر ثابت «عدد صحیح» جایگزین شد. setSpatialVisibilityChangedListenerاکنونConsumer<Int>را بهجایConsumer<SpatialVisibility>میپذیرد (Ie7e8c) -
PointerCaptureComponentثابت تغییر نام داد و به شیءPointerCaptureComponent.PointerCaptureStateمنتقل شد (I9c7ac) -
PointerCaptureComponents' StateListenerباConsumer<Int>جایگزین شد. (I9c7ac) -
InputEventListenerباConsumer<InputEvent>(I9c7ac) جایگزین شد -
setPreferredAspectRatioاز کلاس «صحنه» به شیءSpatialWindowمنتقل شد و «جلسه» را بهعنوان اولین پارامتر میپذیرد. (I7b717) -
Entity.setHidden()باEntity.setEnabled()جایگزین شد وEntity.isHidden()باEntity.isEnabled()جایگزین شد. setHidden(false)برابر باsetEnabled(true)وisHidden() == !isEnabled()است. (Icf0de) - نوع
Entity.contentDescriptionاز «رشته» به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) فقط شامل میاناهای برنامهسازی کاربردی غیرهمزمان به سبک Kotlin خواهد بود. توسعهدهندگان Java میتوانند برای دسترسی به میاناهای برنامهسازی کاربردی سازگار به کتابخانهxr:scenecore:scenecore-guavaتکیه کنند. (If221b) - برای استفاده از پروژههای منتشرشده با Kotlin 2.0، باید از KGP 2.0.0 یا نسخههای جدیدتر استفاده کنید (Idb6b5)
- این کتابخانه اکنون از JSpecify nullness annotations استفاده میکند که نوع استفاده است. توسعهدهندگان Kotlin باید از آرگومان کامپایلر زیر برای اعمال استفاده صحیح استفاده کنند:
-Xjspecify-annotations=strict(این آرگومان از نسخه ۲.۱.۰ کامپایلر Kotlin بهصورت پیشفرض شروع میشود) (Ia8420) - همه روشهای ناهمزمان که
ListenableFutureبرمیگردانند با توابع تعلیق Kotlin جایگزین شدهاند. توسعهدهندگان جاوا که میخواهند بهجای توابع تعلیق Kotlin از روشهای ناهمزمان مبتنی برListenableFutureاستفاده کنند، اکنون باید از توابع افزونه در:xr:scenecore-scenecore-guavaاستفاده کنند. برای مثال،GuavaExrImageحاوی توابع ناهمگام ExrImage معادل Guava است،GuavaScenePoseحاوی توابع ناهمگامScenePoseمعادل Guava است،GuavaGltfModelحاوی توابع ناهمگامGuava-equivalent GltfModelاست، و غیره. (If7283) (I0af60) (If7283) (Ia8515) (I4efdf) (I54bbf) (I3467a) (I82a33)
رفع اشکالها
- قانون Jetpack XR Scenecore
ProGuardبهروز شد تا ازAbstractMethodErrorبرای مشتریان کوچکشده جلوگیری شود. (I91a01) - رفع اشکالات بیشتر برای پشتیبانی از کوچکسازی Proguard برای Jetpack XR
SceneCore(I4f47e) - اشکالی برطرف شد که در آن
InteractableComponentممکن بود باعث ازکارافتادن شود اگرhitPositionدر HitInfo مربوط بهInputEventممکن بود باعث ازکارافتادن شود اگرhitPositionبرگشتی از سیستم تهی بود (I7a695) - نام مقادیر *Mode Config تغییر کرده است تا رفتارشان را منعکس کند. (I6d247)
- مشکلات مربوط به «زاویه دید» و
HitTestدرSceneCoreTestApp برطرف شد. (I2c51e) - اشکال
SpatialCapabilities.hasCapability()برطرف شد. این اشکال باعث میشد اگر هریک از قابلیتهای ارسالشده با «یا» بیتی درست بود، درست برگردانده شود، درحالیکه فقط باید زمانی درست برگردانده میشد که همه آنها درست بودند. (I2cd40) -
SurfaceEntity.StereoMode.TOP_BOTTOMبهروز شد تا نقشه بالا برای چشم چپ و نقشه پایین برای چشم راست باشد. (I4ae68)
نسخه 1.0.0-alpha04
۷ مه ۲۰۲۵
androidx.xr.scenecore:scenecore:1.0.0-alpha04 و androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04 منتشر شدند. نسخه 1.0.0-alpha04 شامل این تعهدها است.
ویژگیهای جدید
- اکنون «مدیریت پسزمینه» در نهادهای پانل بدون فعالیتهای جاسازیشده کار خواهد کرد. برای اینکه «مدیریت برگشت» کار کند، باید
android:enableOnBackInvokedCallback= "true"را در مانیفست Android مشخص کنید. -
StereoSurfaceEntityاکنون از بازپخش MV-HEVC ازطریق دو مقدار جدیدStereoModeپشتیبانی میکند: MULTIVIEW_LEFT_PRIMARY و MULTIVIEW_RIGHT_PRIMARY. -
PanelEntity.setSizeوPanelEntity.getSizeاکنون اندازهها را در فضای والد برمیگردانند. -
Entity.setPose،Entity.getPose،Entity.setScale،Entity.getScale،Entity.setAlpha، وEntity.getAlphaاکنون پارامتر جدیدی بهنامrelativeToمیگیرند که امکان دریافت/تنظیم مقادیر مربوط به فضاهای مختلف را فراهم میکند. مقادیر پشتیبانیشده عبارتاند از فضاهای «والد»، «فعالیت»، و «دنیای واقعی»، و مقدار پیشفرض برای این پارامتر «والد» است. - روشهای افزونه «بازخوان رؤیتپذیری فضایی» به
SessionExt.ktاضافه شد تا حرکت محتوای صحنه به داخل یا خارج از میدان دید کاربر را پایش کند. -
setPointSourceParamsبهSpatialAudioTrackاضافه شده است و اجازه میدهد پارامترها پساز ساخته شدن قطعه بهروزرسانی شوند. - کلاس جدیدی بهنام «صحنه» با ارجاع به
Scenecore«میانای برنامهسازی کاربردی» اضافه شد. «صحنه» بهعنوان دارایی افزونه «جلسه» دردسترس خواهد بود. توابع درونSessionExtبه «صحنه» منتقل شده است، بنابراین وارد کردنها باید اصلاح شوند؛ برای مثال،SessionExt.getScene(session).addSpatialCapababilitiesChangedListenerدرمقابلSessionExt.addSpatialCapabilitiesChangedListener. -
ActivityPose.hitTestAsyncاضافه شد وhitTestعلیه محتوای مجازی فعال شد. - نوع جدید «عنصر»
SpatialPointerComponentاضافه شد که به مشتریان امکان میدهد نماد ارائه شده برای اشارهگر را مشخص کنند یا نماد را غیرفعال کنند. درحالحاضر این «عنصر» فقط میتواند بهPanelEntityنمونه پیوست شود. - معرفی کارخانه جدید
PanelEntityکه ابعاد پانل را برحسب متر یا پیکسل میگیرد. کارخانه قدیمیPanelEntityکه دو پارامتر نوع «ابعاد» را برای پانل میگرفت برداشته شد.
تغییرات میانای برنامهسازی کاربردی
- محدودیت
RequiresApi(34)روی همه بستههای Jetpack XR برداشته شد. این محدودیت اضافی بود زیرا Jetpack XR درحالحاضر فقط در دستگاههای دارای سطح API 34 و بالاتر دردسترس است. (Iae0f8) - برای استفاده از پروژههای منتشرشده با Kotlin 2.0، باید از 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)جایگزین شود.- کلاس «جلسه» در
SceneCoreبهنفع «جلسه» در «زمان اجرای XR» حذف شده است. - نام
StereoSurfaceEntityبهSurfaceEntityتغییر کرد. -
Entity.setSizeوEntity.getSizeبرداشته شدند و همان روشها بهPanelEntityاضافه شدند. - نام
PointSourceAttributesبهPointSourceParamsتغییر کرد. - نام
SpatializerConstants.SOURCE\_TYPE\_BYPASSبهSpatializerConstants.SOURCE\_TYPE\_DEFAULTتغییر کرد. -
PointSourceParamsنهاد از دسترسی عمومی به دسترسی داخلی تغییر کرده است. -
AnchorEntity.createاکنون برای پیکربندیPlaneTrackingModeدرSession.configure()الزامی است. - اکنون میاناهای برنامهسازی کاربردی
SpatialUserبرای پیکربندیHeadTrackingModeدرSession.configure()الزامی است. - وقتی
ResizableComponentپیوست نشده باشد، بهجای گزارش سطح «خطا»، گزارش سطح «اطلاعات» ارائه خواهد داد. - کلاس Fov اکنون یک کلاس Kotlin معمولی است.
-
Entity.ktرا تقسیم کنید تا هر نوع نهاد عینی در فایل خودش قرار گیرد. - هنگام ایجاد
PanelEntityجدید، اکثر «نماها» بهFrameLayoutجدیدی منتقل میشوند. این کار استفاده ازLayoutInspectorبا «پانلهای فضایی» را تسهیل میکند. - نمونه
XrExtensionsکه درحالحاضر استفاده میشود اکنون به بهترین شکل ممکن در پلاتفرم ثبت شده است تا به اشکالزدایی برنامه کمک کند.
رفع اشکالها
- اصلاحی اضافه شد تا از خرابی که ممکن است هنگام جابهجایی
PanelEntityباMovableComponentوAnchorPlacementرخ دهد جلوگیری شود - رفع مشکلی که در آن
ResizableComponentاندازههای قدیمی را درonResizeStartبرگشتی ارائه میداد. - رفع خرابی هنگام فراخوانی چندباره
dispose()مربوط بهJxrPlatformAdapterAxr.
نسخه 1.0.0-alpha03
۲۶ فوریه ۲۰۲۵
androidx.xr.scenecore:scenecore:1.0.0-alpha03 و androidx.xr.scenecore:scenecore-testing:1.0.0-alpha03 منتشر شدند. نسخه 1.0.0-alpha03 شامل این تعهدها است.
ویژگیهای جدید
- اکنون کوچکسازی Proguard برای کد Jetpack XR پشتیبانی میشود
رفع اشکالها
- رفع اشکالات بیشتر برای پشتیبانی از کوچکسازی Proguard برای Jetpack XR SceneCore (I4f47e)
- قانون Jetpack XR Scenecore
ProGuardبهروز شد تا ازAbstractMethodErrorبرای کارخواههای کوچکشده جلوگیری شود. (I91a01)
نسخه 1.0.0-alpha02
۱۲ فوریه ۲۰۲۵
androidx.xr.scenecore:scenecore:1.0.0-alpha02 و androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02 منتشر شدند. نسخه 1.0.0-alpha02 شامل این تعهدات است.
تغییرات آتی که برنامههای ساختهشده قبلاز نسخه 1.0.0-alpha02 را تحتتأثیر قرار میدهد
- روشهای کارخانهای از کلاس
Sessionبه روش همراه در هر نوع مربوطه منتقل شده است:-
Session.createActivityPanelEntity(Dimensions, String, Activity, Pose)حذف شد و باActivityPanelEntity.create(Session, Dimensions, String, Pose)جایگزین شد -
Session.createAnchorEntity(Anchor)حذف شد و باAnchorEntity.create(Session, Anchor)جایگزین شد -
Session.createAnchorEntity(Dimensions, Int, Int, Duration)حذف شد و باAnchorEntity.create(Session, Dimensions, Int, Int, Duration)جایگزین شد -
Session.createEntity(String, Pose)حذف شد و باContentlessEntity.create(Session, String, Pose)جایگزین شد -
Session.createExrImageResource(String)حذف شد و باExrImage.create(Session, String)جایگزین شد -
Session.createGltfEntity(GltfModel, Pose)حذف شد و باGltfModelEntity.create(Session, GltfModel, Pose)جایگزین شد -
Session.createGltfModelResource(String)حذف شد و باGltfModel.create(Session, String)جایگزین شد -
Session.createInteractableComponent(Executor, InputEventListener)حذف شد و باInteractableComponent.create(Session, Executor, InputEventListener)جایگزین شد -
Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean)حذف شد و باMovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean)جایگزین شد -
Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose)حذف شد و باPanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose)جایگزین شد -
Session.createResizableComponent(Dimensions, Dimensions)حذف شد و باResizableComponent.create(Session, Dimensions, Dimensions)جایگزین شد -
Session.createStereoSurfaceEntity(Int, Dimensions, Pose)حذف شد و باStereoSurface.create(Session, Int, Dimensions, Pose)جایگزین شد
-
- روشهای منسوخ زیر برداشته شدند:
Session.canEmbedActivityPanel(Activity)حذف شده است. درعوض ازgetSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY)استفاده کنید.Session.hasSpatialCapability(Int)حذف شده است. این ویژگی با استفاده ازgetSpatialCapabilities().hasCapability()بهعنوان روشی با بخشبندی بیشتر برای بررسی وجود قابلیتهای فضایی جایگزین شده است، زیراgetSpatialCapabilities()شیءSpatialCapabilitiesرا برمیگرداند.-
Session.requestFullSpaceMode()حذف شد و باSpatialEnvironment.requestFullSpaceMode()جایگزین شد -
Session.requestHomeSpaceMode()حذف شد و باSpatialEnvironment.requestHomeSpaceMode()جایگزین شد
-
Session.setFullSpaceMode(Bundle)وSession.setFullSpaceModeWithEnvironmentInherited(Bundle)به عملکردهای افزونه منتقل شدهاند. فایلهای توسعهدهنده برای دسترسی باید واردات جدید را اضافه کنند:import androidx.xr.scenecore.setFullSpaceModeimport androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
-
Session.setPreferredAspectRatio(Activity, Float)به تابع افزونه منتقل شده است. فایلهای توسعهدهنده باید وارد کردن جدید را برای دسترسی اضافه کنند:import androidx.xr.scenecore.setPreferredAspectRatio
-
Session.getEntitiesOfType(Class<out T>)وSession.getEntityForRtEntity(RtEntity)به عملکردهای افزونه منتقل شدهاند. فایلهای توسعهدهنده برای دسترسی باید واردات جدید را اضافه کنند:import androidx.xr.scenecore.getEntitiesOfTypeimport androidx.xr.scenecore.getEntityForRtEntity
-
Session.unpersistAnchor(Anchor)حذف شد -
Session.createPersistedAnchorEntity(UUID)حذف شد
مشکلات شناختهشده
PanelEntity.setCornerRadius()وActivityPanelEntity.setCornerRadius()ممکن است تا زمانی که پانل دوباره جابهجا شود اعمال نشوند، این مشکل را میتوان با جابهجا کردن پانل به موقعیت کنونیاش کاهش داد- وقتی
BoundsChangedدرActivitySpaceفراخوانده میشود، ممکن است برخیازActivityPoseها بهدرستی بهروزرسانی نشده باشند. در تماسOnSpaceUpdatedبعدی درActivitySpaceبهروز خواهد شد
تغییرات رفتاری و ناگهانی
PanelEntityوActivityPanelEntityشعاع گوشه پیشفرضی برابر با ۳۲dp یا کمتر خواهند داشت اگر پانل دارای عرض یا ارتفاع کمتر از ۳۲dp باشد
میاناهای برنامهسازی کاربردی و قابلیتهای جدید
StereoSurface.CanvasShapeرا معرفی میکند که امکان ایجادSphericalوHemisphericalبوم نقاشی را برای پرداز کردن رسانههای فراگیر فراهم میکند.-
StereoSurfaceEntity.create()اکنون پارامترCanvasShapeرا میپذیرد. (این پارامتر درحالحاضر نادیده گرفته میشود، اما در نسخهٔ پخش آتی استفاده خواهد شد) -
StereoSurfaceEntity.create()دیگر پارامترDimensionsرا نمیپذیرد. برنامهها باید اندازه بوم را ازطریق تنظیمCanvasShapeکنترل کنند -
StereoSurfaceEntityعضویCanvasShapeدارد که میتواند بهصورت پویا تنظیم شود. -
StereoSurfaceEntity.dimensionsاکنون دارایی فقط خواندنی است؛ برنامهها بایدCanvasShapeرا برای تغییر ابعاد تنظیم کنند. -
StereoSurfaceEntityاکنون اجازه میدهدStereoModeپساز ساختوساز بازنشانی شود.
تغییرات دیگر
- minSDK زمان ترجمه به ۲۴ کاهش یافت. همه «میاناهای برنامهسازی کاربردی Jetpack XR» همچنان در زمان اجرا به API 34 نیاز دارند.
- «کارخانه جلسه»
SceneCore(Session.create) دیگر برای دریافت اجازهSCENE_UNDERSTANDINGهدف راهاندازی نمیکند. درعوض، برنامه مشتری باید قبلاز تلاش برای ایجاد لنگرها، اجازهها را بهطور صریح از کاربر درخواست کند. اگر کاربر اجازه ندهد، لنگر ایجاد نخواهد شد.
رفع اشکالها
-
getActivitySpacePose()اصلاح شده است تا مقیاسActivitySpaceرا با برگرداندن مقادیر ترجمه در مترهای مقیاسبندیشده بهجای برگرداندن همیشگی مترهای مقیاسبندینشده درنظر بگیرد. اکنونtransformPoseToهمچنین از واحدهای صحیح برای محاسبه تغییرات مختصات زمانی کهActivitySpaceدر منبع یا مقصد دخیل است استفاده میکند. - ازاینپس هرگاه اولویت آسماننمای تهی بااستفاده از
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom))ارسال شود، آسماننما روی آسماننمای کاملاً سیاه تنظیم خواهد شد. برای برگرداندن به آسماننمای پیشفرض سیستم و هندسه، ازsetSpatialEnvironmentPreference(null).استفاده کنید
نسخه 1.0.0-alpha01
۱۲ دسامبر ۲۰۲۴
androidx.xr.scenecore:scenecore-* 1.0.0-alpha01 منتشر شد.
ویژگیهای نسخه پخش اولیه اولین نسخه پخش توسعهدهنده Jetpack SceneCore، کتابخانه گراف صحنه سهبعدی برای ایجاد و دستکاری صحنهها و محیطهای فراگیر. این کتابخانه به شما امکان میدهد مدلهای سهبعدی و پانلهای محتوا را نسبتبه یکدیگر و محیطهای مجازی یا واقعی خود قرار دهید و آنها را مرتب کنید.
- SpatialEnvironment: بااستفاده از تصویر آسماننما و/یا هندسه مدل سهبعدی بهعنوان پسزمینه صحنه واقعیت گسترده محیط خود، تجربههای کاملاً فراگیر ایجاد کنید. یا «گذردهی» را فعال کنید تا صحنه مجازی شما بتواند با محیط دنیای واقعی کاربر ادغام شود.
- PanelEntity: با جاسازی چیدمانها و «فعالیتهای» استاندارد Android در پانلهای فضایی که میتوانند شناور باشند یا به سطوح دنیای واقعی متصل شوند، محتوای دوبعدی به صحنههای سهبعدی خود اضافه کنید.
- GltfModelEntity: مدلهای سهبعدی را در صحنهتان قرار دهید، پویانمایی کنید، و با آنها تعامل داشته باشید. SceneCore از قالب فایل glTF برای یکپارچهسازی آسان با مدلهای موجود پشتیبانی میکند.
- صدای فضایی: منابع صوتی نقطهای و محیطی را به صحنه سهبعدی خود اضافه کنید تا صدای کاملاً فراگیر و فضایی داشته باشید.
- StereoSurfaceEntity: SceneCore از مسیریابی چشم چپ/راست محتوای رندرشده در «سطح Android» پشتیبانی میکند. از این میتوان برای ارائه محتوای استریوسکوپی در قالب کنار هم یا بالا-پایین، مانند عکسهای استریو، ویدیو سهبعدی، یا دیگر واسطهای کاربر پویا استفاده کرد. برنامهها باید از MediaPlayer یا ExoPlayer برای رمزگشایی ویدیو استفاده کنند.
- سیستم مؤلفه: SceneCore سیستم مؤلفه قدرتمند و انعطافپذیری برای افزودن قابلیت به محتوای XR شما ارائه میدهد، ازجمله امکاناتی برای کاربران جهت جابهجا کردن، تغییر اندازه، و تعامل با مدلها و پانلها.
- لنگر: با فعال کردن عبور، میتوانید پانلها و مدلها را به سطوح واقعی متصل کنید و به کاربران امکان دهید محتوای مجازی را بهطور یکپارچه در محیط واقعی خود ادغام کنند.
- ژست کاربر: برای جهتدهی محتوای خود براساس موقعیت کاربر، به مکان کاربر در صحنه مجازی دسترسی پیدا کنید.
- SpatialCapabilities: برنامههای کاملاً تطبیقی بسازید که درصورت دردسترس بودن از قابلیتهای فضاییسازیشده، مانند موقعیتیابی سهبعدی محتوای رابط کاربری، بهره میبرند. نه تنها این، بلکه برنامه شما میتواند تغییرات قابلیتها را درحین اجرای برنامه پایش کند تا تجربه را براساس نحوه استفاده کاربر از دستگاه Android XR خود تغییر دهد.
مشکلات شناختهشده
- درحالحاضر برای استفاده از Jetpack SceneCore، حداقل SDK 30 لازم است. برای دور زدن این مشکل، ورودی مانیفست زیر
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>را اضافه کنید تا بتوانید با حداقل کیت توسعه نرمافزار ۲۳ بسازید و اجرا کنید. - جلسه میتواند در شرایط مختلفی که بهطور خودکار «فعالیت» را بازسازی میکند نامعتبر شود، ازجمله تغییر اندازه پانل اصلی، اتصال لوازم جانبی، و تغییر بین حالت روشن و تاریک. اگر با مشکلات نامعتبر شدن جلسه مواجه شدید، راهحلهای موقت شامل غیرقابل تغییر اندازه کردن پانل اصلی، استفاده از نهاد پانل پویا، غیرفعال کردن بازآفرینی فعالیت برای تغییرات پیکربندی خاص، یا غیرفعال کردن تغییرات زمینه حالت روشن/تاریک میشود.
- عناصر «قابلانتقال» و «قابلتغییر اندازه» در GltfEntity پشتیبانی نمیشوند.
- Entity.getSize() در GltfEntity پشتیبانی نمیشود.
- برنامههای Jetpack XR باید اجازه
android.permission.SCENE_UNDERSTANDINGرا در AndroidManifest درخواست کنند. - ایجاد جلسه فقط در دستگاه Android XR پشتیبانی میشود. درحالحاضر، اگر «جلسهای» ایجاد کنید و بخواهید از آن در دستگاه غیر Android XR استفاده کنید، با خطای RuntimeException مواجه خواهید شد.
- تنظیم جعبه آسمان روی مقدار تهی ازطریق `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 را فعال میکند، هنگام ایجاد «جلسه» ازکار خواهد افتاد. بهعنوان راهکار موقت، ProGuard را غیرفعال کنید. برای اطلاعات بیشتر درباره نحوه فعال کردن ProGuard، این راهنما را ببینید.