Jetpack SceneCore

ساختن و دستکاری کردن نمودار صحنه Android XR با محتوای سه‌بعدی.
جدیدترین به‌روزرسانی نسخه پایدار نامزد انتشار انتشار نسخه بتا نسخه آلفا
‫۲۱ اکتبر ۲۰۲۶ ۱.۰.۰ - - 1.1.0-alpha01

اعلام وابستگی‌ها

برای افزودن وابستگی به 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 کمک می‌کند. اگر مشکل جدیدی پیدا کردید یا ایده‌ای برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل‌از ایجاد مشکل جدید، مشکلات موجود در این کتابخانه را بررسی کنید. با کلیک کردن روی دکمه ستاره می‌توانید رأی خود را به مشکل موجود اضافه کنید.

ایجاد مشکل جدید

برای اطلاعات بیشتر، سند Issue Tracker را ببینید.

نسخه ۱.۱

نسخه 1.1.0-alpha01

‫۲۱ اکتبر ۲۰۲۶

‫androidx.xr.scenecore:scenecore-*:1.1.0-alpha01 منتشر شده است. نسخه 1.1.0-alpha01 حاوی این ارسال‌ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • میاناهای برنامه‌سازی کاربردی به‌روزرسانی مش پویا (MeshBuffer.createDynamic، MeshBuffer.updateVertexData، MeshBuffer.updateIndexData، و سازنده پویای CustomMesh.BuilderFromMeshData) برای پشتیبانی از به‌روزرسانی داده‌های رأس و نمایه در زمان اجرا اضافه شد. (Ia1ecb)
  • روش‌های کمکی VertexLayout.getBufferIndex برای بازیابی آسان نمایه میان‌گیر برای VertexAttribute یا VertexBufferLayout داده‌شده اضافه شد. (I1a9e3)
  • CustomMesh.bounds به var تبدیل شد تا چارگوش محدودکننده بتواند به‌طور پویا در زمان اجرا به‌روز شود. (Ib0397)
  • ‫APIهای پویانمایی glTF (GltfAnimation، GltfModelEntity.getAnimations، و GltfModelEntity.stopAllAnimations) به عمومی/پایدار ارتقا داده شدند، درحالی‌که تنظیم‌کننده GltfAnimation.loop به‌عنوان آزمایشی و GltfAnimationStartOptions و start(options) به‌عنوان آزمایشی و منسوخ‌شده باقی ماندند. (Iacdae)
  • ‫stopAllAnimations() به GltfModelEntity اضافه شد، GltfAnimation.start() بدون پارامتر شد، ویژگی‌های loop و speed به GltfAnimation اضافه شد، و GltfAnimationStartOptions، start(options)، و seekTo(Duration) منسوخ شد. (I53105)
  • میاناهای برنامه‌سازی کاربردی GltfModelEntity به‌روزرسانی شد تا IllegalStateException (به‌ویژه Entity.DisposedException) را هنگام فراخوانی در موجودیت‌های دورریخته‌شده مستند کند. I65a76f

رفع اشکال‌ها

  • وابستگی androidx.lifecycle:lifecycle-runtime به نسخه ۲.۱۰.۰ به‌روز شد. این نسخه برای اجرای بررسی‌های lint زمان اجرای چرخه حیات بسته‌بندی‌شده با AGP نسخه 9.5.0-alpha04 یا جدیدتر لازم است. (I99bfd, b/556807521)
  • بهبود kdocs مربوط به AudioOutputProvider برای برجسته کردن این نکته که نباید با چند نمونه ExoPlayer دوباره استفاده شود (I6b18e)
  • وابستگی‌های غیرضروری به impress از پیمانه‌های مختلف XR برداشته شد. I84636c

نسخه 1.0

نسخه ۱.۰.۰

‫۲۱ اکتبر ۲۰۲۶

‫androidx.xr.scenecore:scenecore-*:1.0.0 منتشر شده است. نسخه ۱.۰.۰ حاوی این ثبت‌ها است.

ویژگی‌های اصلی نسخه ۱.۰.۰:

  • Jetpack XR SceneCore اکنون پایدار است! SceneCore به شما امکان می‌دهد محتوای سه‌بعدی را که توسط موجودیت‌ها تعریف شده است، نسبت به یکدیگر و محیط خود قرار دهید و مرتب کنید. با SceneCore می‌توانید پانل‌های دوبعدی و مدل‌های سه‌بعدی را در صحنه‌های واقعیت مجازی و ترکیبی ایجاد، جای‌گذاری، و دستکاری کنید؛ محیط‌های فضایی و منابع صدای فراگیر را مشخص کنید؛ و محتوای مجازی را به دنیای واقعی متصل کنید.
  • برای اطلاعات بیشتر، به صفحه نمای کلی و مرجع میانای برنامه‌سازی کاربردی ما مراجعه کنید.

نسخه 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)
  • نشت حافظه در Scene با برداشتن sceneCache در SessionExt و بازسازی کد Scene برای واکشی مستقیم نمونه از sessionConnectors برطرف شد. (Ie35b1)

نسخه 1.0.0-rc01

‫۹ سپتامبر ۲۰۲۶

‫androidx.xr.scenecore:scenecore-*:1.0.0-rc01 منتشر شده است. نسخه 1.0.0-rc01 حاوی این موارد ثبت است.

تغییرات میانای برنامه‌سازی کاربردی

  • xr:scenecore:scenecore-openxr کتابخانه اضافه شد. (Ic49f2)
  • چندین میانای برنامه‌سازی کاربردی منسوخ‌شده پیش‌از انتشار نسخه پایدار ۱.۰.۰ برداشته شد.

رفع اشکال‌ها

  • اشکال نشت حافظه که در آن مرجع «فعالیت» ممکن بود هنگام ازبین رفتن «فعالیت» توسط سیستم حفظ شود برطرف شد. (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)
  • Updated AnchorEntity to be called AnchorSpace (Ifa95e, b/513619219)
  • میانای برنامه‌سازی کاربردی آزمایشی عمومی SoundEffectPoolComponentTester را ارائه می‌دهد. (I87df7، b/498104417)
  • پارامتر اختیاری cornerRadius به سازنده SurfaceEntity.Shape.Quad اضافه شد و ویژگی cornerRadius عمومی شد. اکنون توسعه‌دهندگان می‌توانند هنگام ایجاد شکل چهارگوش، شعاع گوشه را مشخص کنند تا بوم‌های SurfaceEntity با گوشه‌های گرد ارائه شود و شعاع چهارگوش‌های موجود را جستجو کنند. (Ia7809، b/474681085)
  • میانای برنامه‌سازی کاربردی آزمایش عمومی SpatialAudioTrackBuilderTester، SpatialAudioTrackTester و SceneCoreTestRule.getTester سربارگذاری را ارائه می‌دهد. (I378c6، b/496333938)
  • افزودن لغوهای تخصصی toString() برای تعدادی از انواع ARCore. این انواع برای ارائه اطلاعات بیشتر به توسعه‌دهندگان برای اهداف اشکال‌زدایی درنظر گرفته شده‌اند و برای استفاده در برنامه‌های تولیدی یا ارسال‌شده درنظر گرفته نشده‌اند.

نسخه 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)
  • Provides public test API PanelEntityTester and MainPanelEntityTester (I961e4)
  • درحال افزودن دارایی pointSourceParams به SoundEffectPoolComponent (I4a750)
  • Provides public test API MovableComponentTester (I0c972)
  • Provides public test API PointerCaptureComponentTester (Ic0d4f)
  • Provides public test API ActivityPanelEntityTester (I837c4)
  • Provides public test API ResizableComponentTester (I0a3a4)
  • Provides public test API BoundsComponentTester. (Iefd53)
  • میانای برنامه‌سازی کاربردی آزمایشی عمومی SpatialMediaPlayerTester (Ia3e09) را ارائه می‌دهد
  • Provides public test API SpatialEnvironmentTester (Icf60f)
  • میانای برنامه‌سازی کاربردی آزمایشی عمومی GltfModelTester و SceneCoreTestRule.getGltfModelTester را ارائه می‌دهد. (I33fcb)
  • میانای برنامه‌سازی کاربردی آزمایشی عمومی InteractableComponentTester را ارائه می‌دهد. (Ia7096)
  • میانای برنامه‌سازی کاربردی آزمایشی عمومی SurfaceEntityTester را ارائه می‌دهد. (Ic0740)
  • میانای برنامه‌سازی کاربردی آزمایشی عمومی GltfModelEntityTester،‏ TestGltfModelNode، و TestGltfAnimation را ارائه می‌دهد. (I72c4d)
  • میانای برنامه‌سازی کاربردی آزمایشی عمومی SceneTester و SceneCoreTestRule.sceneTester را ارائه می‌دهد. (Ib4ec5)
  • میانای برنامه‌سازی کاربردی آزمایش عمومی PerceptionSpaceTester و SceneCoreTestRule.perceptionSpaceTester را ارائه می‌دهد. (Icf739)
  • میانای برنامه‌سازی کاربردی آزمایشی عمومی MeshEntityTester را ارائه می‌دهد. (I63801)
  • Provides public test API ImageBasedLightingAssetTester and SceneCoreTestRule.getTester overloads. (I57ec4)
  • میانای برنامه‌سازی کاربردی آزمایشی عمومی TextureTester را ارائه می‌دهد (Ia865b)
  • میانای برنامه‌سازی کاربردی آزمایش عمومی PositionalAudioComponentTester (Icd96e) را ارائه می‌دهد
  • Provides public test API SpatialSoundPoolTester (Ia3531)
  • میانای برنامه‌سازی کاربردی آزمایشی عمومی SoundEffectPoolTester را ارائه می‌دهد (If349a)
  • میانای برنامه‌سازی کاربردی آزمایشی عمومی ActivitySpaceTester و SceneCoreTestRule.activitySpaceTester را ارائه می‌دهد. (I2d5c2)
  • Provides public test API SpatialWindowTester (I41837)
  • Provides public test API AnchorEntityTester (I68404)
  • میانای برنامه‌سازی کاربردی آزمایش عمومی SceneCoreTestRule را ارائه می‌دهد. (Ic72d3)
  • کلاس PixelDensity اضافه شد و ازطریق Scene#virtualPixelDensity نمایش داده شد تا نسبت پیکسل بر متر مبتنی بر سخت‌افزار برای نگاشت دقیق ابعاد فیزیکی در ActivitySpace ارائه شود. (I0e3ac)
  • میاناهای برنامه‌سازی کاربردی عمومی برای ایجاد و ارائه «مش‌های سفارشی» اضافه شد. (I7ad2f)
  • VertexLayout API به‌روز شده است تا از فهرستی از 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)
  • نهادهای فضایی اکنون از تراکم دستگاه پایداری برای محاسبات پیکسل به متر در سطوح ۱ و ۲ Spatial API استفاده می‌کنند تا از اندازه یکسان صرف‌نظر از تغییرات تراکم نمایشگر سیستم اطمینان حاصل شود. (I37051)

نسخه 1.0.0-alpha15

۱۹ مه ۲۰۲۶

‫androidx.xr.scenecore:scenecore-*:1.0.0-alpha15 منتشر شده است. نسخه 1.0.0-alpha15 حاوی این ارسال‌ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • Entity.dispose() اکنون به‌عنوان API عمومی برداشته شده است. به‌جای فراخوانی dispose() در نمونه‌های Entity، برنامه‌ها می‌توانند با تنظیم 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 API برای بهبود ایمنی و توسعه‌پذیری بازسازی کد شده است. Component اکنون یک کلاس انتزاعی است. روش‌های onAttach() و onDetach() اکنون protected هستند تا از تماس‌های مستقیم جلوگیری شود. لطفاً از Entity.addComponent() و Entity.removeComponent() برای مدیریت چرخه‌های حیات مؤلفه استفاده کنید. (Id04e8)
  • ثابت‌های PlaneSemanticType PlaneOrientation SceneCore از Ints به انواع سفارشی منتقل شده‌اند. ثابت‌های ANY آن‌ها برداشته خواهد شد، مشتریان باید به‌جای آن همه ثابت‌های موردنظر را به‌طور صریح فهرست کنند، یا از ثابت‌های «مجموعه» تغییرناپذیر .ALL جدید استفاده کنند. روش کارخانه AnchorEntity اکنون به‌جای یک مقدار، مجموعه‌ای از این نوع‌ها را می‌پذیرد. (Ib1033)
  • پشتیبانی از پویانمایی اسکلتی (پوست‌گذاری) به Custom Mesh API آزمایشی اضافه شد. توسعه‌دهندگان اکنون می‌توانند با مشخص کردن boneCount هنگام ایجاد MeshEntity و به‌روزرسانی پویانمایی به‌طور هم‌زمان بااستفاده از MeshEntity.setBoneTransforms()، مش‌های سفارشی را پویانمایی کنند. (Id8ba2، b/496692490)
  • CustomMesh API آزمایشی معرفی شد. توسعه‌دهندگان اکنون می‌توانند بااستفاده از CustomMesh،‏ MeshBuffer، و MeshEntity به‌صورت برنامه‌نویسی‌شده هندسه سه‌بعدی در صحنه‌هایشان ایجاد و رندر کنند. (I94617)
  • ‫androidx.xr.scenecore.SpatializerConstants.SourceType.SOURCE_TYPE_SOUND_FIELD حذف شد. درعوض از SourceType.SOUND_FIELD استفاده کنید. (Ia68b9)
  • Adding spatial audio components: PositionalAudioComponent, SoundEffectPoolComponent and SoundFieldAudioComponent (Ieda89)
  • ‫AnchorEntity.getAnchor با AnchorEntity.anchor جایگزین شد و اکنون وقتی AnchorEntity از Anchor ARCore ایجاد شده باشد، Anchor برمی‌گرداند (I5c7c8)
  • مقدار پیش‌فرض برای پارامتر 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() تغییر کرد. خصوصیت pose اکنون منسوخ شده است. (I329b4،‏ b/493383490)
  • نام HandJointType مقدار enum تغییر کرد. (Ifbc83، b/482670596)
  • Component.onAttach و onDetach را به‌عنوان میانای برنامه‌سازی کاربردی عمومی نمایش دهید تا پیاده‌سازی‌های سفارشی Component مجاز شود. (I0ca1f)
  • Adding spatial audio components (I39ddd, b/489421980, b/436642086, b/436642499)
  • برداشتن نهاد از PointSourceParams. Instead the Entity will be used directly with SpatialAudioTrack, SpatialSoundPool, and 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)
  • میانای برنامه‌سازی کاربردی XrLog اضافه شد. برای فعال کردن ثبت گزارش در 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)
  • GltfAnimation میانای برنامه‌سازی کاربردی برای کنترل پویانمایی‌های glTF در SceneCore اضافه شد. (I2c172،‏ b/466065486،‏ b/465819070،‏ b/465818617)
  • Renamed ScenePose.activitySpacePose to ScenePose.poseInActivitySpace (I8f175, b/427822261)
  • Added Scenecore Projected Runtime Implementation (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 به زمان اجرای SceneCore براساس منطق در 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 نوع ثابت از Ints به زیرنوع‌های State تغییر کرده است. (Ib0c49)
  • ‫getChildren() به میانای «نهاد» اضافه شد. چرخه حیات MainPanelEntity به‌روز شد. (Ia69d6)

تغییرات میانای برنامه‌سازی کاربردی

  • PointerCaptureComponent.PointerCaptureState نوع ثابت از Ints به زیرنوع‌های PointerCaptureState تغییر کرده است. (Ic888a)
  • Scene.spatialCapabilities اکنون از نوع Set<SpatialCapability> است، نه فیلد Int. نام ثابت‌های SpatialCapability تغییر کرده است. (I9c109)
  • نام SurfaceEntity نوع ثابت تغییر کرده است و از Ints به زیرنوع‌های SurfaceEntity تغییر کرده‌اند. (I419ed)
  • نام 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 را برمی‌گردانند. ‫HitTestResult.hitPosition دیگر نمی‌تواند تهی باشد. (I1400a)
  • ارجاع‌های ActivityPose به ScenePose تغییر کرد. (I7fe43)

نسخه 1.0.0-alpha08

‫۲۲ اکتبر ۲۰۲۵

‫androidx.xr.scenecore:scenecore-*:1.0.0-alpha08 منتشر شده است. نسخه 1.0.0-alpha08 حاوی این ارسال‌ها است.

تغییرات میانای برنامه‌سازی کاربردی

رفع اشکال‌ها

  • ‫: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 حاوی این ارسال‌ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • Renamed fixedAspectRatio to isFixedAspectRatioEnabled and made it a boolean property (I5c4e8, b/440588971)
  • Scenecore Fakes اکنون در واحد xr:scenecore:scenecore-testing قرار دارد. (Idd951)
  • Renamed shouldAutoHideContent to isAutoHideContentWhileResizingEnabled and shouldAlwaysShowOverlay to 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 اکنون می‌تواند به‌طور اختیاری Executor را بپذیرد. (I62080، b/428721695، b/422215745)
  • پارامتر bundle از ActivityPanelEntity.startActivity برداشته شد (I64344، b/430332856، b/430333040)
  • نام SpatializerConstants.SOURCE_TYPE_BYPASS به SpatializerConstants.SOURCE_TYPE_DEFAULT تغییر کرد. (Ifc7fe، b/422215565)
  • SpatialSoundPool.PLAY_FAILED ثابت اضافه شد. (Ifc7fe، b/422215565)
  • آرگومان‌های پیش‌فرض به روش‌های SpatialSoundPool.play اضافه شد. (Ifc7fe، b/422215565)
  • مقدار برگشتی تنظیم‌کننده‌ها در SpatialAudioTrackBuilder برداشته شد. (Ifc7fe، b/422215565)
  • تغییرات SurfaceEntity
    • ‫SurfaceEntity.CanvasShape نام Shape را تغییر داد
    • ‫SurfaceEntity.CanvasShape.Vr180Hemisphere نام Hemisphere را تغییر داد
    • ‫SurfaceEntity.CanvasShape.Vr360Sphere نام Sphere را تغییر داد
    • ‫SurfaceEntity.EdgeFeatheringParams.SmoothFeather نام RectangleFeather را تغییر داد
    • ‫SurfaceEntity.EdgeFeathingParams.SolidEdge نام NoFeathering را تغییر داد
    • ‫SurfaceEntity.ContentSecurityLevel نام SurfaceProtection را تغییر داد
    • SurfaceEntity.ContentSecurityLevel.{values} پیشوند SURFACE_PROTECTION_ را اضافه کرد.
    • SurfaceEntity.SuperSampling.{$values} پیشوند SUPER_SAMPLING_ را اضافه کرد
    • SurfaceEntity.StereoMode.{values} پیشوند STEREO_MODE_ را اضافه کرد
    • SurfaceEntity.ContentColorMetadata.maxCLL renamed maxContentLightLevel (I7eb5f, b/422216050, b/427529950)
  • Renamed launchActivity to startActivity (I7db90, b/430332856)
  • ‫Scene.activitySpaceRoot حذف شد. درعوض از Scene.activitySpace استفاده کنید. (I05ee8،‏ b/378706624،‏ b/422215745)
  • ‫configureBundleForFullSpaceModeLaunch و configureBundleForFullSpaceModeLaunchWithEnvironmentInherited به‌ترتیب به createBundleForFullSpaceModeLaunch و createBundleForFullSpaceModeLaunchWithEnvironmentInherited تغییر نام داده شدند و به‌عنوان روش‌های سطح بالا به فایل LaunchUtils.kt منتقل شدند و Session را به‌عنوان پارامتر اول می‌گیرند (I64a2c، b/437186050)
  • GroupEntity factory اکنون به‌جای Entity، نوع 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 حاوی این ارسال‌ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • Unrestrict SceneCore's BaseEntity and BaseScenePose APIs (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 روش‌های Callback به Scene.kt اضافه شد تا وضوح درک‌شده پانل اصلی فعالیت در HSM را پایش کند. (I58084)
  • SurfaceEntity - پشتیبانی برای درخواست نمونه‌برداری عالی در زمان ایجاد به برنامه اضافه شد. این کار به برنامه‌ها اجازه می‌دهد از فیلتر نمونه‌برداری فوق‌العاده برای ضدپلگی استفاده کنند. (I06913)
  • دارایی recommendedContentBoxInFullSpace به ActivitySpace اضافه شد. این ویژگی چارگوش توصیه‌شده‌ای را برای قرار دادن محتوا در «حالت فضای کامل» برمی‌گرداند. (I4cd6f)
  • سازنده سربارگذاری‌شده برای اصلاح‌گر قابل‌جابه‌جایی ارائه شد که امکان لنگراندازی را فراهم می‌کند. (Ic0c70)

تغییرات میانای برنامه‌سازی کاربردی

تغییرات گسترده‌ای در 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 استفاده کنید. گیرنده‌ها و تنظیم‌کننده‌ها برای PanelEntity با ویژگی‌ها جایگزین شد. خصوصیت PanelEntity.size از Float3dSize به Float2dSize تغییر کرد. روش منسوخ‌شده androidx.xr.scenecore.PanelEntity.getPixelDimensions برداشته شد، به‌جای آن از getSizeInPixels استفاده کنید. (Icc174)
  • ‫Runnable جایگزین androidx.xr.scenecore.OnSpaceUpdatedListener شد. (I19308)
  • ‫SpatialUser.getCameraViews() با دارایی جایگزین شد. (Ib0cc5) برای ExrImage و GltfModel:، روش‌های create را به توابع تعلیق تغییر دادیم؛ پارامترهای ایجاد را اصلاح کردیم تا به‌جای String، Uri یا Path را بپذیرند. (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 و نوع آن از Rect به IntSize2d در روش create به‌روزرسانی شد. (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 تغییر نام داد به disposeParentOnReAnchor systemMovable تغییر نام داد از تابع create به‌نفع creeateCustomMovable، createSystemMovable، و createAnchorable برداشته شد (If11c4)
  • SurfaceEntity.featherRadiusX/Y را حذف می‌کند و مفهوم کلاس EdgeFeatheringParams را اضافه می‌کند. (Ic78fc)
  • روش PanelEntity.enablePanelDepthTest() با خصوصیت panelClippingConfig جایگزین شد. برای فعال کردن آزمایش عمق، Scene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true) را تنظیم کنید یا برای غیرفعال کردن آن، PanelClippingConfig(isDepthTestEnabled = false) را تنظیم کنید. (I0cbe0)
  • ‫Scene.mainPanelEntity اکنون از نوع MainPanelEntity است نه PanelEntity (I7125a)
  • نام روش setFullSpaceMode از Scene به configureBundleForFullSpaceModeLaunch و نام روش setFullSpaceModeWithEnvironmentInherited به configureBundleForFullSpaceModeLaunchWithEnvironmentInherited تغییر کرد. (I0cbe0) (I0cbe0)
  • Renamed SpatialVisibility's UNKNOWN, OUTSIDE_FOV, PARTIALLY_WITHIN_FOV, and WITHIN_FOV values to SPATIAL_VISIBILITY_UNKNOWN, SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW, SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW, and SPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW, respectively (Ie7e8c)
  • کلاس SpatialVisibility با شیء عمومی با مقادیر Int ثابت جایگزین شد. ‫setSpatialVisibilityChangedListener اکنون به‌جای Consumer<SpatialVisibility>، Consumer<Int> را می‌پذیرد (Ie7e8c)
  • ‫PointerCaptureComponent ثابت تغییر نام داده شد و به شیء PointerCaptureComponent.PointerCaptureState منتقل شد (I9c7ac)
  • ‫Consumer<Int> جایگزین PointerCaptureComponents' StateListener شد. (I9c7ac)
  • ‫Consumer<InputEvent> جایگزین InputEventListener شد (I9c7ac)
  • setPreferredAspectRatio از کلاس Scene به شیء SpatialWindow منتقل شد و Session را به‌عنوان پارامتر اول می‌گیرد. (I7b717)
  • ‫Entity.setHidden() با Entity.setEnabled() و Entity.isHidden() با Entity.isEnabled() جایگزین شد. ‫setHidden(false) برابر با setEnabled(true) و isHidden() == !isEnabled() است. (Icf0de)
  • نوع Entity.contentDescription از «رشته» به CharSequence تغییر کرد. (Ie59be)
  • Session.create و Session.configure اکنون وقتی اجازه‌های کافی اعطا نشده باشد، به‌جای برگرداندن SessionCreatePermissionsNotGranted یا SessionConfigurePermissionsNotGranted، SecurityException را برمی‌گردانند. (I7c488)
  • ResizableComponent.create now requires a Consumer<ResizeEvent> ResizeEventListener was replaced with Consumer<ResizeEvent> ResizableComponent.size was renamed to ResizableComponent.affordanceSize ResizableComponent.minimumSize was renamed to ResizableComponent.minimumEntitySize ResizableComponent.maximumSize was renamed to ResizableComponent.maximumEntitySize, ResizableComponent.autoHideContent was renamed to ResizableComponent.shouldAutoHideContent ResizableComponent.forceShowResizeOverlay was renamed to ResizableComponent.shouldAlwaysShowOverlay (I97a2d)
  • ‫minSDK به ۲۴ برای androidx.xr.scenecore و androidx.xr.compose کاهش یافت. بسته‌های XR همچنان در زمان اجرا به API 34 نیاز دارند. (I17224)
  • محدودیت RequiresApi(34) در همه بسته‌های Jetpack XR برداشته شد. این محدودیت زائد بود زیرا Jetpack XR درحال‌حاضر فقط در دستگاه‌های دارای سطح میانای برنامه‌سازی کاربردی ۳۴ و بالاتر دردسترس است. (Iae0f8)
  • ساخته اصلی SceneCore (xr:scenecore:scenecore) فقط حاوی میاناهای برنامه‌سازی کاربردی ناهمگام به سبک Kotlin خواهد بود. توسعه‌دهندگان Java می‌توانند برای دسترسی به میاناهای برنامه‌سازی کاربردی سازگار به کتابخانه xr:scenecore:scenecore-guava متکی باشند. (If221b)
  • پروژه‌های منتشرشده با Kotlin 2.0 برای استفاده به KGP 2.0.0 یا جدیدتر نیاز دارند (Idb6b5)
  • این کتابخانه اکنون از حاشیه‌نویسی‌های پوچی JSpecify استفاده می‌کند که از نوع استفاده هستند. توسعه‌دهندگان 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)
  • مقادیر Config *Mode برای نشان دادن رفتارشان تغییر نام داده‌اند. (I6d247)
  • مشکلات مربوط به FOV و HitTest در SceneCore TestApp برطرف شد. (I2c51e)
  • اشکال SpatialCapabilities.hasCapability() برطرف شد که در آن اگر هرکدام از قابلیت‌های ارسال‌شده با OR بیتی درست بود، به‌جای اینکه فقط درصورت درست بودن همه آن‌ها درست برگرداند، درست برمی‌گرداند. (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 را می‌پذیرند که امکان دریافت/تنظیم مقادیر مربوط به فضاهای مختلف را فراهم می‌کند. مقادیر پشتیبانی‌شده عبارتند از Parent،‏ Activity، و Real World spaces، و مقدار پیش‌فرض برای این پارامتر Parent است.
  • روش‌های افزونه Spatial Visibility Callback به SessionExt.kt اضافه شده است تا زمانی که محتوای صحنه به داخل یا خارج از میدان دید کاربر حرکت می‌کند، نظارت شود.
  • ‫setPointSourceParams به SpatialAudioTrack اضافه شده است، که اجازه می‌دهد پارامترها پس‌از ساخته شدن دسته به‌روزرسانی شوند.
  • کلاس جدیدی به‌نام Scene با ارجاع به میاناهای برنامه‌سازی کاربردی Scenecore اضافه شد. «صحنه» به‌عنوان ویژگی افزونه «جلسه» دردسترس خواهد بود. توابع داخل SessionExt به Scene منتقل شده‌اند، بنابراین واردات باید تنظیم شوند؛ برای مثال، SessionExt.getScene(session).‫addSpatialCapababilitiesChangedListener درمقابل SessionExt.addSpatialCapabilitiesChangedListener.
  • ActivityPose.hitTestAsync اضافه شد و hitTest را دربرابر محتوای مجازی فعال کرد.
  • نوع مؤلفه جدید SpatialPointerComponent اضافه شد که به مشتریان اجازه می‌دهد نماد ارائه‌شده برای اشاره‌گر را مشخص کنند یا نماد را غیرفعال کنند. این «مؤلفه» درحال‌حاضر فقط می‌تواند به PanelEntity نمونه پیوست شود.
  • معرفی کارخانه جدید PanelEntity که ابعاد پانل را به متر یا پیکسل می‌گیرد. کارخانه قدیمی‌تر PanelEntity که دو پارامتر نوع Dimension را برای پانل می‌گرفت برداشته شد.

تغییرات میانای برنامه‌سازی کاربردی

  • محدودیت RequiresApi(34) در همه بسته‌های Jetpack XR برداشته شد. این محدودیت زائد بود زیرا Jetpack XR درحال‌حاضر فقط در دستگاه‌های دارای سطح میانای برنامه‌سازی کاربردی ۳۴ و بالاتر دردسترس است. (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) جایگزین شود.
  • کلاس Session در SceneCore به‌نفع Session در XR Runtime حذف شده است.
  • نام StereoSurfaceEntity به SurfaceEntity تغییر کرد.
  • ‫Entity.setSize و Entity.getSize برداشته شدند و همان روش‌ها به PanelEntity اضافه شدند.
  • نام PointSourceAttributes به PointSourceParams تغییر کرد.
  • نام SpatializerConstants.SOURCE\_TYPE\_BYPASS به SpatializerConstants.SOURCE\_TYPE\_DEFAULT تغییر کرد.
  • نهاد PointSourceParams از دسترسی عمومی به دسترسی داخلی تغییر کرده است.
  • AnchorEntity.create اکنون به PlaneTrackingMode نیاز دارد تا در Session.configure() پیکربندی شود.
  • اکنون میاناهای برنامه‌سازی کاربردی SpatialUser نیاز دارند که HeadTrackingMode در Session.configure() پیکربندی شود.
  • وقتی ResizableComponent پیوست نشده باشد، به‌جای گزارش سطح ERROR، گزارش سطح INFO ارائه خواهد شد.
  • کلاس 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.setFullSpaceMode
    • import androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
  • ‫Session.setPreferredAspectRatio(Activity, Float) به عملکرد افزونه منتقل شده است. فایل‌های توسعه‌دهنده باید واردات جدید را برای دسترسی اضافه کنند:
    • import androidx.xr.scenecore.setPreferredAspectRatio
  • Session.getEntitiesOfType(Class<out T>) و Session.getEntityForRtEntity(RtEntity) به توابع افزونه منتقل شده‌اند. فایل‌های توسعه‌دهنده باید واردات جدید را برای دسترسی اضافه کنند:
    • import androidx.xr.scenecore.getEntitiesOfType
    • import androidx.xr.scenecore.getEntityForRtEntity
  • Session.unpersistAnchor(Anchor) حذف شد
  • Session.createPersistedAnchorEntity(UUID) حذف شد

مشکلات شناخته‌شده

  • PanelEntity.setCornerRadius() و ActivityPanelEntity.setCornerRadius() ممکن است تا زمانی که پانل دوباره جابه‌جا نشود اعمال نشوند، این مشکل را می‌توان با جابه‌جا کردن پانل به موقعیت فعلی‌اش کاهش داد
  • وقتی BoundsChanged در ActivitySpace فراخوانی می‌شود، ممکن است برخی‌از ActivityPoseها به‌درستی به‌روز نشده باشند. این مورد در تماس OnSpaceUpdated بعدی در ActivitySpace به‌روز خواهد شد

تغییرات ناگهانی و رفتاری

  • PanelEntity و ActivityPanelEntity دارای شعاع گوشه پیش‌فرض ۳۲ دی‌پی یا کوچک‌تر خواهند بود اگر پانل دارای عرض یا ارتفاع کوچک‌تر از ۳۲ دی‌پی باشد

میاناهای برنامه‌سازی کاربردی و قابلیت‌های جدید

  • StereoSurface.CanvasShape را معرفی می‌کند که امکان ایجاد بوم‌های نقاشی Spherical و Hemispherical را برای رندر کردن رسانه‌های فراگیر فراهم می‌کند.
  • StereoSurfaceEntity.create() اکنون پارامتر CanvasShape را می‌پذیرد. (این پارامتر درحال‌حاضر نادیده گرفته می‌شود، اما در نسخه پخش آتی استفاده خواهد شد)
  • StereoSurfaceEntity.create() دیگر پارامتر Dimensions را نمی‌پذیرد. برنامه‌ها باید اندازه بوم را ازطریق تنظیم CanvasShape کنترل کنند
  • StereoSurfaceEntity دارای عضو CanvasShape است که می‌تواند به‌صورت پویا تنظیم شود.
  • StereoSurfaceEntity.dimensions اکنون یک ویژگی فقط خواندنی است؛ برنامه‌ها باید CanvasShape را برای تغییر ابعاد تنظیم کنند.
  • StereoSurfaceEntity اکنون اجازه می‌دهد StereoMode پس‌از ساخت‌وساز بازنشانی شود.

تغییرات دیگر

  • کیت توسعه نرم‌افزار حداقل زمان ترجمه به ۲۴ کاهش یافت. همه میاناهای برنامه‌سازی کاربردی Jetpack XR همچنان در زمان اجرا به میانای برنامه‌سازی کاربردی ۳۴ نیاز دارند.
  • کارخانه جلسه 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 برای ادغام آسان با مدل‌های موجود پشتیبانی می‌کند.
  • SpatialAudio: منابع صوتی محیطی و نقطه‌ای را به صحنه سه‌بعدی خود اضافه کنید تا صدایی کاملاً فراگیر و فضایی داشته باشید.
  • StereoSurfaceEntity: SceneCore از مسیریابی چشم چپ/راست محتوای رندرشده روی Android Surface پشتیبانی می‌کند. از این ویژگی می‌توان برای ارائه محتوای برجسته‌نمایی در قالب پهلو‌به‌پهلو یا بالا-پایین استفاده کرد، مانند عکس‌های استریو، ویدیو سه‌بعدی، یا دیگر واسط‌های کاربر ارائه‌شده به‌صورت پویا. برنامه‌ها باید از MediaPlayer یا ExoPlayer برای رمزگشایی ویدیو استفاده کنند.
  • سیستم مؤلفه: SceneCore یک سیستم مؤلفه قوی و انعطاف‌پذیر برای افزودن قابلیت‌ها به محتوای واقعیت گسترده شما ارائه می‌دهد، ازجمله امکاناتی برای کاربران برای جابه‌جایی، تغییر اندازه، و تعامل با مدل‌ها و پانل‌ها.
  • اتصال: با فعال کردن حالت دیدن محیط، می‌توانید پانل‌ها و مدل‌ها را به سطوح واقعی متصل کنید و به کاربران امکان دهید محتوای مجازی را به‌طور یکپارچه در محیط واقعی خود ادغام کنند.
  • ژست کاربر: دسترسی به مکان کاربر در صحنه مجازی، برای جهت‌دهی محتوای شما در اطراف موقعیت کاربر.
  • SpatialCapabilities: برنامه‌های کاملاً تطبیقی بسازید که از قابلیت‌های فضایی‌شده درصورت دردسترس بودن بهره می‌برند، مثل موقعیت‌یابی سه‌بعدی محتوای واسط کاربر. علاوه‌براین، برنامه‌تان می‌تواند تغییرات قابلیت‌ها را درحین اجرای برنامه پایش کند تا تجربه را براساس نحوه استفاده کاربر از دستگاه Android XR خود اصلاح کند.

مشکلات شناخته‌شده

  • درحال‌حاضر، برای استفاده از Jetpack SceneCore، حداقل SDK‏ ۳۰ لازم است. به‌عنوان راه‌حل، ورودی مانیفست <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> زیر را اضافه کنید تا بتوانید با minSDK‏ ۲۳ بسازید و اجرا کنید.
  • جلسه می‌تواند در موقعیت‌های مختلفی که به‌طور خودکار «فعالیت» را بازسازی می‌کنند نامعتبر شود، ازجمله تغییر اندازه پانل اصلی، اتصال دستگاه‌های جانبی، و جابه‌جایی بین حالت روشن و تاریک. اگر با مشکلات نامعتبر شدن جلسه مواجه شدید، راه‌حل‌های جایگزین شامل غیرقابل‌تغییر اندازه کردن پانل اصلی، استفاده از موجودیت پانل پویا، غیرفعال کردن بازآفرینی فعالیت برای تغییرات پیکربندی خاص، یا غیرفعال کردن تغییرات زمینه حالت روشن/تاریک است.
  • مؤلفه‌های «قابل‌جابه‌جایی» و «قابل‌تغییر اندازه» در GltfEntity پشتیبانی نمی‌شوند.
  • Entity.getSize()‎ در GltfEntity پشتیبانی نمی‌شود.
  • برنامه‌های Jetpack XR باید اجازه android.permission.SCENE_UNDERSTANDING را در AndroidManifest درخواست کنند.
  • ایجاد کردن جلسه فقط در دستگاه Android XR پشتیبانی می‌شود. درحال‌حاضر، اگر «جلسه‌ای» ایجاد کنید و بخواهید از آن در دستگاهی غیراز Android XR استفاده کنید، RuntimeException دریافت خواهید کرد.
  • تنظیم skybox روی null ازطریق `SpatialEnvironment.setSpatialEnvironmentPreference() منجر به skybox سیاه یکدست نمی‌شود، همان‌طور که در سند آمده است. ممکن است منجر به نمایش جعبه آسمان پیش‌فرض سیستم شود یا تغییری در جعبه آسمان فعلی ایجاد نشود.
  • کارخواه‌های SceneCore باید implementation(“com.google.guava:listenablefuture-1.0”) را به پیکربندی Gradle خود برای وابستگی‌های برنامه‌شان اضافه کنند. در نسخهٔ پخش آتی، scenecore این کتابخانه را به‌عنوان وابستگی api اضافه خواهد کرد تا کارخواه‌ها نیازی به اعلام صریح آن نداشته باشند.
  • SceneCore به‌اشتباه com.google.guava:guava-31.1-android و com.google.protobuf:protobuf-javalite را به‌عنوان وابستگی‌های متعدی دربرمی‌گیرد. اگر این کار منجر به خطاهای کلاس تکراری در ساخت شما شود، این دو وابستگی را می‌توان به‌طور ایمن مستثنی کرد.
  • اگر برنامه‌تان از SceneCore استفاده می‌کند و ProGuard را فعال می‌کند، هنگام ایجاد «جلسه» ازکار خواهد افتاد. به‌عنوان راه‌حل، ProGuard را غیرفعال کنید. برای اطلاعات بیشتر درباره نحوه فعال کردن ProGuard، به این راهنما مراجعه کنید.