Kemampuan spasial dapat berubah saat pengguna berinteraksi dengan aplikasi atau sistem Anda, atau bahkan dapat diubah oleh aplikasi itu sendiri—misalnya, berpindah ke Ruang Utama atau Ruang Penuh. Untuk menghindari masalah, aplikasi Anda perlu memeriksa kemampuan spasial untuk menentukan API mana yang didukung di lingkungan saat ini.
Memeriksa kemampuan spasial menggunakan Jetpack Compose untuk XR
Jetpack Compose untuk XR membuat Komposisi Lokal untuk memeriksa kemampuan spasial. Gunakan ini untuk memeriksa apakah UI spasial, audio spasial, lingkungan, passthrough, atau konten 3D diaktifkan.
Anda dapat menggunakan LocalSpatialCapabilities.current
untuk memeriksa apakah
kemampuan spasial berikut saat ini tersedia:
isSpatialUiEnabled
: Menunjukkan apakah aplikasi dapat membuat elemen UI spasial (misalnya,SpatialPanel
).isContent3dEnabled
: Menunjukkan apakah aplikasi dapat membuat objek 3D.isAppEnvironmentEnabled
: Menunjukkan apakah aplikasi dapat menetapkan lingkungan.isPassthroughControlEnabled
: Menunjukkan apakah aplikasi dapat mengontrol status passthrough.isSpatialAudioEnabled
: Menunjukkan apakah aplikasi dapat menggunakan audio spasial.
Contoh berikut menunjukkan cara memeriksa apakah UI spasial diaktifkan.
if (LocalSpatialCapabilities.current.isSpatialUiEnabled) {
Subspace {
SpatialPanel(
modifier = SubspaceModifier
.width(1488.dp)
.fillMaxHeight()
) {
AppContent()
}
}
} else {
AppContent()
}
Memeriksa kemampuan spasial menggunakan SceneCore
Saat menggunakan library SceneCore, Anda harus membuat
sesi. Setelah sesi dibuat, panggil
getSpatialCapabilities
pada sesi untuk membuat kueri kemampuan
spasial yang saat ini tersedia.
SPATIAL_CAPABILITY_3D_CONTENT
: Aktivitas dapat membuat konten 3D.SPATIAL_CAPABILITY_APP_ENVIRONMENT
: Aktivitas dapat menetapkan lingkungannya sendiri.SPATIAL_CAPABILITY_EMBED_ACTIVITY
: Aktivitas dapat menyematkan aktivitas lain secara spasial.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL
: Aktivitas dapat mengaktifkan atau menonaktifkan passthrough.SPATIAL_CAPABILITY_SPATIAL_AUDIO
: Aktivitas dapat menggunakan audio spasial.SPATIAL_CAPABILITY_UI
: Aktivitas dapat melakukan spasialisasi sendiri, misalnya menambahkan panel spasial.
Anda juga dapat memilih untuk berlangganan callback, addSpatialCapabilitiesChangedListener
yang memberi tahu Anda saat kemampuan
spasial telah berubah.
val xrSession = Session.create(this)
// Example 1: check if enabling passthrough mode is allowed
if (xrSession.getSpatialCapabilities().hasCapability(
SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL)) {
xrSession.spatialEnvironment.setPassthroughOpacityPreference(0f)
}
// Example 2: Multiple capability flags can be checked simultaneously:
if (xrSession.getSpatialCapabilities().hasCapability(
SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL and
SpatialCapabilities.SPATIAL_CAPABILITY_3D_CONTENT)) {
// ...
}
// Example 3: Create a spatialized panel if/when spatialization UI becomes available
xrSession.addSpatialCapabilitiesChangedListener((capabilities) -> {
if (capabilities.hasCapability(SpatialCapabilities.SPATIAL_CAPABILITY_UI)){
Subspace{
SpatialPanel(...)
}
}
});
Lihat juga
- Membuat sesi
- Transisi antara HSM dan FSM
- Menambahkan lingkungan spasial ke aplikasi Anda
- Menambahkan model 3D ke aplikasi Anda