‫Jetpack SceneCore

ساختن و دستکاری کردن گراف صحنه Android XR با محتوای سه‌بعدی.
جدیدترین به‌روزرسانی نسخه پایدار نامزد انتشار انتشار نسخه بتا نسخه آلفا
۷ اکتبر ۲۰۲۶ - 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)
  • ‫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)
  • اکنون نهادهای فضایی از تراکم دستگاه پایدار برای محاسبات پیکسل به متر در سطوح «میانای برنامه‌سازی کاربردی فضایی» ۱ و ۲ استفاده می‌کنند و بدین ترتیب اندازه ثابت بدون درنظر گرفتن تغییرات تراکم نمایشگر سیستم تضمین می‌شود. (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)
  • ثابت‌های PlaneSemanticType PlaneOrientation در SceneCore از نوع Int به انواع سفارشی انتقال یافته است. ثابت‌های 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)
  • درحال افزودن عناصر صدای فراگیر: PositionalAudioComponent، SoundEffectPoolComponent، و SoundFieldAudioComponent (Ieda89)
  • ‫AnchorEntity.getAnchor با AnchorEntity.anchor جایگزین شد و اکنون وقتی AnchorEntity از Anchor ARCore ایجاد شده باشد (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)
  • ‫XrLog API اضافه شد. برای فعال کردن گزارش‌گیری در 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 API برای کنترل پویانمایی‌های 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، به SceneCore Runtime براساس منطق در 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 در SceneCore TestApp برطرف شد. (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.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 شعاع گوشه پیش‌فرضی برابر با ۳۲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، این راهنما را ببینید.