جت‌پک سین‌کور

ساخت و دستکاری نمودار صحنه اندروید XR با محتوای سه‌بعدی.
آخرین به‌روزرسانی انتشار پایدار کاندیدای انتشار انتشار بتا انتشار آلفا
۱۷ ژوئن ۲۰۲۶ - - - ۱.۰.۰-آلفا۱۶

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

برای افزودن وابستگی به XR SceneCore، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Google's Maven را مطالعه کنید.

وابستگی‌های مربوط به مصنوعات مورد نیاز خود را در فایل build.gradle برای برنامه یا ماژول خود اضافه کنید:

شیار

dependencies {
    implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha16"

    // Use to write unit tests
    testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha16"
}

کاتلین

dependencies {
    implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha16")

    // Use to write unit tests
    testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha16")
}

برای اطلاعات بیشتر در مورد وابستگی‌ها، به «افزودن وابستگی‌های ساخت» مراجعه کنید.

بازخورد

بازخورد شما به بهبود Jetpack کمک می‌کند. اگر مشکلات جدیدی کشف کردید یا ایده‌هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد یک کتابخانه جدید، نگاهی به مشکلات موجود در این کتابخانه بیندازید. می‌توانید با کلیک بر روی دکمه ستاره، رأی خود را به یک مشکل موجود اضافه کنید.

ایجاد یک مسئله جدید

برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.

نسخه ۱.۰

نسخه ۱.۰.۰-آلفا۱۶

۱۷ ژوئن ۲۰۲۶

androidx.xr.scenecore:scenecore-*:1.0.0-alpha16 منتشر شد. نسخه 1.0.0-alpha16 شامل این کامیت‌ها است.

تغییرات API

  • اضافه بارهایی برای addVertexData ، setIndexData و addSubset به CustomMesh.BuilderFromMeshData و CustomMesh.BuilderFromMeshBuffer اضافه شده است. این اضافه بارهای اضافی به توسعه‌دهندگان اجازه می‌دهد تا داده‌ها و پارامترهای خام (مثلاً ByteBuffer ، offset ، size ، topology ، indexOffset ، indexCount ) را مستقیماً و بدون نیاز به قرار دادن آنها در اشیاء واسطه مانند ByteBufferRegion یا MeshSubset ارسال کنند. ( I84d5c )
  • Scene.requestFullSpaceMode() و Scene.requestHomeSpaceMode() به ترتیب به requestFullSpace() و requestHomeSpace() تغییر نام داده‌اند. سایر متدها و مستندات مربوط به "Home Space Mode" و "Full Space Mode" نیز به طور مشابه به‌روزرسانی شده‌اند. ( I45751 )
  • API تست عمومی PanelEntityTester و MainPanelEntityTester ( I961e4 ) را ارائه می‌دهد.
  • افزودن ویژگی pointSourceParams به SoundEffectPoolComponent ( I4a750 )
  • ارائه API تست عمومی MovableComponentTester ( I0c972 )
  • API تست عمومی PointerCaptureComponentTester ( Ic0d4f ) را ارائه می‌دهد.
  • API تست عمومی ActivityPanelEntityTester ( I837c4 ) را ارائه می‌دهد.
  • API تست عمومی ResizableComponentTester ( I0a3a4 ) را ارائه می‌دهد.
  • API تست عمومی BoundsComponentTester. ( Iefd53 )
  • ارائه API تست عمومی SpatialMediaPlayerTester ( Ia3e09 )
  • ارائه API تست عمومی SpatialEnvironmentTester ( Icf60f )
  • API تست عمومی GltfModelTester و SceneCoreTestRule.getGltfModelTester را ارائه می‌دهد. ( I33fcb )
  • API تست عمومی InteractableComponentTester را ارائه می‌دهد. ( Ia7096 )
  • API تست عمومی SurfaceEntityTester را ارائه می‌دهد. ( Ic0740 )
  • API تست عمومی GltfModelEntityTester ، TestGltfModelNode و TestGltfAnimation را ارائه می‌دهد. ( I72c4d )
  • رابط برنامه‌نویسی کاربردی تست عمومی SceneTester و SceneCoreTestRule.sceneTester را ارائه می‌دهد. ( Ib4ec5 )
  • رابط برنامه‌نویسی کاربردی تست عمومی PerceptionSpaceTester و SceneCoreTestRule.perceptionSpaceTester را ارائه می‌دهد. ( Icf739 )
  • API تست عمومی MeshEntityTester را ارائه می‌دهد. ( I63801 )
  • API تست عمومی ImageBasedLightingAssetTester و SceneCoreTestRule.getTester را برای overloadها ارائه می‌دهد. ( I57ec4 )
  • ارائه دهنده API تست عمومی TextureTester ( Ia865b )
  • API تست عمومی PositionalAudioComponentTester ( Icd96e ) را ارائه می‌دهد.
  • ارائه API تست عمومی SpatialSoundPoolTester ( Ia3531 )
  • ارائه API تست عمومی SoundEffectPoolTester ( If349a )
  • API تست عمومی ActivitySpaceTester و SceneCoreTestRule.activitySpaceTester را ارائه می‌دهد. ( I2d5c2 )
  • ارائه API تست عمومی SpatialWindowTester ( I41837 )
  • ارائه دهنده API تست عمومی AnchorEntityTester ( I68404 )
  • رابط API تست عمومی SceneCoreTestRule را ارائه می‌دهد. ( Ic72d3 )
  • کلاس PixelDensity اضافه شد و از طریق Scene#virtualPixelDensity در معرض آن قرار گرفت تا نسبت پیکسل بر متر مبتنی بر سخت‌افزار برای نگاشت دقیق ابعاد فیزیکی در ActivitySpace ارائه شود. ( I0e3ac )
  • API های عمومی برای ایجاد و رندر مش های سفارشی اضافه شد. ( I7ad2f )
  • رابط برنامه‌نویسی کاربردی VertexLayout به‌روزرسانی شده است تا از فهرستی از VertexBufferLayout ها استفاده کند، که در آن هر VertexBufferLayout ویژگی‌های درون یک بافر رأس را توصیف می‌کند. این امر امکان چیدمان داده‌های رأس انعطاف‌پذیرتر، از جمله ویژگی‌های درهم‌تنیده با گام‌ها و آفست‌های سفارشی را فراهم می‌کند. ( Ic426b )
  • MovableComponent.createTrackingMovable را برای تبدیل یک ARCore Trackable به یک حالت نسبت به فضای فعالیت (Activity Space) فراهم می‌کند. ( I12249 )
  • مقدار پیش‌فرض برای والد در Entity.create به null به‌روزرسانی شده است. ( Ic3145 )
  • Entity به جای یک رابط، به یک کلاس تبدیل شد و اکنون کلاس پایه برای همه انواع Entity است. به عنوان بخشی از این تغییر، BaseEntity حذف شد. ( I7fbc9 )
  • GltfModel ، ExrImage و ImageBasedLightingAsset اکنون AutoCloseable را پیاده‌سازی می‌کنند تا امکان مدیریت منابع اصطلاحی را با استفاده از بلوک use در کاتلین فراهم کنند. ( I1ac79 )
  • کلاس ImageBasedLightingAsset برای جایگزینی ExrImage جهت تعریف نورپردازی محیطی معرفی شد. ExrImage منسوخ شده و از API عمومی حذف شده است. SpatialEnvironmentPreference برای استفاده از ImageBasedLightingAsset به‌روزرسانی شده است. ( I6c92a )
  • پارامتر skybox در SpatialEnvironment به imageBasedLightingAsset تغییر نام داد تا هدف آن را بهتر منعکس کند، و توضیح داد که بافت‌های بصری skybox باید در پارامتر geometry گنجانده شوند. ( I24d4a )
  • موجودیت‌های مکانی اکنون از چگالی دستگاه پایدار برای محاسبات پیکسل به متر در سطوح ۱ و ۲ API مکانی استفاده می‌کنند و صرف نظر از تغییرات چگالی نمایش سیستم، اندازه ثابتی را تضمین می‌کنند. ( I37051 )

نسخه ۱.۰.۰-آلفا۱۵

۱۹ مه ۲۰۲۶

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

تغییرات API

  • Entity.dispose() اکنون به عنوان API عمومی حذف شده است. به جای فراخوانی dispose() در نمونه‌های Entity، برنامه‌ها می‌توانند با تنظیم parent به null و با پاک کردن هرگونه ارجاع قوی به آن نمونه‌ها، نمونه‌ها را قابل پاک‌سازی کنند. ( I396c9 )
  • متدهای set/clearOnLoadCompleteListener از SoundEffectPool حذف شده‌اند. به جای آن add/removeLoadCompleteListener استفاده کنید. ( Iae78d )
  • set/clearSpatialVisibilityChangedListener صحنه با add/removeSpatialVisibilityChangedListener ‎ جایگزین شد. ( I67dff )
  • تمام متدهای add/removeOnFooListener در SceneCore به add/removeFooListener تغییر نام داده‌اند و On از نام آنها حذف شده است. ( Ibe50b )
  • متدهای AnchorEntity.setOnOriginChangedListener و AnchorEntity.setOnStateChangedListener با متدهای add/removeFooListener جایگزین شده‌اند تا از چندین شنونده همزمان پشتیبانی کنند. ( I13749 )
  • نام AnchorEntity.State.TIMEDOUT به State.TIMED_OUT تغییر یافت. ( Id2b8d )
  • رابط برنامه‌نویسی کاربردی کامپوننت (Component API) برای بهبود ایمنی و توسعه‌پذیری، بازسازی شده است. Component (Component) اکنون یک کلاس انتزاعی (abstract) است. متدهای onAttach() و onDetach() اکنون برای جلوگیری از فراخوانی مستقیم، protected . لطفاً Entity.addComponent() و Entity.removeComponent() برای مدیریت چرخه حیات کامپوننت استفاده کنید. ( Id04e8 )
  • ثابت‌های PlaneSemanticType PlaneOrientation در SceneCore از نوع Ints به نوع‌های سفارشی منتقل شده‌اند. ثابت‌های ANY آنها حذف خواهند شد، کلاینت‌ها باید به جای آنها، تمام ثابت‌های مورد نظر را به صراحت شمارش کنند، یا از ثابت‌های Set تغییرناپذیر جدید .ALL استفاده کنند. متد کارخانه‌ای AnchorEntity اکنون به جای یک مقدار واحد، مجموعه‌ای از این نوع‌ها را می‌پذیرد. ( Ib1033 )
  • پشتیبانی از انیمیشن اسکلتی (پوسته‌بندی) به رابط برنامه‌نویسی کاربردی آزمایشی مش سفارشی اضافه شد. توسعه‌دهندگان اکنون می‌توانند با مشخص کردن boneCount هنگام ایجاد یک MeshEntity و به‌روزرسانی انیمیشن به صورت بلادرنگ با استفاده از MeshEntity.setBoneTransforms() مش‌های سفارشی را متحرک‌سازی کنند. ( Id8ba2 ، b/496692490 )
  • رابط برنامه‌نویسی کاربردی آزمایشی CustomMesh معرفی شد. توسعه‌دهندگان اکنون می‌توانند با استفاده از CustomMesh ، MeshBuffer و MeshEntity ، هندسه سه‌بعدی را در صحنه‌های خود به صورت برنامه‌نویسی ایجاد و رندر کنند. ( I94617 )
  • androidx.xr.scenecore.SpatializerConstants.SourceType.SOURCE_TYPE_SOUND_FIELD حذف شد. به جای آن SourceType.SOUND_FIELD استفاده کنید. ( Ia68b9 )
  • افزودن اجزای صوتی فضایی: PositionalAudioComponent ، SoundEffectPoolComponent و SoundFieldAudioComponent ( Ieda89 )
  • AnchorEntity.getAnchor با AnchorEntity.anchor جایگزین شد و اکنون وقتی AnchorEntity از یک 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 را فراخوانی نکنید و اجزای صدای مکانی را متصل/جدا نکنید. این مشکل در نسخه بعدی برطرف خواهد شد.

نسخه ۱.۰.۰-آلفا۱۴

۶ مه ۲۰۲۶

androidx.xr.scenecore:scenecore-*:1.0.0-alpha14 منتشر شد. نسخه 1.0.0-alpha14 شامل این کامیت‌ها است.

تغییرات API

  • TrackingState و VpsAvailabilityResult به androidx.xr.arcore package منتقل شده‌اند و انواع موجود در androidx.xr.runtime اکنون منسوخ شده‌اند. ( Ic7930 ، b/480462213 )
  • نام Plane.Type به PlaneType تغییر یافت. ( I8c90c ، b/482675376 )
  • نام Plane.Label به PlaneLabel تغییر یافت. ( Ic6b67 ، b/482675376 )
  • androidx.xr.runtime.FieldOfView منسوخ شده است. به جای آن androidx.xr.runtime.math.FieldOfView استفاده کنید. ( Ia01a0 , b/480233045 )
  • Matrix4.pose به Matrix4.toPose() تغییر نام داده است. ویژگی pose اکنون منسوخ شده است. ( I329b4 , b/493383490 )
  • مقادیر شمارشی HandJointType تغییر نام داده شدند. ( Ifbc83 ، b/482670596 )
  • Component.onAttach و onDetach به عنوان API عمومی ارائه دهید تا امکان پیاده‌سازی‌های Component سفارشی فراهم شود. ( I0ca1f )
  • افزودن مؤلفه‌های صدای فضایی ( I39ddd ، b/489421980 ، b/436642086 ، b/436642499 )
  • Entity را از PointSourceParams حذف کنید. در عوض، Entity مستقیماً با SpatialAudioTrack ، SpatialSoundPool و SpatialMediaPlayer ( Ib3685 ، b/489421980 ، b/436634048 ) استفاده خواهد شد.
  • نام DeviceTrackingMode.LAST_KNOWN به SPATIAL_LAST_KNOWN (با یک جایگزین منسوخ‌شده) تغییر یافت، INERTIAL_LAST_KNOWN برای ردیابی 3DoF اضافه شد، و TRACKING_DEGRADED به TrackingState اضافه شد. ( Ie661c ، b/445466590 )
  • GroupEntity منسوخ شده. برای داشتن یک Entity که فقط قابلیت Entity پایه را دارد، Entity.create را فراخوانی کنید که رابط Entity و ( I4c450 ، b/473867483 ) را برمی‌گرداند.
  • رابط برنامه‌نویسی کاربردی XrLog اضافه شد. برای فعال کردن ثبت وقایع در JetpackXR، مقدار XrLog.isEnabled را روی true تنظیم کنید و XrLog.Level برای تنظیم سطح ثبت وقایع استفاده کنید. ( I76a1f ، b/463460895 ، b/487378441 )

رفع اشکالات

  • Scene.keyEntity اکنون به طور پیش‌فرض روی mainPanelEntity تنظیم شده است. ( I6a3ef )

نسخه ۱.۰.۰-آلفا۱۳

۲۵ مارس ۲۰۲۶

androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 منتشر شد. نسخه 1.0.0-alpha13 شامل این کامیت‌ها است.

تغییرات API

  • پرچم unscaledGravityAlignedActivitySpace از Session.create حذف شد. ActivitySpace اکنون همیشه بدون مقیاس و با گرانش تراز شده است. ( If6f11 ، b/458173423 )
  • توابع منسوخ شده setMaterialOverride و clearMaterialOverride از GltfModelEntity که اکنون در GltfModelNode فراخوانی می‌شوند، حذف شدند. ( I2e5d2 )
  • transformPixelCoordinatesToLocalPosition و transformNormalizedCoordinatesToLocalPosition به PanelEntity اضافه شدند و متدهای آزمایشی معادل که به جای موقعیت‌های Vector3 پوزها را برمی‌گرداندند، حذف شدند. ( Ib6960 ، b/460123106 ، b/458333591 )
  • APIهای GltfAnimation برای کنترل انیمیشن‌های glTF در SceneCore اضافه شد. ( I2c172 ، b/466065486 ، b/465819070 ، b/465818617 )
  • تغییر نام ScenePose.activitySpacePose به ScenePose.poseInActivitySpace ( I8f175 ، b/427822261 )
  • پیاده‌سازی زمان اجرای پیش‌بینی‌شده‌ی Scenecore اضافه شد ( I9c4ab ، b/476440158 )
  • هنگام تغییر اندازه‌ی موجودیت پنل اصلی، ممکن است خود را به مبدا ActivitySpace منتقل کند. هیچ راه حلی جز بازگرداندن پنل به محل اصلی خود به صورت دستی یا برنامه‌نویسی وجود ندارد. این اشکال در نسخه‌های آینده برطرف خواهد شد. ( b/489427007 ).
  • در برخی موارد، ممکن است affordance مربوط به MovableComponent برای SurfaceEntity و سایر انواع موجودیت‌های غیر Panel ظاهر نشود. تنظیم صریح MovableComponent.size باعث ظاهر شدن affordance خواهد شد. این اشکال در نسخه بعدی ( b/490983469 ) برطرف خواهد شد.

نسخه ۱.۰.۰-آلفا۱۲

۲۵ فوریه ۲۰۲۶

androidx.xr.scenecore:scenecore-*:1.0.0-alpha12 منتشر شد. نسخه 1.0.0-alpha12 شامل این کامیت‌ها است.

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

  • موجودات لنگر انداخته شده ممکن است پس از چند ثانیه از موقعیت لنگر انداخته شده خود به مبدا فضای فعالیت منتقل شوند.
  • ممکن است برنامه‌ها هنگام ایجاد نمونه‌های SurfaceEntity از کار بیفتند. این مشکل در androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 و نسخه‌های بعدی حل شده است. برنامه‌های آسیب‌دیده باید به آخرین نسخه‌ها به‌روزرسانی شوند.

تغییرات API

  • ActivitySpace.addOnSpaceUpdatedListener و ActivitySpace.removeOnSpaceUpdatedListener به addOnOriginChangedListener و removeOnOriginChangedListener تغییر نام داده‌اند. AnchorEntity.setOnSpaceUpdatedListener به setOnOriginChangedListener تغییر نام داده شده است. ( I5d8fb )
  • ویژگی نام عمومی به FakeEntity اضافه شد و نمای آن در FakePanelEntity عمومی شد. ( Ifa1f9 )

رفع اشکالات

  • محاسبات تراکم پیکسلی در تصاویر سیستم جدیدتر ( I57d04 ) اصلاح شد.

نسخه ۱.۰.۰-آلفا۱۱

۲۸ ژانویه ۲۰۲۶

androidx.xr.scenecore:scenecore-*:1.0.0-alpha11 منتشر شد. نسخه 1.0.0-alpha11 شامل این کامیت‌ها است.

تغییرات API

  • نام PerceivedResolutionResult.InvalidCameraView را به PerceivedResolutionResult.InvalidRenderViewpoint تغییر می‌دهد، زیرا APIهای getPerceivedResolution اکنون به جای CameraViewScenePose به API 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 با ژست مناسب به دست آمده با استفاده از APIهای ARCore استفاده کنند. ( I2f69c ، b/446989745 )

نسخه ۱.۰.۰-آلفا۱۰

۳ دسامبر ۲۰۲۵

androidx.xr.scenecore:scenecore-*:1.0.0-alpha10 منتشر شد. نسخه 1.0.0-alpha10 شامل این کامیت‌ها است.

تغییرات API

  • transformPixelCoordinatesToPose و transformNormalizedCoordinatesToPose به PanelEntity ( I462b3 ) اضافه شدند.
  • یک کلاس کمکی، Utils، بر اساس منطق SceneCore ( I570b9 ) به SceneCore Runtime اضافه شد.

رفع اشکالات

  • مشکل از کار افتادن احتمالی که ممکن بود هنگام از بین رفتن Session و دریافت SpatialModeChangeEvent رخ دهد ( If44e8 ) برطرف شد.
  • اشکالی که می‌توانست باعث شود هنگام خروج یا ورود مجدد به یک فعالیت، یک IllegalStateException ایجاد شود، برطرف شد. ( Ibff1c )

نسخه ۱.۰.۰-آلفا۰۹

۱۹ نوامبر ۲۰۲۵

androidx.xr.scenecore:scenecore-*:1.0.0-alpha09 منتشر شد. نسخه 1.0.0-alpha09 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • یک API برای بازیابی ScenePose اضافه می‌کند که ترکیب ژست مبدا فضای ادراک و یک ژست نسبت به مبدا فضای ادراک را نشان می‌دهد. ( I5b50a )
  • تابع getGravityAlignedPose اضافه شد. پوز هم‌تراز با جاذبه، پیچ و رول چرخش را نادیده می‌گیرد. ( I5ae21 )
  • نوع ثابت‌های AnchorEntity.State از Ints به زیرنوع‌های State تغییر یافته است. ( Ib0c49 )
  • تابع getChildren() به رابط Entity اضافه شد. چرخه حیات MainPanelEntity به‌روزرسانی شد. ( Ia69d6 )

تغییرات API

  • نوع ثابت PointerCaptureComponent.PointerCaptureState از Ints به زیرنوع PointerCaptureState تغییر یافته است. ( Ic888a )
  • Scene.spatialCapabilities اکنون به جای یک فیلد Int، از نوع Set<SpatialCapability> است. ثابت‌های SpatialCapability تغییر نام داده‌اند. ( I9c109 )
  • انواع ثابت SurfaceEntity تغییر نام داده و از Ints به زیرگروه‌های SurfaceEntity تغییر یافته‌اند. ( ویرایش I419 )
  • انواع ثابت SpatializerConstant تغییر نام داده و از Ints به زیرنوع‌های SpatializerConstant تغییر یافته‌اند. ( Ia0e18 )
  • انواع ثابت TextureSampler تغییر نام داده و از Ints به زیرگروه‌های TextureSampler تغییر یافته‌اند. ( I44078 )
  • نوع ثابت‌های SpatialVisibility از Ints به زیرنوع‌های SpatialVisibility تغییر یافته است. ( I70739 )
  • نوع ثابت‌های ResizeEvent.ResizeState تغییر نام داده و از Ints به زیرنوع‌های ResizeState تغییر یافته‌اند. ( I384d5 )
  • نوع ثابت‌های InputEvent تغییر نام داده و از Ints به ارث‌بری از نوع دربرگیرنده مربوطه تغییر یافته‌اند. ( I82817 )
  • نوع ثابت‌های GltfModelEntity.AnimationState از Ints به زیرنوع‌های AnimationState تغییر یافته است. ( I24f4e )
  • نوع ثابت‌های AlphaMode تغییر نام داده و از Ints به زیرنوع‌های AlphaMode تغییر یافته‌اند. ( I27b56 )
  • انواع ثابت‌های Space از Ints به زیرنوع‌های Space تغییر یافته‌اند. ( I9255b )
  • ScenePose.hitTest و متدهای مرتبط، اکنون در صورت عدم یافتن تقاطع، به جای HitTestResult با hitPosition تهی، null تهی (null) را برمی‌گردانند. HitTestResult.hitPosition دیگر قابل تهی‌سازی نیست. ( I1400a )
  • ارجاع‌های ActivityPose به ScenePose تغییر یافت. ( I7fe43 )

نسخه ۱.۰.۰-آلفا۰۸

۲۲ اکتبر ۲۰۲۵

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

تغییرات API

  • تغییر نام ActivityPanelEntity.moveActivity به transferActivity ( I273c5 ، b/430332856 )

رفع اشکالات

  • :xr:scenecore:scenecore-spatial-rendering و :xr:scenecore:scenecore-spatial-core به عنوان وابستگی پیاده‌سازی به :xr:scenecore:scenecore ( I6ab65 ، b/447000520 ) اضافه شده‌اند.
  • اگر session.scene پس از تخریب جلسه مورد دسترسی قرار گیرد، استثنا ایجاد می‌شود. ( I77e6f )

نسخه ۱.۰.۰-آلفا۰۷

۲۴ سپتامبر ۲۰۲۵

androidx.xr.scenecore:scenecore:1.0.0-alpha07 ، androidx.xr.scenecore:scenecore-guava:1.0.0-alpha07 و androidx.xr.scenecore:scenecore-testing:1.0.0-alpha07 منتشر شدند. نسخه 1.0.0-alpha07 شامل این کامیت‌ها است.

تغییرات API

  • نام fixedAspectRatio را به isFixedAspectRatioEnabled تغییر داد و آن را به یک ویژگی بولی تبدیل کرد ( I5c4e8 ، b/440588971 )
  • فایل‌های جعلی Scenecore اکنون در ماژول xr:scenecore:scenecore-testing قرار دارند. ( Idd951 )
  • تغییر نام shouldAutoHideContent به isAutoHideContentWhileResizingEnabled و shouldAlwaysShowOverlay به isAlwaysShowOverlayEnabled ( I97c36 ، b/432335421 )
  • ثابت‌های SceneCore TextureSampler برای خوانایی بیشتر به‌روزرسانی شدند، برای مثال TextureSampler.MinFilter.LINEAR اکنون TextureSampler.MIN_FILTER_LINEAR ( Ib159c ) تبدیل شده است.
  • تنظیم‌کننده‌ی setKeyEntity صحنه در متغیر keyEntity ادغام شده است. تنظیم keyEntity روی یک Entity غیرقابل جابجایی مانند AnchorEntity به جای بازگرداندن مقدار بولی false، یک IllegalArgumentException تولید می‌کند. ( I62080 ، b/428721695 ، b/422215745 )
  • متغیر SpatialModeChangeListener صحنه با setSpatialModeChangedListener جایگزین شد. این متغیر به جای SpatialModeChangedListener ، یک Consumer<SpatialModeChangeEvent> می‌گیرد. setSpatialModeChangedListener اکنون می‌تواند به صورت اختیاری یک Executor (اجراکننده) را بپذیرد. ( I62080 ، b/428721695 ، b/422215745 )
  • پارامتر bundle از ActivityPanelEntity.startActivity ( I64344 ، b/430332856 ، b/430333040 ) حذف شد.
  • نام SpatializerConstants.SOURCE_TYPE_BYPASS به SpatializerConstants.SOURCE_TYPE_DEFAULT تغییر یافت. ( Ifc7fe ، b/422215565 )
  • ثابت SpatialSoundPool.PLAY_FAILED اضافه شد. ( Ifc7fe , b/422215565 )
  • آرگومان‌های پیش‌فرض به متدهای SpatialSoundPool.play اضافه شد. ( Ifc7fe ، b/422215565 )
  • مقدار برگشتی تنظیم‌کننده‌ها در SpatialAudioTrackBuilder حذف شد. ( Ifc7fe ، b/422215565 )
  • تغییرات SurfaceEntity
    • SurfaceEntity.CanvasShape به Shape تغییر نام داد
    • SurfaceEntity.CanvasShape.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 منتقل شدند و Session را به عنوان پارامتر اول در نظر می‌گیرند ( I64a2c ، b/437186050 ).
  • کارخانه GroupEntity اکنون به جای Entity، نوع GroupEntity را برمی‌گرداند. ( I66042 )

رفع اشکالات

  • وقتی یک نمونه موجودیت پس از dispose استفاده می‌شود، یک IllegalStateException صادر می‌کند. ( I90990 , b/427314036 , b/432063442 )

نسخه ۱.۰.۰-alpha06

۱۳ آگوست ۲۰۲۵

androidx.xr.scenecore:scenecore:1.0.0-alpha06 ، androidx.xr.scenecore:scenecore-guava:1.0.0-alpha06 و androidx.xr.scenecore:scenecore-testing:1.0.0-alpha06 منتشر شدند. نسخه 1.0.0-alpha06 شامل این کامیت‌ها است.

تغییرات API

  • APIهای BaseEntity و BaseScenePose مربوط به SceneCore را از حالت محدود خارج کنید ( 88c0ff6 )

نسخه ۱.۰.۰-آلفا۰۵

۳۰ ژوئیه ۲۰۲۵

androidx.xr.scenecore:scenecore-guava:1.0.0-alpha05 ، androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05 و androidx.xr.scenecore:scenecore:1.0.0-alpha05 منتشر شدند. نسخه 1.0.0-alpha05 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • رابط برنامه‌نویسی کاربردی Perceived Resolution به Panel Entities و SurfaceEntities اضافه شد. ( I118f6 )
  • متدهای فراخوانی PerceivedResolution به Scene.kt اضافه شدند تا وضوح درک شده پنل اصلی فعالیت در HSM را رصد کنند. ( I58084 )
  • SurfaceEntity - پشتیبانی برای درخواست نمونه‌برداری فوق‌العاده در زمان ایجاد برنامه اضافه شد. این به برنامه‌ها اجازه می‌دهد تا از فیلتر نمونه‌برداری فوق‌العاده برای ضد لغزش استفاده کنند. ( I06913 )
  • ویژگی recommendedContentBoxInFullSpace به ActivitySpace اضافه شد. این ویژگی یک کادر پیشنهادی برای قرار دادن محتوا در حالت Full Space برمی‌گرداند. ( I4cd6f )
  • سازنده‌ی overload شده‌ای برای اصلاح‌کننده‌ی متحرک ارائه شده است که امکان لنگر انداختن را فراهم می‌کند. ( Ic0c70 )

تغییرات API

تغییرات گسترده‌ای در API مربوط به SceneCore برای این نسخه ایجاد شده است. چندین کلاس تغییر نام داده و/یا به ماژول‌های مختلف منتقل شده‌اند و اکثر متدهای getter/setter با ویژگی‌های Kotlin جایگزین شده‌اند. اگرچه پیش‌بینی می‌کنیم تغییرات API تا اولین نسخه بتای ما در آینده رخ دهد، اما این تغییرات به اندازه قبل مخرب یا متعدد نخواهند بود.

  • کلاس‌ها و رابط‌های زیر تغییر نام داده و/یا منتقل شدند: androidx.xr.scenecore.PixelDimensions به androidx.xr.runtime.math.IntSize2d ؛ androidx.xr.scenecore.Dimensions به androidx.xr.runtime.math.FloatSize3d ؛ androidx.xr.scenecore.ActivityPose به ScenePose ، androidx.xr.scenecore.ContentlessEntity به GroupEntity ، androidx.xr.scenecore.PlaneType به PlaneOrientation ؛ androidx.xr.scenecore.PlaneSemantic به PlaneSemanticType . ( Ifd405 )( I3b622 )( If534d )
  • تعدادی از تنظیم‌کننده‌های ویژگی‌های Scene به صورت خصوصی تنظیم شده‌اند؛ قرار نبود که کلاینت‌های SceneCore آنها را تغییر دهند: activitySpace ، activitySpaceRoot ، mainPanelEntity ، perceptionSpace ، spatialCapabilities ، spatialEnvironment و spatialUser . ( I2f506 )
  • در Entity: موارد زیر به ویژگی‌ها تغییر داده شد: get/setParent() ، setContentDescription ؛ Entity.is/setHidden() منسوخ شده است، به جای آن Entity.is/setEnabled استفاده کنید. ( Ibc4c6 )
  • کلاس androidx.xr.scenecore.BasePanelEntity حذف شد و به جای آن مستقیماً از PanelEntity استفاده شد. getterها و setterهای PanelEntity با propertyها جایگزین شدند. ویژگی PanelEntity.size از Float3dSize به Float2dSize تغییر یافت. متد منسوخ androidx.xr.scenecore.PanelEntity.getPixelDimensions حذف شد و به جای آن getSizeInPixels استفاده شد. ( Icc174 )
  • androidx.xr.scenecore.OnSpaceUpdatedListener با Runnable جایگزین شد. ( I19308 )
  • SpatialUser.getCameraViews() با یک ویژگی جایگزین شد. ( Ib0cc5 ) برای ExrImage و GltfModel: متدهای create به توابع suspend تغییر یافتند؛ پارامترهای create اصلاح شدند تا به جای یک String ، یک Uri یا Path را بپذیرند. ( Id8883 ) ( I0d247 ) ، ( I25706 )
  • SpatialEnvironment.requestFullSpaceMode و SpatialEnvironment.requestHomeSpaceMode را به Scene منتقل کردم، برای مثال از session.scene.requestFullSpaceMode() به جای session.scene.spatialEnvironment.requestFullSpaceMode() استفاده کردم. addOnPassthroughOpacityChangedListener و addOnSpatialEnvironmentChangedListener اکنون overrideهایی دارند که Executorهای اختیاری را می‌پذیرند. ( I12fe0 ) ( I6b21e )
  • متدهای منسوخ‌شده‌ی SpatialEnvironment زیر حذف شدند: togglePassthrough ، setPassthrough ، setPassthroughOpacity ، getPassthroughMode ، getPassthroughOpacity ، setSkybox و setGeometry . همچنین کلاس منسوخ‌شده‌ی SpatialEnvironment.PassthroughMode ( I927bd ) ( I927bd ) ( I927bd ) حذف شد.
  • getterها و setterهای SpatialEnvironment زیر را با ویژگی‌های Kotlin جایگزین کرد: getCurrentPassthroughOpacity() ، get/setPassthroughOpacityPreference() ، get/setSpatialEnvironmentPreference() ، isSpatialEnvironmentPreferenceActive() ( I33a7b ) ( Ie06e2 ) ( Ie06e2 )
  • نوع SpatialEnvironmentPreference.preferredPassthroughOpacity از Float? به Float تغییر یافته است. دیگر مقادیر تهی را نمی‌پذیرد. در عوض، SpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCE برای نشان دادن اینکه هیچ ترجیحی برای شفافیت وجود ندارد، استفاده می‌شود. ( I40107 )
  • پارامتر windowBoundsPx در متد create به pixelDimensions و نوع آن از Rect به IntSize2d به‌روزرسانی شد. ( I1926e )
  • سازنده SpatialEnvironment اکنون داخلی است ( I75a51 )
  • کلاس‌های SpatialPointerIconNone و SpatialPointerIconCircle با اشیاء همراه SpatialPointerIcon.NONE و SpatialPointerIcon.CIRCLE ( I416d2 ) جایگزین شدند.
  • SpatialPointerIcon در SpatialPointerComponent دیگر قابل تهی‌سازی نیست. برای نشان دادن اینکه باید از آیکون اشاره‌گر پیش‌فرض سیستم استفاده شود، از SpatialPointerIcon.DEFAULT به جای تهی استفاده کنید. ( I416d2 )
  • androidx.xr.scenecore.AnchorEntity.getState() با یک ویژگی فقط خواندنی جایگزین شد. نام پارامترهای متد AnchorEntity.create() برای وضوح بیشتر تغییر یافت. در متدهای AnchorEntity برای تنظیم و اضافه کردن شنونده‌ها، شنونده به آرگومان نهایی منتقل شده و به لامبداهای انتهایی فعال تبدیل شده است. androidx.xr.scenecore.OnStateChangedListener برای AnchorEntity با Consumer<AnchorEntity.State> جایگزین شد. ( I472e0 )
  • GltfModelEntity.getAnimationState() اکنون یک ویژگی است. ( I10b29 )
  • ActivitySpace.getBounds() با یک ویژگی جایگزین شد. ActivitySpace.addBoundsChangedListener به ActivitySpace.addOnBoundsChangedListener تغییر نام داد. ActivitySpace.setOnSpaceUpdatedListener با متدهای add/remove جایگزین شد. ( I4c956 )
  • برای AnchorPlacement: planeTypeFilter به anchorablePlaneOrientations تغییر نام داد، planeSemanticFilter به anchorablePlaneSemanticTypes تغییر نام داد. اضافه کردن یک MovableComponent به یک AnchorEntity یا ActivitySpace مقدار false را برمی‌گرداند، MoveListener به EntityMoveListener shouldDisposeParentAnchor به disposeParentOnReAnchor systemMovable از تابع create حذف شد و متغیرهای creeateCustomMovable ، createSystemMovable و createAnchorable جایگزین شدند ( If11c4 ).
  • SurfaceEntity.featherRadiusX/Y حذف شده و مفهوم کلاس EdgeFeatheringParams اضافه شده است. ( Ic78fc )
  • متد PanelEntity.enablePanelDepthTest() با ویژگی panelClippingConfig جایگزین شده است. برای فعال کردن تست عمق، Scene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true) را تنظیم کنید یا برای غیرفعال کردن آن، آن را روی PanelClippingConfig(isDepthTestEnabled = false) تنظیم کنید. ( I0cbe0 )
  • Scene.mainPanelEntity اکنون به جای PanelEntity ( I7125a ) از نوع MainPanelEntity است.
  • متد setFullSpaceMode صحنه را به configureBundleForFullSpaceModeLaunch و متد setFullSpaceModeWithEnvironmentInherited به configureBundleForFullSpaceModeLaunchWithEnvironmentInherited تغییر نام داد. ( I0cbe0 ) ( I0cbe0 )
  • مقادیر UNKNOWN، OUTSIDE_FOV، PARTIALLY_WITHIN_FOV و WITHIN_FOV از SpatialVisibility به ترتیب به SPATIAL_VISIBILITY_UNKNOWN، SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW، SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW تغییر نام دادند ( Ie7e8c )
  • کلاس SpatialVisibility با شیء عمومی با مقادیر ثابت Int جایگزین شده است. setSpatialVisibilityChangedListener اکنون به جای Consumer<SpatialVisibility> ، یک Consumer<Int> می‌پذیرد ( Ie7e8c )
  • ثابت‌های PointerCaptureComponent تغییر نام داده و به شیء PointerCaptureComponent.PointerCaptureState ( I9c7ac ) منتقل شدند.
  • PointerCaptureComponents' StateListener با Consumer<Int> جایگزین شد. ( I9c7ac )
  • InputEventListener با Consumer<InputEvent> ( I9c7ac ) جایگزین شد.
  • setPreferredAspectRatio از کلاس Scene به شیء SpatialWindow منتقل شده و Session را به عنوان اولین پارامتر دریافت می‌کند. ( I7b717 )
  • Entity.setHidden() با Entity.setEnabled() و Entity.isHidden() با Entity.isEnabled() جایگزین شده‌اند. setHidden(false) برابر است با setEnabled(true) و isHidden() == !isEnabled() . ( Icf0de )
  • نوع Entity.contentDescription از String به CharSequence تغییر یافت. ( Ie59be )
  • Session.create و Session.configure اکنون در صورت عدم اعطای مجوزهای کافی، به جای بازگرداندن SessionCreatePermissionsNotGranted یا SessionConfigurePermissionsNotGranted ، خطای SecurityException را صادر می‌کنند ( I7c488 ).
  • ResizableComponent.create اکنون به یک Consumer<ResizeEvent> ResizeEventListener با Consumer<ResizeEvent> ResizableComponent.size به ResizableComponent.affordanceSize ResizableComponent.minimumSize به ResizableComponent.minimumEntitySize ResizableComponent.maximumSize به ResizableComponent.maximumEntitySize تغییر نام داد. ResizableComponent.autoHideContent به ResizableComponent.shouldAutoHideContent تغییر نام داد ResizableComponent.forceShowResizeOverlay به ResizableComponent.shouldAlwaysShowOverlay ( I97a2d ) تغییر نام داد.
  • minSDK برای androidx.xr.scenecore و androidx.xr.compose به ۲۴ کاهش یافت. بسته‌های XR هنوز در زمان اجرا به API 34 نیاز دارند. ( I17224 )
  • محدودیت RequiresApi(34) از روی تمام بسته‌های Jetpack XR حذف شد. این محدودیت اضافی بود زیرا Jetpack XR در حال حاضر فقط روی دستگاه‌هایی با سطح API 34+ در دسترس است. ( Iae0f8 )
  • مصنوع اصلی SceneCore ( xr:scenecore:scenecore ) فقط شامل APIهای ناهمگام به سبک کاتلین خواهد بود. توسعه‌دهندگان جاوا می‌توانند برای دسترسی به APIهای سازگار به کتابخانه xr:scenecore:scenecore-guava تکیه کنند. ( If221b )
  • پروژه‌های منتشر شده با کاتلین ۲.۰ برای استفاده به KGP 2.0.0 یا جدیدتر نیاز دارند ( Idb6b5 )
  • این کتابخانه اکنون از حاشیه‌نویسی‌های nullness از نوع JSpecify استفاده می‌کند که از نوع استفاده می‌کنند. توسعه‌دهندگان Kotlin باید از آرگومان کامپایلر زیر برای اعمال استفاده صحیح استفاده کنند: -Xjspecify-annotations=strict (این پیش‌فرض است که از نسخه 2.1.0 کامپایلر Kotlin شروع می‌شود) ( Ia8420 )
  • تمام متدهای async که ListenableFuture برمی‌گردانند، با توابع تعلیق کاتلین جایگزین شده‌اند. توسعه‌دهندگان جاوا که مایل به استفاده از متدهای async مبتنی بر ListenableFuture به جای توابع تعلیق کاتلین هستند، اکنون باید از توابع افزونه در :xr:scenecore-scenecore-guava استفاده کنند. برای مثال، GuavaExrImage شامل توابع async معادل Guava یعنی ExrImage است، GuavaScenePose شامل توابع async معادل Guava یعنی ScenePose است، GuavaGltfModel شامل توابع async Guava-equivalent GltfModel است و غیره. ( If7283 ) ( I0af60 ) ( If7283 ) ( Ia8515 ) ( I4efdf ) ( I54bbf ) ( I3467a ) ( I82a33 )

رفع اشکالات

  • به‌روزرسانی قانون Jetpack XR Scenecore ProGuard برای جلوگیری از AbstractMethodError برای کلاینت‌های کوچک‌شده ( I91a01 )
  • اصلاحات اضافی برای پشتیبانی از کوچک‌سازی Proguard برای Jetpack XR SceneCore ( I4f47e )
  • اشکالی که باعث می‌شد اگر hitPosition در HitInfo از InputEvent مقدار null داشته باشد و hitPosition برگردانده شده از سیستم، ممکن بود باعث خرابی InteractableComponent شود، برطرف شد ( I7a695 )
  • پیکربندی *مقادیر حالت برای انعکاس رفتارشان تغییر نام داده شده‌اند. ( I6d247 )
  • مشکلات مربوط به FOV و HitTest در SceneCore TestApp برطرف شد. ( I2c51e )
  • اشکال موجود در SpatialCapabilities.hasCapability() که در آن اگر هر یک از قابلیت‌های ارسالی با یک OR بیتی درست باشد، مقدار درست را برمی‌گرداند، به جای اینکه فقط در صورتی درست برگردانده شود که همه آنها درست باشند، مقدار درست را برمی‌گرداند، برطرف شد ( I2cd40 ).
  • SurfaceEntity.StereoMode.TOP_BOTTOM به‌روزرسانی شد تا نقشه بالا برای چشم چپ و نقشه پایین برای چشم راست باشد. ( I4ae68 )

نسخه ۱.۰.۰-آلفا۰۴

۷ مه ۲۰۲۵

androidx.xr.scenecore:scenecore:1.0.0-alpha04 و androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04 منتشر شدند. نسخه 1.0.0-alpha04 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • Backhandling will now work on panel entities without embedded activities. For backhandling to work you need to specify android:enableOnBackInvokedCallback= "true" in the android manifest.
  • StereoSurfaceEntity now supports MV-HEVC playback through two new StereoMode values: MULTIVIEW_LEFT_PRIMARY and MULTIVIEW_RIGHT_PRIMARY.
  • PanelEntity.setSize and PanelEntity.getSize now return sizes in parent space.
  • Entity.setPose , Entity.getPose , Entity.setScale , Entity.getScale , Entity.setAlpha and Entity.getAlpha now take a new param relativeTo , which allows get/set values relative to different spaces. The supported values are Parent, Activity and Real World spaces, and the default value for this param is Parent.
  • Spatial Visibility Callback extension methods added to SessionExt.kt to monitor when the scene content moves inside or outside the user's field of view.
  • setPointSourceParams has been added to SpatialAudioTrack , allowing the params to be updated after the track has been built.
  • Added a new class, Scene, with references to Scenecore APIs. Scene will be accessible as an extension property of Session. Functions inside of SessionExt have been moved to Scene so imports will be need to be adjusted; for example, SessionExt.getScene(session) . addSpatialCapababilitiesChangedListener versus SessionExt.addSpatialCapabilitiesChangedListener .
  • ActivityPose.hitTestAsync was added, enabling a hitTest against virtual content.
  • Added new Component type SpatialPointerComponent , allowing clients to specify the icon rendered for the pointer, or to disable the icon. This Component can currently be attached to PanelEntity instances only.
  • Introducing new PanelEntity factory, which takes panel dimensions in either meters or pixels. Older PanelEntity factory taking two Dimension type params for panel removed.

تغییرات API

  • Removed RequiresApi(34) restriction on all Jetpack XR packages. This restriction was redundant as Jetpack XR is currently only available on devices with API level 34+. ( Iae0f8 )
  • پروژه‌های منتشر شده با کاتلین ۲.۰ برای استفاده به KGP 2.0.0 یا جدیدتر نیاز دارند ( Idb6b5 )
  • PermissionHelper class has been removed.
  • PanelEntity.getPixelDensity is deprecated.
  • PanelEntity.setPixelDimensions and PanelEntity.getPixelDimension are removed, replaced by setSizeInPixels and getSizeInPixels .
  • Entity.getActivitySpaceAlpha removed. Can be replaced with Entity.getAlpha(Space.Activity) .
  • Entity.getWorldSpaceScale removed. Can be replaced with Entity.getScale(Space.REAL\_WORLD) .
  • The Session class in SceneCore has been deleted in favor of the Session in XR Runtime.
  • StereoSurfaceEntity has been renamed to SurfaceEntity .
  • Entity.setSize and Entity.getSize are removed, and the same methods were added to PanelEntity .
  • PointSourceAttributes has been renamed to PointSourceParams .
  • SpatializerConstants.SOURCE\_TYPE\_BYPASS has been renamed to SpatializerConstants.SOURCE\_TYPE\_DEFAULT .
  • PointSourceParams entity has been modified from public to internal access.
  • AnchorEntity.create now requires PlaneTrackingMode to be configured in Session.configure() .
  • SpatialUser APIs now require HeadTrackingMode to be configured in Session.configure() .
  • When ResizableComponent is not attached, it will give INFO-level log instead of ERROR-level log.
  • Fov class is now a regular Kotlin class.
  • Split Entity.kt to place each concrete entity type into its own file.
  • When creating a new PanelEntity , most Views will be reparented to a FrameLayout . This facilitates the use of LayoutInspector with Spatial Panels.
  • The currently used XrExtensions instance is now registered with the platform, in a best effort way, to help with app debugging.

رفع اشکالات

  • A fix was added to prevent a crash that could occur when a PanelEntity with MovableComponent and AnchorPlacement was moved
  • Fixed an issue where ResizableComponent was providing stale sizes in onResizeStart callback.
  • Fixed crash when JxrPlatformAdapterAxr 's dispose() was called multiple times.

نسخه ۱.۰.۰-آلفا۰۳

۲۶ فوریه ۲۰۲۵

androidx.xr.scenecore:scenecore:1.0.0-alpha03 and androidx.xr.scenecore:scenecore-testing:1.0.0-alpha03 are released. Version 1.0.0-alpha03 contains these commits .

ویژگی‌های جدید

  • Proguard minification is now supported for Jetpack XR code

رفع اشکالات

  • Additional fixes to support Proguard minification for Jetpack XR SceneCore ( I4f47e )
  • Updated Jetpack XR Scenecore ProGuard rule to prevent AbstractMethodError for minified clients. ( I91a01 )

نسخه ۱.۰.۰-آلفا۰۲

۱۲ فوریه ۲۰۲۵

androidx.xr.scenecore:scenecore:1.0.0-alpha02 and androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02 are released. Version 1.0.0-alpha02 contains these commits .

Upcoming breaking change affecting apps built before 1.0.0-alpha02

  • Factory methods have been moved from the Session class to a companion method on each respective type:
    • Session.createActivityPanelEntity(Dimensions, String, Activity, Pose) has been deleted and replaced with ActivityPanelEntity.create(Session, Dimensions, String, Pose)
    • Session.createAnchorEntity(Anchor) has been deleted and replaced with AnchorEntity.create(Session, Anchor)
    • Session.createAnchorEntity(Dimensions, Int, Int, Duration) has been deleted and replaced with AnchorEntity.create(Session, Dimensions, Int, Int, Duration)
    • Session.createEntity(String, Pose) has been deleted and replaced with ContentlessEntity.create(Session, String, Pose)
    • Session.createExrImageResource(String) has been deleted and replaced with ExrImage.create(Session, String)
    • Session.createGltfEntity(GltfModel, Pose) has been deleted and replaced with GltfModelEntity.create(Session, GltfModel, Pose)
    • Session.createGltfModelResource(String) has been deleted and replaced with GltfModel.create(Session, String)
    • Session.createInteractableComponent(Executor, InputEventListener) has been deleted and replaced with InteractableComponent.create(Session, Executor, InputEventListener)
    • Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean) has been deleted and replaced with MovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean)
    • Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose) has been deleted and replaced with PanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose)
    • Session.createResizableComponent(Dimensions, Dimensions) has been deleted and replaced with ResizableComponent.create(Session, Dimensions, Dimensions)
    • Session.createStereoSurfaceEntity(Int, Dimensions, Pose) has been deleted and replaced with StereoSurface.create(Session, Int, Dimensions, Pose)
  • The following deprecated methods were removed:
    • Session.canEmbedActivityPanel(Activity) has been deleted. Use getSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY) instead.
    • Session.hasSpatialCapability(Int) has been deleted. It has been replaced in favor of using getSpatialCapabilities().hasCapability() as a more compartmentalized way to check for the presence of spatial capabilities since getSpatialCapabilities() returns a SpatialCapabilities object.
    • Session.requestFullSpaceMode() has been deleted and replaced with SpatialEnvironment.requestFullSpaceMode()
    • Session.requestHomeSpaceMode() has been deleted and replaced with SpatialEnvironment.requestHomeSpaceMode()
  • Session.setFullSpaceMode(Bundle) and Session.setFullSpaceModeWithEnvironmentInherited(Bundle) have been moved to extension functions. Developer files will need to add the new imports for access:
    • import androidx.xr.scenecore.setFullSpaceMode
    • import androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
  • Session.setPreferredAspectRatio(Activity, Float) has been moved to an extension function. Developer files will need to add the new import for access:
    • import androidx.xr.scenecore.setPreferredAspectRatio
  • Session.getEntitiesOfType(Class<out T>) and Session.getEntityForRtEntity(RtEntity) have been moved to extension functions. Developer files will need to add the new imports for access:
    • import androidx.xr.scenecore.getEntitiesOfType
    • import androidx.xr.scenecore.getEntityForRtEntity
  • Session.unpersistAnchor(Anchor) has been deleted
  • Session.createPersistedAnchorEntity(UUID) has been deleted

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

  • PanelEntity.setCornerRadius() and ActivityPanelEntity.setCornerRadius() may not take effect until the panel is next moved, this can be mitigated by moving the panel to its current position
  • When BoundsChanged is called on the ActivitySpace , some ActivityPose s may not have been correctly updated. It will be updated on the following OnSpaceUpdated call on the ActivitySpace

Breaking & behavioral changes

  • PanelEntity and ActivityPanelEntity will have a default corner radius of 32dp or smaller if the panel has a width or height smaller than 32dp

New APIs and capabilities

  • Introduces StereoSurface.CanvasShape , which allows for the creation of Spherical and Hemispherical canvases for rendering immersive media.
  • StereoSurfaceEntity.create() now accepts a CanvasShape parameter. (This parameter is currently ignored, but will be used in a future release)
  • StereoSurfaceEntity.create() no longer takes a Dimensions parameter. Applications should control the size of the canvas through setting the CanvasShape
  • StereoSurfaceEntity has a CanvasShape member which can be set dynamically.
  • StereoSurfaceEntity.dimensions is now a read-only property; applications should set the CanvasShape to change dimensions.
  • StereoSurfaceEntity now allows the StereoMode to be re-set after construction.

تغییرات دیگر

  • Reduced compile-time minSDK to 24. All Jetpack XR APIs continue to require API 34 at runtime.
  • SceneCore 's Session factory ( Session.create ) no longer launches an intent to acquire the SCENE_UNDERSTANDING permission. Instead, the client application must explicitly request the permissions from the user, before attempting to create the anchors. Anchor creation will fail if the permission is not granted by the user.

رفع اشکالات

  • getActivitySpacePose() has been fixed to account for the ActivitySpace scale by returning translation values in scaled meters rather than always returning non-scaled meters. transformPoseTo now also uses the right units to compute coordinate changes when the ActivitySpace is involved in the source or destination.
  • The skybox will now be set to an all-black skybox whenever a null skybox preference is passed using setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom)) . To revert to the system default skybox and geometry, use setSpatialEnvironmentPreference(null).

نسخه ۱.۰.۰-آلفا۰۱

۱۲ دسامبر ۲۰۲۴

androidx.xr.scenecore:scenecore-* 1.0.0-alpha01 is released.

Features of Initial Release Initial developer release of Jetpack SceneCore, a 3D scene graph library for creating and manipulating immersive scenes and environments. This library allows you to place and arrange 3D models and content panels relative to each other and your virtual or real-world environments.

  • SpatialEnvironment : Create fully immersive experiences with a skybox image and/or 3D model geometry as the backdrop for your XR scene of your environment. Or enable passthrough, so your virtual scene can integrate with the user's real-world environment.
  • PanelEntity : Add 2D content to your 3D scenes by embedding standard Android layouts and Activities into spatialized panels that can float or be anchored to real-world surfaces.
  • GltfModelEntity : Place, animate, and interact with 3D models in your scene. SceneCore supports the glTF file format for ease of integration with existing models.
  • SpatialAudio : Add ambient and point audio sources into your 3D scene for fully immersive, spatialized sound.
  • StereoSurfaceEntity : SceneCore supports left/right eye routing of content rendered onto an Android Surface. This can be used to render stereoscopic content in a side-by-side or top-bottom format, such as stereo photos, 3D video, or other dynamically rendered UIs. Applications should use MediaPlayer or ExoPlayer for video decoding.
  • Component System: SceneCore offers a robust and flexible component system for adding capabilities to your XR content, including affordances for users to move, resize, and interact with models and panels.
  • Anchor : With passthrough enabled, you can attach panels and models to actual surfaces, giving users seamless integration of virtual content in their real-world environment.
  • User Pose: Access the user's location in the virtual scene, to orient your content around the user's position.
  • SpatialCapabilities : Build fully adaptive apps that take advantage of spatialized capabilities when available, such as 3D positioning of UI content. Not only that, but your app can monitor for changes to capabilities while the app is executing, to modify the experience based on how the user is using their Android XR device.

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

  • Currently a minSDK of 30 is required to use Jetpack SceneCore. As a workaround add the following manifest entry <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> to be able to build and run with a minSDK of 23.
  • Session can become invalid in various situations that automatically recreate the Activity, including resizing a main panel, connecting peripherals, and changing between light and dark mode. If you encounter session invalidation issues, workarounds include making you main panel non-resizable, using a dynamic panel entity, disabling activity recreation for specific config changes or disabling light/dark mode theme changes.
  • Movable and Resizable components are not supported on GltfEntity.
  • Entity.getSize() is not supported on GltfEntity.
  • Jetpack XR apps required to request android.permission.SCENE_UNDERSTANDING permission in AndroidManifest.
  • Creating a session is only supported on an Android XR device. At this time, if you create a Session and try to use it on a non Android XR device, you'll get a RuntimeException.
  • Setting the skybox to null via `SpatialEnvironment.setSpatialEnvironmentPreference() does not result in a solid black skybox as documented. It may result in the system default skybox or no change to the current skybox.
  • SceneCore clients should add implementation(“com.google.guava:listenablefuture-1.0”) to their Gradle configuration for their app's dependencies. In a future release, scenecore will include this library as an api dependency so clients will not need to explicitly declare it.
  • SceneCore erroneously includes com.google.guava:guava-31.1-android and com.google.protobuf:protobuf-javalite as transitive dependencies. If this results in duplicate class errors in your build, these two dependencies can be safely excluded.
  • If your app uses SceneCore and enables ProGuard, it will crash when you create a Session. As a workaround, disable ProGuard. See this guide for more information on how to enable ProGuard.