Jetpack SceneCore
| Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
|---|---|---|---|---|
| 21 Oktober 2026 | 1.0.0 | - | - | 1.1.0-alpha01 |
Mendeklarasikan dependensi
Untuk menambahkan dependensi pada XR SceneCore, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk mengetahui informasi selengkapnya.
Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi aplikasi atau modul Anda:
Groovy
dependencies { implementation "androidx.xr.scenecore:scenecore:1.1.0-alpha01" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.1.0-alpha01" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.1.0-alpha01") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.1.0-alpha01") }
Untuk informasi dependensi selengkapnya, lihat Menambahkan dependensi build.
Masukan
Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Versi 1.1
Versi 1.1.0-alpha01
21 Oktober 2026
androidx.xr.scenecore:scenecore-*:1.1.0-alpha01 dirilis. Versi 1.1.0-alpha01 berisi commit ini.
Perubahan API
- Menambahkan API update mesh dinamis (
MeshBuffer.createDynamic,MeshBuffer.updateVertexData,MeshBuffer.updateIndexData, dan konstruktorCustomMesh.BuilderFromMeshDatadinamis) untuk mendukung update data verteks dan indeks saat runtime. (Ia1ecb) - Menambahkan metode bantuan
VertexLayout.getBufferIndexuntuk mengambil indeks buffering dengan mudah untukVertexAttributeatauVertexBufferLayouttertentu. (I1a9e3) - Membuat
CustomMesh.boundsmenjadi var sehingga kotak pembatas dapat diperbarui secara dinamis saat runtime. (Ib0397) - Mempromosikan Animation API
glTF(GltfAnimation,GltfModelEntity.getAnimations, danGltfModelEntity.stopAllAnimations) ke publik/stabil sambil mempertahankan penyetelGltfAnimation.loop sebagai eksperimental, sertaGltfAnimationStartOptionsdan start(options) sebagai eksperimental dan tidak digunakan lagi. (Iacdae) - Menambahkan
stopAllAnimations()keGltfModelEntity, membuatGltfAnimation.start()tanpa parameter, menambahkan propertiloopdanspeedkeGltfAnimation, serta menghentikan penggunaanGltfAnimationStartOptions,start(options), danseekTo(Duration). (I53105) - Mengupdate API
GltfModelEntityuntuk mendokumentasikanIllegalStateException(khususnyaEntity.DisposedException) saat dipanggil pada entity yang dibuang. I65a76f
Perbaikan Bug
- Dependensi
androidx.lifecycle:lifecycle-runtimediupdate ke 2.10.0. Versi ini diperlukan agar pemeriksaan lint runtime siklus proses yang dipaketkan dapat berjalan dengan AGP versi 9.5.0-alpha04 atau yang lebih baru. (I99bfd, b/556807521) - Meningkatkan kdoc terkait
AudioOutputProvideruntuk menekankan bahwa kdoc tidak boleh digunakan kembali dengan beberapa instanceExoPlayer(I6b18e) - Menghapus dependensi yang tidak diperlukan pada
impressdari berbagai modul XR. I84636c
Versi 1.0
Versi 1.0.0
21 Oktober 2026
androidx.xr.scenecore:scenecore-*:1.0.0 dirilis. Versi 1.0.0 berisi commit ini.
Fitur utama 1.0.0:
- Jetpack XR SceneCore kini stabil. SceneCore memungkinkan Anda menempatkan dan mengatur konten 3D, yang ditentukan oleh entity, secara relatif satu sama lain dan lingkungan Anda. Dengan SceneCore, Anda dapat membuat, menempatkan, dan memanipulasi panel 2D dan model 3D dalam scene virtual dan mixed reality; menentukan lingkungan spasial dan sumber audio spasial; serta menambatkan konten virtual ke dunia nyata.
- Untuk mengetahui informasi selengkapnya, lihat Halaman Ringkasan dan Referensi API kami.
Versi 1.0.0-rc02
7 Oktober 2026
androidx.xr.scenecore:scenecore-*:1.0.0-rc02 dirilis. Versi 1.0.0-rc02 berisi commit ini.
Perbaikan Bug
- Memperbaiki potensi kebocoran memori dengan menghapus
perceptionRuntimeCachediSessionExtdan memfaktorkan ulangnya untuk mengambilPerceptionRuntimelangsung dari instanceSession. (Ie35b1) - Memperbaiki potensi kebocoran konteks dengan menggunakan
applicationContextuntuk handle nativeOpenXRguna memastikan runtime native tidak menyimpan referensi ke konteksActivity. (Ie35b1) - Memperbaiki kondisi race di
XrInstanceManagerdengan memperkenalkan penguncian sinkronisasi dan inisialisasi yang tepat. (Ie35b1) - Memperbaiki
ReferenceCleaneruntuk mendukung pembatalan pendaftaran tindakan pembersihan dan memastikan tindakan pembersihanEntitydijalankan secara eksplisit selamadispose(), sehingga mencegah eksekusi duplikat saat pembersihan sampah memori. (Ie35b1) - Memperbaiki kebocoran memori di
Scenedengan menghapussceneCachediSessionExtdan melakukan refaktorisasiSceneuntuk mengambil instance langsung darisessionConnectors. (Ie35b1)
Versi 1.0.0-rc01
9 September 2026
androidx.xr.scenecore:scenecore-*:1.0.0-rc01 dirilis. Versi 1.0.0-rc01 berisi commit ini.
Perubahan API
- Library
xr:scenecore:scenecore-openxrditambahkan. (Ic49f2) - Menghapus beberapa API yang tidak digunakan lagi sebelum rilis stabil 1.0.0.
Perbaikan Bug
- Menyelesaikan bug kebocoran memori yang menyebabkan referensi Aktivitas dapat dipertahankan oleh sistem saat Aktivitas dihancurkan. (I6dcd7)
Perubahan Perilaku
- Menghapus output logcat dari SceneCore. (I10c3c)
Versi 1.0.0-beta02
12 Agustus 2026
androidx.xr.scenecore:scenecore-*:1.0.0-beta02 dirilis. Versi 1.0.0-beta02 berisi commit ini.
Perbaikan bug
toMoveEvent()akan menampilkannulljika parent entity telah dibersihkan oleh pembersih sampah memori. (Ia7a1b)
Versi 1.0.0-beta01
15 Juli 2026
androidx.xr.scenecore:scenecore-*:1.0.0-beta01 dirilis. Versi 1.0.0-beta01 berisi commit ini.
Perubahan API
- API
GltfAnimationdanSpatialGltfModelAnimationtelah ditandai sebagai eksperimental. Beberapa properti diubah menjadi pengambil. (I8d689, b/524771027) - Menghapus metode factory
MovableComponent.createTrackingMovablepublik. (I00912, b/477169015) - Mengonversi Session.create menjadi fungsi penangguhan. (I5d27f)
ActivitySpacedanAnchorSpacekini memperluas classSpaceEntityumum yang berisi perilaku umum untuk entity yang posisinya dikontrol oleh sistem (I506ec, b/513619219)- Memperbarui
AnchorEntitymenjadiAnchorSpace(Ifa95e, b/513619219) - Menyediakan API pengujian publik
SoundEffectPoolComponentTester. (I87df7, b/498104417) - Menambahkan parameter
cornerRadiusopsional ke konstruktorSurfaceEntity.Shape.Quaddan menjadikan properticornerRadiuspublik. Developer kini dapat menentukan radius sudut saat membuat bentuk Quad untuk merender kanvasSurfaceEntitydengan sudut membulat, dan mengkueri radius Quad yang ada. (Ia7809, b/474681085) - Menyediakan overload
SpatialAudioTrackBuilderTester,SpatialAudioTrackTester, danSceneCoreTestRule.getTesterAPI pengujian publik. (I378c6, b/496333938) - Menambahkan penggantian khusus
toString()untuk sejumlah jenis ARCore. Jenis ini dimaksudkan untuk memberikan informasi tambahan kepada developer untuk tujuan proses debug dan tidak dimaksudkan untuk digunakan dalam produksi atau aplikasi yang dikirimkan.
Versi 1.0.0-alpha16
17 Juni 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha16 dirilis. Versi 1.0.0-alpha16 berisi commit ini.
Perubahan API
- Menambahkan overload untuk
addVertexData,setIndexData, danaddSubsetkeCustomMesh.BuilderFromMeshDatadanCustomMesh.BuilderFromMeshBuffer. Overload ini memungkinkan developer meneruskan data mentah dan parameter secara langsung (misalnya,ByteBuffer,offset,size,topology,indexOffset,indexCount) tanpa perlu menggabungkannya dalam objek perantara sepertiByteBufferRegionatauMeshSubset. (I84d5c) Scene.requestFullSpaceMode()danScene.requestHomeSpaceMode()masing-masing telah diganti namanya menjadirequestFullSpace()danrequestHomeSpace(). Metode dan dokumentasi lain yang merujuk pada "Mode Ruang Rumah" dan "Mode Ruang Penuh" juga telah diperbarui. (I45751)- Menyediakan API pengujian publik
PanelEntityTesterdanMainPanelEntityTester(I961e4) - Menambahkan properti
pointSourceParamskeSoundEffectPoolComponent(I4a750) - Menyediakan API pengujian publik
MovableComponentTester(I0c972) - Menyediakan API pengujian publik
PointerCaptureComponentTester(Ic0d4f) - Menyediakan API pengujian publik
ActivityPanelEntityTester(I837c4) - Menyediakan API pengujian publik
ResizableComponentTester(I0a3a4) - Menyediakan API pengujian publik
BoundsComponentTester.(Iefd53) - Menyediakan API pengujian publik
SpatialMediaPlayerTester(Ia3e09) - Menyediakan API pengujian publik
SpatialEnvironmentTester(Icf60f) - Menyediakan API pengujian publik
GltfModelTesterdanSceneCoreTestRule.getGltfModelTester. (I33fcb) - Menyediakan API pengujian publik
InteractableComponentTester. (Ia7096) - Menyediakan API pengujian publik
SurfaceEntityTester. (Ic0740) - Menyediakan API pengujian publik
GltfModelEntityTester,TestGltfModelNode, danTestGltfAnimation. (I72c4d) - Menyediakan API pengujian publik
SceneTesterdanSceneCoreTestRule.sceneTester. (Ib4ec5) - Menyediakan API pengujian publik
PerceptionSpaceTesterdanSceneCoreTestRule.perceptionSpaceTester. (Icf739) - Menyediakan API pengujian publik
MeshEntityTester. (I63801) - Menyediakan overload
ImageBasedLightingAssetTesterdanSceneCoreTestRule.getTesterAPI pengujian publik. (I57ec4) - Menyediakan API pengujian publik
TextureTester(Ia865b) - Menyediakan API pengujian publik
PositionalAudioComponentTester(Icd96e) - Menyediakan API pengujian publik
SpatialSoundPoolTester(Ia3531) - Menyediakan API pengujian publik
SoundEffectPoolTester(If349a) - Menyediakan API pengujian publik
ActivitySpaceTesterdanSceneCoreTestRule.activitySpaceTester. (I2d5c2) - Menyediakan API pengujian publik
SpatialWindowTester(I41837) - Menyediakan API pengujian publik
AnchorEntityTester(I68404) - Menyediakan antarmuka API pengujian publik
SceneCoreTestRule. (Ic72d3) - Menambahkan class
PixelDensitydan mengeksposnya melaluiScene#virtualPixelDensityuntuk memberikan rasio piksel per meter berbasis hardware untuk pemetaan dimensi fisik yang akurat diActivitySpace. (I0e3ac) - Menambahkan API publik untuk membuat dan merender Mesh Kustom. (I7ad2f)
VertexLayoutAPI telah diupdate untuk menggunakan daftarVertexBufferLayout, dengan setiapVertexBufferLayoutmenjelaskan atribut dalam satu buffer vertex. Hal ini memungkinkan pengaturan data vertex yang lebih fleksibel, termasuk atribut yang disisipkan dengan langkah dan offset kustom. (Ic426b)- Menyediakan
MovableComponent.createTrackingMovableuntuk mengubah Trackable ARCore menjadi pose yang relatif terhadap Ruang Aktivitas. (I12249) - Nilai default untuk induk di
Entity.createtelah diperbarui menjadi null. (Ic3145) Entitytelah diupdate menjadi class, bukan antarmuka, dan kini menjadi class dasar untuk semua jenis Entity. Sebagai bagian dari perubahan ini,BaseEntitytelah dihapus. (I7fbc9)GltfModel,ExrImage, danImageBasedLightingAssetkini mengimplementasikanAutoCloseableuntuk memungkinkan pengelolaan resource idiomatis menggunakan blokuseKotlin. (I1ac79)- Memperkenalkan class
ImageBasedLightingAssetuntuk menggantikanExrImagedalam menentukan pencahayaan lingkungan spasial.ExrImagetidak digunakan lagi dan dihapus dari API publik.SpatialEnvironmentPreferencetelah diperbarui untuk menggunakanImageBasedLightingAsset. (I6c92a) - Mengganti nama parameter
skyboxdiSpatialEnvironmentmenjadiimageBasedLightingAssetagar lebih mencerminkan tujuannya, dan mengklarifikasi bahwa tekstur skybox visual harus disertakan dalam parameter geometri. (I24d4a) - Entity spasial kini menggunakan kepadatan perangkat yang stabil untuk penghitungan piksel ke meter di Spatial API level 1 dan 2, sehingga memastikan ukuran yang konsisten terlepas dari perubahan kepadatan tampilan sistem. (I37051)
Versi 1.0.0-alpha15
19 Mei 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha15 dirilis. Versi 1.0.0-alpha15 berisi commit ini.
Perubahan API
Entity.dispose()kini dihapus sebagai API publik. Alih-alih memanggildispose()pada instance Entity, aplikasi dapat membuat instance dapat dibersihkan dengan menetapkanparentkenulldan dengan menghapus referensi kuat ke instance tersebut. (I396c9)- Metode
set/clearOnLoadCompleteListenerSoundEffectPooltelah dihapus. Gunakanadd/removeLoadCompleteListenersebagai gantinya. (Iae78d) set/clearSpatialVisibilityChangedListenerScene diganti denganadd/removeSpatialVisibilityChangedListener. (I67dff)- Semua metode
add/removeOnFooListenerSceneCore telah diganti namanya menjadiadd/removeFooListener, dengan menghapusOndari nama. (Ibe50b) - Metode
AnchorEntity.setOnOriginChangedListenerdanAnchorEntity.setOnStateChangedListenertelah diganti dengan metodeadd/removeFooListener, untuk mendukung beberapa Pemroses secara bersamaan. (I13749) - Mengganti nama
AnchorEntity.State.TIMEDOUTmenjadiState.TIMED_OUT. (Id2b8d) - Component API telah direfaktorisasi untuk meningkatkan keamanan dan ekstensibilitas.
Componentkini menjadi class abstrak. MetodeonAttach()danonDetach()kini menjadiprotecteduntuk mencegah panggilan langsung. GunakanEntity.addComponent()danEntity.removeComponent()untuk mengelola siklus proses komponen. (Id04e8) - Konstanta
PlaneSemanticTypePlaneOrientationSceneCore telah dimigrasikan dari Int ke jenis kustom. KonstantaANY-nya akan dihapus, klien harus secara eksplisit menghitung semua konstanta yang diinginkan, atau menggunakan konstanta Set yang tidak dapat diubah.ALLyang baru. Metode factoryAnchorEntitykini menerima Set jenis ini, bukan nilai tunggal. (Ib1033) - Menambahkan dukungan untuk animasi skeletal (skinning) ke Custom Mesh API eksperimental. Developer kini dapat menganimasikan mesh kustom dengan menentukan
boneCountsaat membuatMeshEntitydan memperbarui animasi secara real-time menggunakanMeshEntity.setBoneTransforms(). (Id8ba2, b/496692490) - Memperkenalkan
CustomMeshAPI eksperimental. Developer kini dapat membuat dan merender geometri 3D secara terprogram dalam scene mereka menggunakanCustomMesh,MeshBuffer, danMeshEntity. (I94617) androidx.xr.scenecore.SpatializerConstants.SourceType.SOURCE_TYPE_SOUND_FIELDdihapus. Sebagai gantinya, gunakanSourceType.SOUND_FIELD. (Ia68b9)- Menambahkan komponen audio spasial:
PositionalAudioComponent,SoundEffectPoolComponent, danSoundFieldAudioComponent(Ieda89) AnchorEntity.getAnchordiganti denganAnchorEntity.anchordan kini akan menampilkanAnchorsaatAnchorEntitydibuat dariAnchorARCore (I5c7c8)- Nilai default untuk parameter
parentdalam metode factoryActivityPanelEntity,GltfModelEntity,GroupEntity,PanelEntity, danSurfaceEntitytelah diubah dariActivitySpacemenjadinull. Untuk melampirkan entity ke grafik tampilan dan merendernya agar terlihat, developer kini harus secara eksplisit menetapkan induknya selama pembuatan instance atau melaluiEntity.parent = ...(Ie7cc1)
Perbaikan Bug
SceneCorekini otomatis mengklaim kembali instanceEntitysaat instance tersebut menjadi dapat dijangkau secara semu, sehingga developer tidak perlu memanggildispose()secara eksplisit untuk mengosongkan resource. Untuk memastikan instance [Entity] diklaim kembali dengan benar, developer harus:- Lepaskan dari grafik tampilan dengan menetapkan
parent-nya kenull. - Melepaskan semua referensi kuat ke instance dalam kode mereka.
- Catatan tentang Jenis Entity Khusus: Untuk entity yang tidak dapat dijadikan induk (seperti
AnchorEntity), developer harus mempertahankan referensi yang kuat saat instance sedang digunakan. Jika semua referensi dirilis, instance ini akan menjadi phantom reachable dan akan otomatis diklaim kembali. (I83fe4)
- Lepaskan dari grafik tampilan dengan menetapkan
- Mempersempit aturan keep Proguard untuk semua library
SceneCore. (I98447)
Masalah Umum
- Memasang
PositionalAudioComponentkeEntitydengan instanceExoPlayeryang tidak aktif akan menyebabkan error. Jangan panggilsetPointSourceParamsatau pasang/lepas komponen audio spasial saat ExoPlayer dihentikan. Masalah ini akan diperbaiki dalam rilis berikutnya.
Versi 1.0.0-alpha14
6 Mei 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha14 dirilis. Versi 1.0.0-alpha14 berisi commit ini.
Perubahan API
TrackingStatedanVpsAvailabilityResulttelah dipindahkan keandroidx.xr.arcore package, dan jenis diandroidx.xr.runtimekini tidak digunakan lagi. (Ic7930, b/480462213)- Mengganti nama
Plane.TypemenjadiPlaneType. (I8c90c, b/482675376) - Mengganti nama
Plane.LabelmenjadiPlaneLabel. (Ic6b67, b/482675376) androidx.xr.runtime.FieldOfViewtidak digunakan lagi. Sebagai gantinya, gunakanandroidx.xr.runtime.math.FieldOfView. (Ia01a0, b/480233045)Matrix4.posediganti namanya menjadiMatrix4.toPose(). Properti pose kini tidak digunakan lagi. (I329b4, b/493383490)- Mengganti nama nilai enum
HandJointType. (Ifbc83, b/482670596) - Mengekspos
Component.onAttachdanonDetachsebagai API publik untuk memungkinkan implementasiComponentkustom. (I0ca1f) - Menambahkan komponen audio spasial (I39ddd, b/489421980, b/436642086, b/436642499)
- Hapus Entity dari
PointSourceParams. Sebagai gantinya, Entity akan digunakan langsung denganSpatialAudioTrack,SpatialSoundPool, danSpatialMediaPlayer(Ib3685, b/489421980, b/436634048) - Mengganti nama
DeviceTrackingMode.LAST_KNOWNmenjadiSPATIAL_LAST_KNOWN(dengan fallback yang tidak digunakan lagi), menambahkanINERTIAL_LAST_KNOWNuntuk pelacakan 3DoF, dan menambahkanTRACKING_DEGRADEDkeTrackingState. (Ie661c, b/445466590) GroupEntitytidak digunakan lagi. Untuk memiliki Entity yang hanya memiliki fungsi Entity dasar, panggilEntity.createyang akan menampilkan antarmuka Entity. (I4c450, b/473867483)- Menambahkan
XrLogAPI. TetapkanXrLog.isEnabledketrueuntuk mengaktifkan logging di JetpackXR, dan gunakanXrLog.Leveluntuk menetapkan level log. (I76a1f, b/463460895, b/487378441)
Perbaikan Bug
Scene.keyEntitykini ditetapkan secara default kemainPanelEntity. (I6a3ef)
Versi 1.0.0-alpha13
25 Maret 2025
androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 dirilis. Versi 1.0.0-alpha13 berisi commit ini.
Perubahan API
- Menghapus flag
unscaledGravityAlignedActivitySpacedariSession.create.ActivitySpacekini selalu tidak diskalakan dan sejajar dengan gravitasi. (If6f11, b/458173423) - Menghapus fungsi
setMaterialOverridedanclearMaterialOverrideyang tidak digunakan lagi dariGltfModelEntityyang kini dipanggil pada setiapGltfModelNode. (I2e5d2) - Menambahkan
transformPixelCoordinatesToLocalPositiondantransformNormalizedCoordinatesToLocalPositionkePanelEntitydan menghapus metode eksperimental setara yang sebelumnya menampilkan pose, bukan posisiVector3. (Ib6960, b/460123106, b/458333591) - Menambahkan
GltfAnimationAPI untuk mengontrol animasi glTF diSceneCore. (I2c172, b/466065486, b/465819070, b/465818617) - Mengganti nama
ScenePose.activitySpacePosemenjadiScenePose.poseInActivitySpace(I8f175, b/427822261) - Menambahkan Implementasi Runtime yang Diproyeksikan Scenecore (I9c4ab, b/476440158)
- Saat mengubah ukuran entity panel utama, entity tersebut dapat mengubah posisinya sendiri ke origin
ActivitySpace. Tidak ada solusi lain selain memosisikan ulang panel secara manual atau terprogram kembali ke lokasi aslinya. Bug ini akan diperbaiki dalam rilis mendatang. (b/489427007). - Dalam beberapa kasus, affordance untuk
MovableComponentmungkin tidak muncul untukSurfaceEntitydan jenis entitas non-Panel lainnya. MenetapkanMovableComponent.sizesecara eksplisit akan menyebabkan affordance muncul. Bug ini akan diperbaiki dalam rilis mendatang (b/490983469).
Versi 1.0.0-alpha12
25 Februari 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha12 dirilis. Versi 1.0.0-alpha12 berisi commit ini.
Masalah Umum
- Entitas yang ditambatkan dapat berpindah dari posisi tertambatnya ke titik asal ruang aktivitas setelah beberapa detik.
- Aplikasi mungkin error saat membuat instance
SurfaceEntity. Masalah ini telah diselesaikan diandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13dan rilis berikutnya. Aplikasi yang terpengaruh harus diupdate ke versi terbaru.
Perubahan API
ActivitySpace.addOnSpaceUpdatedListenerdanActivitySpace.removeOnSpaceUpdatedListenertelah diganti namanya menjadiaddOnOriginChangedListenerdanremoveOnOriginChangedListener.AnchorEntity.setOnSpaceUpdatedListenerdiganti namanya menjadisetOnOriginChangedListener. (I5d8fb)- Menambahkan properti nama publik ke
FakeEntitydan membuat tampilan menjadi publik diFakePanelEntity. (Ifa1f9)
Perbaikan Bug
- Memperbaiki penghitungan kepadatan piksel pada image sistem yang lebih baru (I57d04)
Versi 1.0.0-alpha11
28 Januari 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha11 dirilis. Versi 1.0.0-alpha11 berisi commit ini.
Perubahan API
- Mengganti nama
PerceivedResolutionResult.InvalidCameraViewmenjadiPerceivedResolutionResult.InvalidRenderViewpointkarena APIgetPerceivedResolutionkini mengandalkan APIRenderViewpointARCore, bukanCameraViewScenePose. Nama ini lebih mencerminkan penerapan baru. (I8c967, b/446989745, b/419311998) - Metode
PanelEntity/SurfaceEntity.getPerceivedResolutionkini menggunakanRenderViewpointyang disediakan oleh developer sebagai argumen. Sebelumnya, runtime memilihRenderViewpointyang digunakan dalam penghitungan resolusi yang terlihat secara arbitrer. (I8c967, b/446989745, b/419311998) - Menghapus
SpatialUser,ScenePose.Head, danScenePose.CameraView. Fungsi API ini tercakup dalam APIArDevicedanRenderViewpointdalam ARCore untuk Jetpack XR. Untuk mendapatkanScenePoseyang sesuai dengan kepala atau mata kiri atau kanan pengguna, developer dapat menggunakanPerceptionSpace.getScenePoseFromPerceptionPosedengan pose yang sesuai yang diperoleh menggunakan ARCore API. (I2f69c, b/446989745)
Versi 1.0.0-alpha10
03 Desember 2025
androidx.xr.scenecore:scenecore-*:1.0.0-alpha10 dirilis. Versi 1.0.0-alpha10 berisi commit ini.
Perubahan API
- Menambahkan
transformPixelCoordinatesToPosedantransformNormalizedCoordinatesToPosekePanelEntity(I462b3) - Menambahkan class helper, Utils, ke Runtime
SceneCoreberdasarkan logika diSceneCore(I570b9)
Perbaikan Bug
- Memperbaiki potensi error yang dapat terjadi saat Sesi dihancurkan dan
SpatialModeChangeEventditerima (If44e8) - Memperbaiki bug yang dapat menyebabkan
IllegalStateExceptionditampilkan saat keluar atau masuk kembali ke Aktivitas. (Ibff1c)
Versi 1.0.0-alpha09
19 November 2025
androidx.xr.scenecore:scenecore-*:1.0.0-alpha09 dirilis. Versi 1.0.0-alpha09 berisi commit ini.
Fitur Baru
- Menambahkan API untuk mengambil
ScenePoseyang mewakili komposisi pose asal ruang persepsi dan pose sehubungan dengan asal ruang persepsi. (I5b50a) - Menambahkan fungsi
getGravityAlignedPose. Pose yang diselaraskan dengan gravitasi mengabaikan Pitch dan Roll rotasi. (I5ae21) - Jenis konstanta
AnchorEntity.Statetelah diubah dari Int menjadi subjenis State. (Ib0c49) - Menambahkan
getChildren()ke antarmuka Entity. Siklus prosesMainPanelEntitydiperbarui. (Ia69d6)
Perubahan API
- Jenis konstanta
PointerCaptureComponent.PointerCaptureStatetelah diubah dari Int menjadi subjenisPointerCaptureState. (Ic888a) Scene.spatialCapabilitieskini berjenisSet<SpatialCapability>, bukan kolom Int. KonstantaSpatialCapabilitytelah diganti namanya. (I9c109)- Jenis konstanta
SurfaceEntitytelah diganti namanya dan diubah dari Int menjadi subjenisSurfaceEntity. (I419ed) - Jenis konstanta
SpatializerConstanttelah diganti namanya dan diubah dari Int menjadi subjenisSpatializerConstant. (Ia0e18) - Jenis konstanta
TextureSamplertelah diganti namanya dan diubah dari Int menjadi subjenisTextureSampler. (I44078) - Jenis konstanta
SpatialVisibilitytelah diubah dari Int menjadi subjenisSpatialVisibility. (I70739) - Jenis konstanta
ResizeEvent.ResizeStatetelah diganti namanya dan diubah dari Int menjadi subjenisResizeState. (I384d5) - Jenis konstanta
InputEventtelah diganti namanya dan diubah dari Int untuk diwarisi dari jenis penutupnya masing-masing. (I82817) - Jenis konstanta
GltfModelEntity.AnimationStatetelah diubah dari Int menjadi subjenisAnimationState. (I24f4e) - Jenis konstanta
AlphaModetelah diganti namanya dan diubah dari Int menjadi subjenisAlphaMode. (I27b56) - Jenis konstanta
Spacetelah diubah dari Int menjadi subjenis Space. (I9255b) ScenePose.hitTestdan metode terkait kini menampilkannulljika tidak ada persimpangan yang ditemukan, bukanHitTestResultdenganhitPositionnull.HitTestResult.hitPositiontidak lagi nullable. (I1400a)- Mengubah referensi
ActivityPosemenjadiScenePose. (I7fe43)
Versi 1.0.0-alpha08
22 Oktober 2025
androidx.xr.scenecore:scenecore-*:1.0.0-alpha08 dirilis. Versi 1.0.0-alpha08 berisi commit ini.
Perubahan API
- Mengganti nama
ActivityPanelEntity.moveActivitymenjaditransferActivity(I273c5, b/430332856)
Perbaikan Bug
:xr:scenecore:scenecore-spatial-renderingdan:xr:scenecore:scenecore-spatial-coreditambahkan sebagai dependensi implementasi:xr:scenecore:scenecore(I6ab65, b/447000520)- Pengecualian ditampilkan jika
session.scenediakses setelah penghancuran sesi. (I77e6f)
Versi 1.0.0-alpha07
24 September 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha07, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha07, dan androidx.xr.scenecore:scenecore-testing:1.0.0-alpha07 dirilis. Versi 1.0.0-alpha07 berisi commit ini.
Perubahan API
- Mengganti nama
fixedAspectRatiomenjadiisFixedAspectRatioEnableddan menjadikannya properti boolean (I5c4e8, b/440588971) ScenecoreFake kini berada dalam modulxr:scenecore:scenecore-testing. (Idd951)- Mengganti nama
shouldAutoHideContentmenjadiisAutoHideContentWhileResizingEnableddanshouldAlwaysShowOverlaymenjadiisAlwaysShowOverlayEnabled(I97c36, b/432335421) - Memperbarui konstanta
SceneCoreTextureSampleragar lebih mudah dibaca, misalnyaTextureSampler.MinFilter.LINEARkini menjadiTextureSampler.MIN_FILTER_LINEAR(Ib159c) - Setter
setKeyEntityScene telah digabungkan ke dalam variabelkeyEntity. MenetapkankeyEntityke Entity yang tidak dapat dipindahkan sepertiAnchorEntityakan menampilkanIllegalArgumentException, bukan menampilkan boolean false. (I62080, b/428721695, b/422215745) - Variabel
SpatialModeChangeListenerScene diganti dengansetSpatialModeChangedListener. Fungsi ini menggunakanConsumer<SpatialModeChangeEvent>, bukanSpatialModeChangedListener.setSpatialModeChangedListenerkini dapat secara opsional menggunakan Executor. (I62080, b/428721695, b/422215745) - Menghapus parameter
bundledariActivityPanelEntity.startActivity(I64344, b/430332856, b/430333040) - Mengganti nama
SpatializerConstants.SOURCE_TYPE_BYPASSmenjadiSpatializerConstants.SOURCE_TYPE_DEFAULT. (Ifc7fe, b/422215565) - Menambahkan konstanta
SpatialSoundPool.PLAY_FAILED. (Ifc7fe, b/422215565) - Menambahkan argumen default ke metode
SpatialSoundPool.play. (Ifc7fe, b/422215565) - Menghapus nilai yang ditampilkan dari penyetel di
SpatialAudioTrackBuilder. (Ifc7fe, b/422215565) - Perubahan SurfaceEntity
SurfaceEntity.CanvasShapemengganti namaShapeSurfaceEntity.CanvasShape.Vr180Hemispheremengganti namaHemisphereSurfaceEntity.CanvasShape.Vr360Spheremengganti namaSphereSurfaceEntity.EdgeFeatheringParams.SmoothFeathermengganti namaRectangleFeatherSurfaceEntity.EdgeFeathingParams.SolidEdgemengganti namaNoFeatheringSurfaceEntity.ContentSecurityLevelmengganti namaSurfaceProtectionSurfaceEntity.ContentSecurityLevel.{values}menambahkan awalanSURFACE_PROTECTION_.SurfaceEntity.SuperSampling.{$values}menambahkan awalanSUPER_SAMPLING_SurfaceEntity.StereoMode.{values}menambahkan awalanSTEREO_MODE_SurfaceEntity.ContentColorMetadata.maxCLLdiganti namanya menjadimaxContentLightLevel(I7eb5f, b/422216050, b/427529950)
- Mengganti nama
launchActivitymenjadistartActivity(I7db90, b/430332856) Scene.activitySpaceRootdihapus. Sebagai gantinya, gunakanScene.activitySpace. (I05ee8, b/378706624, b/422215745)configureBundleForFullSpaceModeLaunchdanconfigureBundleForFullSpaceModeLaunchWithEnvironmentInheriteddiganti namanya masing-masing menjadicreateBundleForFullSpaceModeLaunchdancreateBundleForFullSpaceModeLaunchWithEnvironmentInherited, serta dipindahkan ke file LaunchUtils.kt sebagai metode tingkat teratas dan menggunakan Session sebagai parameter pertama (I64a2c, b/437186050)- Factory
GroupEntitykini menampilkan jenisGroupEntity, bukan Entity. (I66042)
Perbaikan Bug
- Menampilkan
IllegalStateExceptionsaat instance entity digunakan setelah dispose. (I90990, b/427314036, b/432063442)
Versi 1.0.0-alpha06
13 Agustus 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha06, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha06, dan androidx.xr.scenecore:scenecore-testing:1.0.0-alpha06 dirilis. Versi 1.0.0-alpha06 berisi commit ini.
Perubahan API
- Membatalkan pembatasan API
BaseEntitydanBaseScenePosemilikSceneCore(88c0ff6)
Versi 1.0.0-alpha05
30 Juli 2025
androidx.xr.scenecore:scenecore-guava:1.0.0-alpha05, androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05, dan androidx.xr.scenecore:scenecore:1.0.0-alpha05 dirilis. Versi 1.0.0-alpha05 berisi commit ini.
Fitur Baru
- API Resolusi yang Dipersepsikan ditambahkan ke Entity Panel dan
SurfaceEntities. (I118f6) - Metode callback
PerceivedResolutionditambahkan ke Scene.kt untuk memantau resolusi yang terlihat dari panel utama aktivitas di HSM. (I58084) SurfaceEntity- Dukungan ditambahkan untuk Aplikasi guna meminta super sampling pada waktu pembuatan. Hal ini memungkinkan aplikasi menggunakan filter super sampling untuk anti-aliasing. (I06913)- Menambahkan properti
recommendedContentBoxInFullSpacekeActivitySpace. Fungsi ini menampilkan kotak yang direkomendasikan untuk menempatkan konten saat dalam Mode Ruang Penuh. (I4cd6f) - Menyediakan konstruktor kelebihan muatan untuk pengubah yang dapat dipindahkan yang memungkinkan penautan. (Ic0c70)
Perubahan API
Perubahan API yang ekstensif dilakukan pada SceneCore untuk rilis ini. Beberapa class telah diganti namanya dan/atau dipindahkan ke modul yang berbeda, dan sebagian besar metode pengambil/penyetel telah diganti dengan properti Kotlin. Meskipun kami mengantisipasi perubahan API yang dapat menyebabkan gangguan pada masa mendatang hingga rilis Beta pertama kami, perubahan tersebut tidak akan terlalu mengganggu atau banyak.
- Mengganti nama dan/atau memindahkan class & antarmuka berikut:
androidx.xr.scenecore.PixelDimensionsmenjadiandroidx.xr.runtime.math.IntSize2d;androidx.xr.scenecore.Dimensionsmenjadiandroidx.xr.runtime.math.FloatSize3d;androidx.xr.scenecore.ActivityPosemenjadiScenePose,androidx.xr.scenecore.ContentlessEntitymenjadiGroupEntity,androidx.xr.scenecore.PlaneTypemenjadiPlaneOrientation;androidx.xr.scenecore.PlaneSemanticmenjadiPlaneSemanticType. (Ifd405)(I3b622) (If534d) - Sejumlah penyetel untuk properti
Scenetelah dibuat pribadi; properti tersebut tidak dimaksudkan untuk diubah oleh klienSceneCore:activitySpace,activitySpaceRoot,mainPanelEntity,perceptionSpace,spatialCapabilities,spatialEnvironment, danspatialUser. (I2f506) - Di Entity: Mengubah hal berikut menjadi properti:
get/setParent(),setContentDescription;Entity.is/setHidden()tidak digunakan lagi, gunakanEntity.is/setEnabledsebagai gantinya. (Ibc4c6) - Menghapus class
androidx.xr.scenecore.BasePanelEntity, gunakanPanelEntitysecara langsung. Mengganti pengambil dan penyetel untukPanelEntitydengan properti. Mengubah propertiPanelEntity.sizedariFloat3dSizemenjadiFloat2dSize. Menghapus metodeandroidx.xr.scenecore.PanelEntity.getPixelDimensionsyang tidak digunakan lagi, gunakangetSizeInPixelssebagai gantinya. (Icc174) androidx.xr.scenecore.OnSpaceUpdatedListenerdiganti denganRunnable. (I19308)SpatialUser.getCameraViews()diganti dengan properti. (Ib0cc5) UntukExrImagedanGltfModel:, mengubah metodecreatemenjadi fungsi penangguhan; mengubah parameter pembuatan untuk menerimaUriatauPath, bukanString. (Id8883) (I0d247), (I25706)- Memindahkan
SpatialEnvironment.requestFullSpaceModedanSpatialEnvironment.requestHomeSpaceModeke Scene, misalnya menggunakansession.scene.requestFullSpaceMode(), bukansession.scene.spatialEnvironment.requestFullSpaceMode().addOnPassthroughOpacityChangedListenerdanaddOnSpatialEnvironmentChangedListenerkini memiliki penggantian yang menerima Executor opsional. (I12fe0) (I6b21e) - Menghapus metode
SpatialEnvironmentyang tidak digunakan lagi berikut:togglePassthrough,setPassthrough,setPassthroughOpacity,getPassthroughMode,getPassthroughOpacity,setSkybox, dansetGeometry. Juga menghapus classSpatialEnvironment.PassthroughModeyang tidak digunakan lagi (I927bd) (I927bd) (I927bd) - Mengganti pengambil dan penyetel
SpatialEnvironmentberikut dengan properti Kotlin:getCurrentPassthroughOpacity(),get/setPassthroughOpacityPreference(),get/setSpatialEnvironmentPreference(),isSpatialEnvironmentPreferenceActive()(I33a7b) (Ie06e2) (Ie06e2) - Jenis
SpatialEnvironmentPreference.preferredPassthroughOpacitydiubah dariFloat?menjadiFloat. Kolom ini tidak lagi menerima nilai null. Sebagai gantinya,SpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCEdigunakan untuk memberi sinyal bahwa tidak ada preferensi opasitas. (I40107) - Memperbarui parameter
windowBoundsPxkepixelDimensionsdan jenisnya dari Rect keIntSize2ddalam metode create. (I1926e) - Konstruktor
SpatialEnvironmentkini bersifat internal (I75a51) - Mengganti class
SpatialPointerIconNonedanSpatialPointerIconCircledengan objek pendampingSpatialPointerIcon.NONEdanSpatialPointerIcon.CIRCLE(I416d2) SpatialPointerIcondiSpatialPointerComponenttidak lagi nullable. GunakanSpatialPointerIcon.DEFAULT, bukan null, untuk menunjukkan bahwa ikon pointer default sistem harus digunakan. (I416d2)- Mengganti
androidx.xr.scenecore.AnchorEntity.getState()dengan properti hanya baca. Mengganti nama parameter pada metodeAnchorEntity.create()agar lebih jelas. Dalam metodeAnchorEntityuntuk menyetel dan menambahkan pemroses, pemroses telah dipindahkan ke argumen akhir untuk mengaktifkan lambda akhir.androidx.xr.scenecore.OnStateChangedListeneruntukAnchorEntitydiganti denganConsumer<AnchorEntity.State>. (I472e0) GltfModelEntity.getAnimationState()kini menjadi properti. (I10b29)ActivitySpace.getBounds()diganti dengan properti.ActivitySpace.addBoundsChangedListenertelah diganti namanya menjadiActivitySpace.addOnBoundsChangedListener. MenggantiActivitySpace.setOnSpaceUpdatedListenerdengan metode add/remove. (I4c956)- Untuk
AnchorPlacement: planeTypeFilterdiganti namanya menjadianchorablePlaneOrientations,planeSemanticFilterdiganti namanya menjadianchorablePlaneSemanticTypes. MenambahkanMovableComponentkeAnchorEntityatauActivitySpaceakan menampilkan nilai salah (false),MoveListenerdiganti namanya menjadiEntityMoveListener shouldDisposeParentAnchordiganti namanya menjadidisposeParentOnReAnchor systemMovabledihapus dari fungsicreatedan digantikan dengancreeateCustomMovable,createSystemMovable, dancreateAnchorable(If11c4) - Menghapus
SurfaceEntity.featherRadiusX/Ydan menambahkan konsep classEdgeFeatheringParams. (Ic78fc) - Metode
PanelEntity.enablePanelDepthTest()diganti dengan propertipanelClippingConfig. TetapkanScene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true)untuk mengaktifkan pengujian kedalaman atau tetapkan kePanelClippingConfig(isDepthTestEnabled = false)untuk menonaktifkannya. (I0cbe0) Scene.mainPanelEntitykini berjenisMainPanelEntity, bukanPanelEntity(I7125a)- Mengganti nama metode
setFullSpaceModeScene menjadiconfigureBundleForFullSpaceModeLaunchdan metodesetFullSpaceModeWithEnvironmentInheritedmenjadiconfigureBundleForFullSpaceModeLaunchWithEnvironmentInherited. (I0cbe0) (I0cbe0) - Mengganti nama nilai UNKNOWN, OUTSIDE_FOV, PARTIALLY_WITHIN_FOV, dan WITHIN_FOV
SpatialVisibilitymenjadi SPATIAL_VISIBILITY_UNKNOWN, SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW, SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW, dan SPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW (Ie7e8c) - Class
SpatialVisibilitydiganti dengan objek publik dengan nilai Int const.setSpatialVisibilityChangedListenerkini menerimaConsumer<Int>, bukanConsumer<SpatialVisibility>(Ie7e8c) - Konstanta
PointerCaptureComponentdiganti namanya dan dipindahkan ke objekPointerCaptureComponent.PointerCaptureState(I9c7ac) PointerCaptureComponents' StateListenerdiganti denganConsumer<Int>. (I9c7ac)InputEventListenerdiganti denganConsumer<InputEvent>(I9c7ac)setPreferredAspectRatiodipindahkan dari class Scene ke objekSpatialWindowdan menggunakan Session sebagai parameter pertama. (I7b717)Entity.setHidden()diganti denganEntity.setEnabled()danEntity.isHidden()diganti denganEntity.isEnabled().setHidden(false)sama dengansetEnabled(true)danisHidden() == !isEnabled(). (Icf0de)- Jenis
Entity.contentDescriptiondiubah dari String menjadiCharSequence. (Ie59be) Session.createdanSession.configurekini menampilkanSecurityExceptionjika izin yang memadai belum diberikan, bukan menampilkanSessionCreatePermissionsNotGrantedatauSessionConfigurePermissionsNotGranted. (I7c488)ResizableComponent.createkini memerlukanConsumer<ResizeEvent> ResizeEventListenerdiganti denganConsumer<ResizeEvent> ResizableComponent.sizediganti namanya menjadiResizableComponent.affordanceSize ResizableComponent.minimumSizediganti namanya menjadiResizableComponent.minimumEntitySize ResizableComponent.maximumSizediganti namanya menjadiResizableComponent.maximumEntitySize,ResizableComponent.autoHideContentdiganti namanya menjadiResizableComponent.shouldAutoHideContentResizableComponent.forceShowResizeOverlaydiganti namanya menjadiResizableComponent.shouldAlwaysShowOverlay(I97a2d)minSDKdikurangi menjadi 24 untukandroidx.xr.scenecoredanandroidx.xr.compose. Paket XR masih memerlukan API 34 saat runtime. (I17224)- Menghapus batasan
RequiresApi(34)di semua paket Jetpack XR. Pembatasan ini berlebihan karena Jetpack XR saat ini hanya tersedia di perangkat dengan level API 34+. (Iae0f8) - Artefak
SceneCoreutama (xr:scenecore:scenecore) hanya akan berisi API asinkron bergaya Kotlin. Developer Java dapat mengandalkan libraryxr:scenecore:scenecore-guavauntuk mengakses API yang kompatibel. (If221b) - Project yang dirilis dengan Kotlin 2.0 memerlukan KGP 2.0.0 atau yang lebih baru untuk digunakan (Idb6b5)
- Library ini sekarang menggunakan anotasi nullness JSpecify, yang merupakan penggunaan jenis. Developer Kotlin harus menggunakan argumen compiler berikut untuk menerapkan penggunaan yang benar:
-Xjspecify-annotations=strict(ini adalah default yang dimulai dengan compiler Kotlin versi 2.1.0) (Ia8420) - Semua metode asinkron yang menampilkan
ListenableFuturetelah diganti dengan fungsi penangguhan Kotlin. Developer Java yang ingin menggunakan metode asinkron berbasisListenableFuture, bukan fungsi penangguhan Kotlin, kini harus menggunakan fungsi ekstensi di:xr:scenecore-scenecore-guava. Misalnya,GuavaExrImageberisi fungsi asinkron ExrImage yang setara dengan Guava,GuavaScenePoseberisi fungsi asinkronScenePoseyang setara dengan Guava,GuavaGltfModelberisi fungsi asinkronGuava-equivalent GltfModel, dll. (If7283) (I0af60) (If7283) (Ia8515) (I4efdf) (I54bbf) (I3467a) (I82a33)
Perbaikan Bug
- Memperbarui aturan Jetpack XR Scenecore
ProGuarduntuk mencegahAbstractMethodErrorbagi klien yang diminifikasi. (I91a01) - Perbaikan tambahan untuk mendukung minifikasi Proguard untuk Jetpack XR
SceneCore(I4f47e) - Memperbaiki bug yang menyebabkan
InteractableComponentmengalami error jikahitPositionpada HitInfoInputEventmengalami error jikahitPositionyang ditampilkan dari sistem bernilai null (I7a695) - Nilai *Mode konfigurasi telah diganti namanya untuk mencerminkan perilakunya. (I6d247)
- Memperbaiki masalah terkait FOV dan
HitTestdi TestAppSceneCore. (I2c51e) - Memperbaiki bug di
SpatialCapabilities.hasCapability()yang akan menampilkan true jika salah satu kemampuan yang diteruskan dengan bitwise OR bernilai true, bukan hanya menampilkan true jika semuanya bernilai true. (I2cd40) SurfaceEntity.StereoMode.TOP_BOTTOMdiperbarui agar peta atas ditampilkan ke mata kiri dan peta bawah ditampilkan ke mata kanan. (I4ae68)
Versi 1.0.0-alpha04
7 Mei 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha04 dan androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04 dirilis. Versi 1.0.0-alpha04 berisi commit ini.
Fitur Baru
- Penanganan tombol kembali kini akan berfungsi pada entity panel tanpa aktivitas tersemat. Agar penanganan tombol kembali berfungsi, Anda harus menentukan
android:enableOnBackInvokedCallback= "true"dalam manifes Android. StereoSurfaceEntitykini mendukung pemutaran MV-HEVC melalui dua nilaiStereoModebaru: MULTIVIEW_LEFT_PRIMARY dan MULTIVIEW_RIGHT_PRIMARY.PanelEntity.setSizedanPanelEntity.getSizekini menampilkan ukuran dalam ruang induk.Entity.setPose,Entity.getPose,Entity.setScale,Entity.getScale,Entity.setAlpha, danEntity.getAlphakini menggunakan parameter barurelativeTo, yang memungkinkan nilai get/set relatif terhadap ruang yang berbeda. Nilai yang didukung adalah Parent, Activity, dan Real World, dan nilai default untuk parameter ini adalah Parent.- Metode ekstensi Callback Visibilitas Spasial ditambahkan ke
SessionExt.ktuntuk memantau kapan konten scene bergerak di dalam atau di luar ruang pandang pengguna. setPointSourceParamstelah ditambahkan keSpatialAudioTrack, sehingga parameter dapat diperbarui setelah trek dibuat.- Menambahkan class baru, Scene, dengan referensi ke
ScenecoreAPI. Scene akan dapat diakses sebagai properti ekstensi Session. Fungsi di dalamSessionExttelah dipindahkan ke Scene sehingga impor perlu disesuaikan; misalnya,SessionExt.getScene(session).addSpatialCapababilitiesChangedListenerversusSessionExt.addSpatialCapabilitiesChangedListener. ActivityPose.hitTestAsyncditambahkan, sehingga memungkinkanhitTestterhadap konten virtual.- Menambahkan jenis Komponen baru
SpatialPointerComponent, yang memungkinkan klien menentukan ikon yang dirender untuk pointer, atau menonaktifkan ikon. Komponen ini saat ini hanya dapat dipasang ke instancePanelEntity. - Memperkenalkan factory
PanelEntitybaru, yang menggunakan dimensi panel dalam meter atau piksel. FactoryPanelEntitylama yang menggunakan dua parameter jenis Dimension untuk panel telah dihapus.
Perubahan API
- Menghapus batasan
RequiresApi(34)di semua paket Jetpack XR. Pembatasan ini berlebihan karena Jetpack XR saat ini hanya tersedia di perangkat dengan level API 34+. (Iae0f8) - Project yang dirilis dengan Kotlin 2.0 memerlukan KGP 2.0.0 atau yang lebih baru untuk digunakan (Idb6b5)
- Class
PermissionHelpertelah dihapus. PanelEntity.getPixelDensitytidak digunakan lagi.PanelEntity.setPixelDimensionsdanPanelEntity.getPixelDimensiondihapus, diganti dengansetSizeInPixelsdangetSizeInPixels.Entity.getActivitySpaceAlphadihapus. Dapat diganti denganEntity.getAlpha(Space.Activity).Entity.getWorldSpaceScaledihapus. Dapat diganti denganEntity.getScale(Space.REAL\_WORLD).- Class Session di
SceneCoretelah dihapus dan digantikan oleh Session di XR Runtime. StereoSurfaceEntitydiganti namanya menjadiSurfaceEntity.Entity.setSizedanEntity.getSizedihapus, dan metode yang sama ditambahkan kePanelEntity.PointSourceAttributesdiganti namanya menjadiPointSourceParams.SpatializerConstants.SOURCE\_TYPE\_BYPASSdiganti namanya menjadiSpatializerConstants.SOURCE\_TYPE\_DEFAULT.- Entity
PointSourceParamstelah diubah dari akses publik menjadi internal. AnchorEntity.createkini mengharuskanPlaneTrackingModedikonfigurasi diSession.configure().SpatialUserAPI kini memerlukanHeadTrackingModeuntuk dikonfigurasi diSession.configure().- Jika
ResizableComponenttidak dilampirkan, log level INFO akan diberikan, bukan log level ERROR. - Class Fov kini menjadi class Kotlin reguler.
- Pisahkan
Entity.ktuntuk menempatkan setiap jenis entity konkret ke dalam filenya sendiri. - Saat membuat
PanelEntitybaru, sebagian besar Tampilan akan diubah induknya menjadiFrameLayout. Hal ini memfasilitasi penggunaanLayoutInspectordengan Panel Spasial. - Instance
XrExtensionsyang saat ini digunakan kini terdaftar di platform, dengan upaya terbaik, untuk membantu proses debug aplikasi.
Perbaikan Bug
- Perbaikan telah ditambahkan untuk mencegah error yang dapat terjadi saat
PanelEntitydenganMovableComponentdanAnchorPlacementdipindahkan - Memperbaiki masalah saat
ResizableComponentmemberikan ukuran yang tidak berlaku dalam callbackonResizeStart. - Memperbaiki error saat
dispose()JxrPlatformAdapterAxrdipanggil beberapa kali.
Versi 1.0.0-alpha03
26 Februari 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha03 dan androidx.xr.scenecore:scenecore-testing:1.0.0-alpha03 dirilis. Versi 1.0.0-alpha03 berisi commit ini.
Fitur Baru
- Minifikasi Proguard kini didukung untuk kode Jetpack XR
Perbaikan Bug
- Perbaikan tambahan untuk mendukung minifikasi Proguard untuk Jetpack XR SceneCore (I4f47e)
- Memperbarui aturan Jetpack XR Scenecore
ProGuarduntuk mencegahAbstractMethodErrorbagi klien yang diminifikasi. (I91a01)
Versi 1.0.0-alpha02
12 Februari 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha02 dan androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02 dirilis. Versi 1.0.0-alpha02 berisi commit ini.
Perubahan yang dapat menyebabkan gangguan mendatang yang memengaruhi aplikasi yang di-build sebelum 1.0.0-alpha02
- Metode factory telah dipindahkan dari class
Sessionke metode pendamping pada setiap jenis masing-masing:Session.createActivityPanelEntity(Dimensions, String, Activity, Pose)telah dihapus dan diganti denganActivityPanelEntity.create(Session, Dimensions, String, Pose)Session.createAnchorEntity(Anchor)telah dihapus dan diganti denganAnchorEntity.create(Session, Anchor)Session.createAnchorEntity(Dimensions, Int, Int, Duration)telah dihapus dan diganti denganAnchorEntity.create(Session, Dimensions, Int, Int, Duration)Session.createEntity(String, Pose)telah dihapus dan diganti denganContentlessEntity.create(Session, String, Pose)Session.createExrImageResource(String)telah dihapus dan diganti denganExrImage.create(Session, String)Session.createGltfEntity(GltfModel, Pose)telah dihapus dan diganti denganGltfModelEntity.create(Session, GltfModel, Pose)Session.createGltfModelResource(String)telah dihapus dan diganti denganGltfModel.create(Session, String)Session.createInteractableComponent(Executor, InputEventListener)telah dihapus dan diganti denganInteractableComponent.create(Session, Executor, InputEventListener)Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean)telah dihapus dan diganti denganMovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean)Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose)telah dihapus dan diganti denganPanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose)Session.createResizableComponent(Dimensions, Dimensions)telah dihapus dan diganti denganResizableComponent.create(Session, Dimensions, Dimensions)Session.createStereoSurfaceEntity(Int, Dimensions, Pose)telah dihapus dan diganti denganStereoSurface.create(Session, Int, Dimensions, Pose)
- Metode yang tidak digunakan lagi berikut telah dihapus:
Session.canEmbedActivityPanel(Activity)telah dihapus. Sebagai gantinya, gunakangetSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY).Session.hasSpatialCapability(Int)telah dihapus. Metode ini telah diganti dengan penggunaangetSpatialCapabilities().hasCapability()sebagai cara yang lebih terkotak-kotak untuk memeriksa keberadaan kemampuan spasial karenagetSpatialCapabilities()menampilkan objekSpatialCapabilities.Session.requestFullSpaceMode()telah dihapus dan diganti denganSpatialEnvironment.requestFullSpaceMode()Session.requestHomeSpaceMode()telah dihapus dan diganti denganSpatialEnvironment.requestHomeSpaceMode()
Session.setFullSpaceMode(Bundle)danSession.setFullSpaceModeWithEnvironmentInherited(Bundle)telah dipindahkan ke fungsi ekstensi. File developer harus menambahkan impor baru untuk akses:import androidx.xr.scenecore.setFullSpaceModeimport androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
Session.setPreferredAspectRatio(Activity, Float)telah dipindahkan ke fungsi ekstensi. File developer harus menambahkan impor baru untuk akses:import androidx.xr.scenecore.setPreferredAspectRatio
Session.getEntitiesOfType(Class<out T>)danSession.getEntityForRtEntity(RtEntity)telah dipindahkan ke fungsi ekstensi. File developer harus menambahkan impor baru untuk akses:import androidx.xr.scenecore.getEntitiesOfTypeimport androidx.xr.scenecore.getEntityForRtEntity
Session.unpersistAnchor(Anchor)telah dihapusSession.createPersistedAnchorEntity(UUID)telah dihapus
Masalah umum
PanelEntity.setCornerRadius()danActivityPanelEntity.setCornerRadius()mungkin tidak akan diterapkan hingga panel dipindahkan lagi. Hal ini dapat diatasi dengan memindahkan panel ke posisinya saat ini- Saat
BoundsChangeddipanggil diActivitySpace, beberapaActivityPosemungkin belum diperbarui dengan benar. Status ini akan diperbarui pada panggilanOnSpaceUpdatedberikutnya padaActivitySpace
Perubahan yang dapat menyebabkan gangguan & perubahan perilaku
PanelEntitydanActivityPanelEntityakan memiliki radius sudut default 32 dp atau lebih kecil jika panel memiliki lebar atau tinggi yang lebih kecil dari 32 dp
API dan kemampuan baru
- Memperkenalkan
StereoSurface.CanvasShape, yang memungkinkan pembuatan kanvasSphericaldanHemisphericaluntuk merender media imersif. StereoSurfaceEntity.create()kini menerima parameterCanvasShape. (Parameter ini saat ini diabaikan, tetapi akan digunakan dalam rilis mendatang)StereoSurfaceEntity.create()tidak lagi menggunakan parameterDimensions. Aplikasi harus mengontrol ukuran kanvas dengan menyetelCanvasShapeStereoSurfaceEntitymemiliki anggotaCanvasShapeyang dapat ditetapkan secara dinamis.StereoSurfaceEntity.dimensionskini menjadi properti hanya baca; aplikasi harus menetapkanCanvasShapeuntuk mengubah dimensi.StereoSurfaceEntitykini memungkinkanStereoModedisetel ulang setelah konstruksi.
Perubahan lain
- Mengurangi minSDK waktu kompilasi menjadi 24. Semua Jetpack XR API terus memerlukan API 34 saat runtime.
- Factory sesi
SceneCore(Session.create) tidak lagi meluncurkan intent untuk mendapatkan izinSCENE_UNDERSTANDING. Sebagai gantinya, aplikasi klien harus secara eksplisit meminta izin dari pengguna, sebelum mencoba membuat anchor. Pembuatan anchor akan gagal jika izin tidak diberikan oleh pengguna.
Perbaikan bug
getActivitySpacePose()telah diperbaiki untuk memperhitungkan skalaActivitySpacedengan menampilkan nilai terjemahan dalam meter berskala, bukan selalu menampilkan meter yang tidak berskala.transformPoseTokini juga menggunakan unit yang tepat untuk menghitung perubahan koordinat saatActivitySpaceterlibat dalam sumber atau tujuan.- Skybox kini akan ditetapkan ke skybox serba hitam setiap kali preferensi skybox null diteruskan menggunakan
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom)). Untuk kembali ke skybox dan geometri default sistem, gunakansetSpatialEnvironmentPreference(null).
Versi 1.0.0-alpha01
12 Desember 2024
androidx.xr.scenecore:scenecore-* 1.0.0-alpha01 dirilis.
Fitur Rilis Awal Rilis developer awal Jetpack SceneCore, library grafik scene 3D untuk membuat dan memanipulasi scene dan lingkungan imersif. Library ini memungkinkan Anda menempatkan dan mengatur model 3D dan panel konten secara relatif satu sama lain dan lingkungan virtual atau dunia nyata Anda.
- SpatialEnvironment: Buat pengalaman yang sepenuhnya imersif dengan gambar skybox dan/atau geometri model 3D sebagai latar belakang untuk scene XR lingkungan Anda. Atau aktifkan passthrough, sehingga adegan virtual Anda dapat berintegrasi dengan lingkungan dunia nyata pengguna.
- PanelEntity: Tambahkan konten 2D ke scene 3D Anda dengan menyematkan tata letak dan Aktivitas Android standar ke panel spasial yang dapat mengambang atau ditambatkan ke permukaan dunia nyata.
- GltfModelEntity: Menempatkan, menganimasikan, dan berinteraksi dengan model 3D di tampilan Anda. SceneCore mendukung format file glTF untuk memudahkan integrasi dengan model yang ada.
- SpatialAudio: Tambahkan sumber audio ambien dan titik ke dalam adegan 3D Anda untuk suara spasial yang sepenuhnya imersif.
- StereoSurfaceEntity: SceneCore mendukung perutean mata kiri/kanan untuk konten yang dirender ke Android Surface. Hal ini dapat digunakan untuk merender konten stereoskopis dalam format berdampingan atau atas-bawah, seperti foto stereo, video 3D, atau UI lain yang dirender secara dinamis. Aplikasi harus menggunakan MediaPlayer atau ExoPlayer untuk decoding video.
- Sistem Komponen: SceneCore menawarkan sistem komponen yang andal dan fleksibel untuk menambahkan kemampuan ke konten XR Anda, termasuk affordance bagi pengguna untuk memindahkan, mengubah ukuran, serta berinteraksi dengan model dan panel.
- Anchor: Dengan mengaktifkan passthrough, Anda dapat memasang panel dan model ke permukaan sebenarnya, sehingga memberikan integrasi konten virtual yang lancar kepada pengguna di lingkungan dunia nyata mereka.
- Pose Pengguna: Akses lokasi pengguna dalam tampilan virtual, untuk mengarahkan konten Anda di sekitar posisi pengguna.
- SpatialCapabilities: Buat aplikasi yang sepenuhnya adaptif dan memanfaatkan kemampuan spasial jika tersedia, seperti penempatan 3D konten UI. Tidak hanya itu, aplikasi Anda dapat memantau perubahan kemampuan saat aplikasi dijalankan, untuk mengubah pengalaman berdasarkan cara pengguna menggunakan perangkat Android XR mereka.
Masalah Umum
- Saat ini, minSDK 30 diperlukan untuk menggunakan Jetpack SceneCore. Sebagai solusinya, tambahkan entri manifes
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>berikut agar dapat di-build dan dijalankan dengan minSDK 23. - Sesi dapat menjadi tidak valid dalam berbagai situasi yang otomatis membuat ulang Aktivitas, termasuk mengubah ukuran panel utama, menghubungkan periferal, dan beralih antara mode terang dan gelap. Jika Anda mengalami masalah pembatalan sesi, solusinya mencakup membuat panel utama tidak dapat diubah ukurannya, menggunakan entity panel dinamis, menonaktifkan pembuatan ulang aktivitas untuk perubahan konfigurasi tertentu, atau menonaktifkan perubahan tema mode terang/gelap.
- Komponen yang Dapat Dipindahkan dan Dapat Diubah Ukurannya tidak didukung di GltfEntity.
- Entity.getSize() tidak didukung di GltfEntity.
- Aplikasi Jetpack XR harus meminta izin
android.permission.SCENE_UNDERSTANDINGdi AndroidManifest. - Pembuatan sesi hanya didukung di perangkat Android XR. Saat ini, jika Anda membuat Sesi dan mencoba menggunakannya di perangkat non-Android XR, Anda akan mendapatkan RuntimeException.
- Menetapkan skybox ke null melalui `SpatialEnvironment.setSpatialEnvironmentPreference() tidak menghasilkan skybox hitam pekat seperti yang didokumentasikan. Hal ini dapat menghasilkan skybox default sistem atau tidak ada perubahan pada skybox saat ini.
- Klien SceneCore harus menambahkan
implementation(“com.google.guava:listenablefuture-1.0”)ke konfigurasi Gradle untuk dependensi aplikasi mereka. Dalam rilis mendatang, scenecore akan menyertakan library ini sebagai dependensiapisehingga klien tidak perlu mendeklarasikannya secara eksplisit. - SceneCore secara keliru menyertakan
com.google.guava:guava-31.1-androiddancom.google.protobuf:protobuf-javalitesebagai dependensi transitif. Jika hal ini menyebabkan error class duplikat dalam build Anda, kedua dependensi ini dapat dikecualikan dengan aman. - Jika aplikasi Anda menggunakan SceneCore dan mengaktifkan ProGuard, aplikasi akan error saat Anda membuat Sesi. Sebagai solusinya, nonaktifkan ProGuard. Lihat panduan ini untuk mengetahui informasi selengkapnya tentang cara mengaktifkan ProGuard.