Jetpack SceneCore
| Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
|---|---|---|---|---|
| 22 Oktober 2025 | - | - | - | 1.0.0-alpha08 |
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.0.0-alpha08" // Optional dependencies for asynchronous conversions implementation "androidx.xr.scenecore:scenecore-guava:1.0.0-alpha08" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha08" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha08") // Optional dependencies for asynchronous conversions implementation("androidx.xr.scenecore:scenecore-guava:1.0.0-alpha08") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha08") }
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.0
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 akan diberikan 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) - Palsu
Scenecorekini berada di modulxr:scenecore:scenecore-testing. (Idd951) - Mengganti nama
shouldAutoHideContentmenjadiisAutoHideContentWhileResizingEnableddanshouldAlwaysShowOverlaymenjadiisAlwaysShowOverlayEnabled(I97c36, b/432335421) - Konstanta
SceneCoreTextureSamplertelah diperbarui agar lebih mudah dibaca, misalnyaTextureSampler.MinFilter.LINEARkini menjadiTextureSampler.MIN_FILTER_LINEAR(Ib159c) - Setter
setKeyEntityadegan telah digabungkan ke dalam variabelkeyEntity. MenetapkankeyEntityke Entity yang tidak dapat dipindahkan sepertiAnchorEntityakan memunculkanIllegalArgumentException, bukan menampilkan boolean salah (false). (I62080, b/428721695, b/422215745) - Variabel
SpatialModeChangeListenerScene diganti dengansetSpatialModeChangedListener. Fungsi ini menggunakanConsumer<SpatialModeChangeEvent>, bukanSpatialModeChangedListener.setSpatialModeChangedListenerkini dapat secara opsional menerima 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 oleh setter di
SpatialAudioTrackBuilder. (Ifc7fe, b/422215565) - Perubahan SurfaceEntity
SurfaceEntity.CanvasShapediganti namanya menjadiShapeSurfaceEntity.CanvasShape.Vr180Hemispherediganti namanya menjadiHemisphereSurfaceEntity.CanvasShape.Vr360Spherediganti namanya menjadiSphereSurfaceEntity.EdgeFeatheringParams.SmoothFeatherdiganti namanya menjadiRectangleFeatherSurfaceEntity.EdgeFeathingParams.SolidEdgediganti namanya menjadiNoFeatheringSurfaceEntity.ContentSecurityLeveldiganti namanya menjadiSurfaceProtectionSurfaceEntity.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 menjadicreateBundleForFullSpaceModeLaunchdancreateBundleForFullSpaceModeLaunchWithEnvironmentInherited, lalu dipindahkan ke file LaunchUtils.kt sebagai metode tingkat teratas dan menggunakan Session sebagai parameter pertama (I64a2c, b/437186050)- Pabrik
GroupEntitykini menampilkan jenisGroupEntity, bukan Entity. (I66042)
Perbaikan Bug
- Menampilkan
IllegalStateExceptionsaat instance entity digunakan setelah dibuang. (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
- Membuka batasan API
BaseEntitydanBaseScenePoseSceneCore(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
- Perceived Resolution API ditambahkan ke Panel Entities dan
SurfaceEntities. (I118f6) - Metode Callback
PerceivedResolutionditambahkan ke Scene.kt untuk memantau resolusi yang dirasakan dari panel utama aktivitas di HSM. (I58084) SurfaceEntity- Menambahkan dukungan untuk Aplikasi agar dapat meminta pengambilan sampel super pada saat pembuatan. Hal ini memungkinkan aplikasi menggunakan filter super sampling untuk anti-aliasing. (I06913)- Menambahkan properti
recommendedContentBoxInFullSpacekeActivitySpace. Metode 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 penambatan. (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 getter/setter telah diganti dengan properti Kotlin. Meskipun kami mengantisipasi perubahan API yang dapat menyebabkan gangguan di 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 setter untuk properti
Scenetelah dibuat pribadi; setter tersebut tidak dimaksudkan untuk diubah oleh klienSceneCore:activitySpace,activitySpaceRoot,mainPanelEntity,perceptionSpace,spatialCapabilities,spatialEnvironment, danspatialUser. (I2f506) - Di Entitas: Mengubah properti berikut:
get/setParent(),setContentDescription; Tidak menggunakanEntity.is/setHidden()lagi, gunakanEntity.is/setEnabledsebagai gantinya. (Ibc4c6) - Menghapus class
androidx.xr.scenecore.BasePanelEntity, gunakanPanelEntitysecara langsung sebagai gantinya. Mengganti pengambil dan penyetel untukPanelEntitydengan properti. Mengubah propertiPanelEntity.sizedariFloat3dSizemenjadiFloat2dSize. Menghapus metodeandroidx.xr.scenecore.PanelEntity.getPixelDimensionsyang tidak digunakan lagi, sebagai gantinya gunakangetSizeInPixels. (Icc174) androidx.xr.scenecore.OnSpaceUpdatedListenerdiganti denganRunnable. (I19308)- Mengganti
SpatialUser.getCameraViews()dengan properti. (Ib0cc5) UntukExrImagedanGltfModel:Mengubah metodecreatemenjadi fungsi yang ditangguhkan; mengubah parameter pembuatan agar menerimaUriatauPath, bukanString. (Id8883) (I0d247), (I25706) - Memindahkan
SpatialEnvironment.requestFullSpaceModedanSpatialEnvironment.requestHomeSpaceModeke Scene, misalnya gunakansession.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 getter dan setter
SpatialEnvironmentberikut dengan properti Kotlin:getCurrentPassthroughOpacity(),get/setPassthroughOpacityPreference(),get/setSpatialEnvironmentPreference(),isSpatialEnvironmentPreferenceActive()(I33a7b) (Ie06e2) (Ie06e2) - Jenis
SpatialEnvironmentPreference.preferredPassthroughOpacitydiubah dariFloat?menjadiFloat. Properti ini tidak lagi menerima nilai null. Sebagai gantinya,SpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCEdigunakan untuk menandakan bahwa tidak ada preferensi keburaman. (I40107) - Memperbarui parameter
windowBoundsPxmenjadipixelDimensionsdan jenisnya dari Rect menjadiIntSize2ddalam metode create. (I1926e) - Konstruktor
SpatialEnvironmentkini bersifat internal (I75a51) - Mengganti class
SpatialPointerIconNonedanSpatialPointerIconCircledengan objek pendampingSpatialPointerIcon.NONEdanSpatialPointerIcon.CIRCLE(I416d2) SpatialPointerIcondiSpatialPointerComponenttidak lagi dapat bernilai null. 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. Menggantiandroidx.xr.scenecore.OnStateChangedListeneruntukAnchorEntitydenganConsumer<AnchorEntity.State>. (I472e0) GltfModelEntity.getAnimationState()kini menjadi properti. (I10b29)- Mengganti
ActivitySpace.getBounds()dengan properti. Mengganti namaActivitySpace.addBoundsChangedListenermenjadiActivitySpace.addOnBoundsChangedListener. MenggantiActivitySpace.setOnSpaceUpdatedListenerdengan metode penambahan/penghapusan. (I4c956) AnchorPlacement: planeTypeFilterdiganti namanya menjadianchorablePlaneOrientations,planeSemanticFilterdiganti namanya menjadianchorablePlaneSemanticTypes. MenambahkanMovableComponentkeAnchorEntityatauActivitySpaceakan menampilkan nilai salah (false),MoveListenerdiganti namanya menjadiEntityMoveListener shouldDisposeParentAnchor,EntityMoveListener shouldDisposeParentAnchordiganti namanya menjadidisposeParentOnReAnchor systemMovable, dandisposeParentOnReAnchor systemMovabledihapus dari fungsicreateuntuk 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) - Kelas
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)- Mengganti
InputEventListenerdenganConsumer<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)- Mengurangi
minSDKmenjadi 24 untukandroidx.xr.scenecoredanandroidx.xr.compose. Paket XR masih memerlukan API 34 saat runtime. (I17224) - Menghapus batasan
RequiresApi(34)pada 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 gaya 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 kini menggunakan anotasi nullabilitas JSpecify, yang merupakan penggunaan jenis. Developer Kotlin harus menggunakan argumen compiler berikut untuk menerapkan penggunaan yang benar:
-Xjspecify-annotations=strict(ini adalah nilai 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
ProGuardJetpack XR Scenecore untuk mencegahAbstractMethodErrorbagi klien yang diminifikasi. (I91a01) - Perbaikan tambahan untuk mendukung pengecilan Proguard untuk
SceneCoreJetpack XR (I4f47e) - Memperbaiki bug yang menyebabkan
InteractableComponentdapat menyebabkan error jikahitPositionpada HitInfoInputEventdapat mengalami error jikahitPositionyang ditampilkan dari sistem adalah null (I7a695) - Nilai *Mode Config telah diganti namanya untuk mencerminkan perilakunya. (I6d247)
- Memperbaiki masalah terkait FOV dan
HitTestdiSceneCoreTestApp. (I2c51e) - Memperbaiki bug di
SpatialCapabilities.hasCapability()yang akan menampilkan nilai benar jika salah satu kemampuan yang diteruskan dengan OR bitwise adalah benar, bukan hanya menampilkan nilai benar jika semuanya benar. (I2cd40) SurfaceEntity.StereoMode.TOP_BOTTOMdiperbarui agar peta atas berada di mata kiri dan peta bawah berada di 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 kembali kini akan berfungsi pada entity panel tanpa aktivitas sematan. Agar penanganan 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 ruang Parent, Activity, dan Real World, dan nilai default untuk parameter ini adalah Parent.- Metode ekstensi Callback Visibilitas Spasial ditambahkan ke
SessionExt.ktuntuk memantau saat konten adegan bergerak di dalam atau di luar bidang pandang pengguna. setPointSourceParamstelah ditambahkan keSpatialAudioTrack, sehingga memungkinkan parameter diperbarui setelah jalur dibuat.- Menambahkan class baru, Scene, dengan referensi ke API
Scenecore. Scene akan dapat diakses sebagai properti ekstensi Sesi. Fungsi di dalamSessionExttelah dipindahkan ke Scene sehingga impor perlu disesuaikan; misalnya,SessionExt.getScene(session).addSpatialCapababilitiesChangedListenerversusSessionExt.addSpatialCapabilitiesChangedListener. ActivityPose.hitTestAsynctelah ditambahkan, sehingga memungkinkanhitTestterhadap konten virtual.- Menambahkan jenis Komponen baru
SpatialPointerComponent, yang memungkinkan klien menentukan ikon yang dirender untuk penunjuk, atau menonaktifkan ikon. Saat ini, Komponen ini hanya dapat dilampirkan ke instancePanelEntity. - Memperkenalkan factory
PanelEntitybaru, yang menggunakan dimensi panel dalam meter atau piksel. PabrikPanelEntitylama yang mengambil dua parameter jenis Dimensi untuk panel telah dihapus.
Perubahan API
- Menghapus batasan
RequiresApi(34)pada 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 untuk mendukung 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.- Entitas
PointSourceParamstelah diubah dari akses publik menjadi internal. AnchorEntity.createsekarang memerlukanPlaneTrackingModeuntuk dikonfigurasi diSession.configure().- API
SpatialUserkini memerlukanHeadTrackingModeuntuk dikonfigurasi diSession.configure(). - Jika
ResizableComponenttidak terlampir, log tingkat INFO akan diberikan, bukan log tingkat ERROR. - Class Fov sekarang menjadi class Kotlin biasa.
- Pisahkan
Entity.ktuntuk menempatkan setiap jenis entitas 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 cara terbaik, untuk membantu proses pen-debug-an aplikasi.
Perbaikan Bug
- Perbaikan ditambahkan untuk mencegah error yang dapat terjadi saat
PanelEntitydenganMovableComponentdanAnchorPlacementdipindahkan - Memperbaiki masalah saat
ResizableComponentmemberikan ukuran yang tidak berlaku lagi di 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 pengecilan Proguard untuk Jetpack XR SceneCore (I4f47e)
- Memperbarui aturan
ProGuardJetpack XR Scenecore untuk 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 dibuat 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.getSpatialCapabilities()telah diganti dengangetSpatialCapabilities().hasCapability()sebagai cara yang lebih terkompartemen 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 berlaku hingga panel dipindahkan lagi. Hal ini dapat diatasi dengan memindahkan panel ke posisinya saat ini- Saat
BoundsChangeddipanggil diActivitySpace, beberapaActivityPosemungkin belum diperbarui dengan benar. Informasi 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.dimensionssekarang menjadi properti hanya baca; aplikasi harus menyetelCanvasShapeuntuk mengubah dimensi.StereoSurfaceEntitykini memungkinkanStereoModedisetel ulang setelah dibuat.
Perubahan lainnya
- 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 meminta izin secara eksplisit dari pengguna, sebelum mencoba membuat anchor. Pembuatan penanda 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 disetel ke skybox hitam pekat setiap kali preferensi skybox null diteruskan menggunakan
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom)). Untuk mengembalikan skybox dan geometri ke 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 awal developer Jetpack SceneCore, library grafik adegan 3D untuk membuat dan memanipulasi adegan dan lingkungan imersif. Library ini memungkinkan Anda menempatkan dan mengatur model 3D dan panel konten 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 adegan XR lingkungan Anda. Atau aktifkan passthrough, sehingga adegan virtual Anda dapat berintegrasi dengan lingkungan dunia nyata pengguna.
- PanelEntity: Tambahkan konten 2D ke adegan 3D Anda dengan menyematkan tata letak dan Aktivitas Android standar ke dalam panel spasial yang dapat mengambang atau ditambatkan ke permukaan dunia nyata.
- GltfModelEntity: Tempatkan, animasikan, dan berinteraksi dengan model 3D dalam adegan Anda. SceneCore mendukung format file glTF untuk memudahkan integrasi dengan model yang ada.
- SpatialAudio: Tambahkan sumber audio sekitar dan titik ke dalam adegan 3D Anda untuk suara spasial yang sepenuhnya imersif.
- StereoSurfaceEntity: SceneCore mendukung perutean konten mata kiri/kanan yang dirender ke Android Surface. Hal ini dapat digunakan untuk merender konten stereoskopik dalam format berdampingan atau atas-bawah, seperti foto stereo, video 3D, atau UI yang dirender secara dinamis lainnya. 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 kemampuan bagi pengguna untuk memindahkan, mengubah ukuran, dan berinteraksi dengan model dan panel.
- Anchor: Dengan passthrough diaktifkan, Anda dapat melampirkan panel dan model ke permukaan sebenarnya, sehingga pengguna dapat mengintegrasikan konten virtual dengan lancar di lingkungan dunia nyata mereka.
- Pose Pengguna: Akses lokasi pengguna dalam adegan virtual, untuk mengarahkan konten Anda di sekitar posisi pengguna.
- SpatialCapabilities: Buat aplikasi yang sepenuhnya adaptif yang memanfaatkan kemampuan spasialisasi jika tersedia, seperti penempatan konten UI 3D. Tidak hanya itu, aplikasi Anda dapat memantau perubahan kemampuan saat aplikasi sedang dieksekusi, untuk mengubah pengalaman berdasarkan cara pengguna menggunakan perangkat Android XR mereka.
Masalah Umum
- Saat ini, minSDK 30 diperlukan untuk menggunakan Jetpack SceneCore. Sebagai solusi, tambahkan entri manifes berikut
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>agar dapat mem-build dan menjalankan dengan minSDK 23. - Sesi dapat menjadi tidak valid dalam berbagai situasi yang secara otomatis membuat ulang Aktivitas, termasuk mengubah ukuran panel utama, menghubungkan periferal, dan beralih antara mode terang dan gelap. Jika Anda mengalami masalah pembatalan validasi sesi, solusi yang dapat dilakukan antara lain 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 Diubah Ukurannya tidak didukung di GltfEntity.
- Entity.getSize() tidak didukung di GltfEntity.
- Aplikasi XR Jetpack harus meminta izin
android.permission.SCENE_UNDERSTANDINGdi AndroidManifest. - Membuat sesi hanya didukung di perangkat Android XR. Saat ini, jika Anda membuat Sesi dan mencoba menggunakannya di perangkat XR non-Android, Anda akan mendapatkan RuntimeException.
- Menetapkan skybox ke null melalui `SpatialEnvironment.setSpatialEnvironmentPreference() tidak menghasilkan skybox hitam solid 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. Pada 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 solusi, nonaktifkan ProGuard. Lihat panduan ini untuk mengetahui informasi selengkapnya tentang cara mengaktifkan ProGuard.