Kemampuan spasial dapat bervariasi di berbagai perangkat dan berubah saat pengguna berinteraksi dengan aplikasi atau sistem Anda. Bahkan, mode ini dapat diubah oleh aplikasi Anda 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 Composition Local 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, gunakan spatialCapabilities dari
scene sesi untuk mengkueri kemampuan spasial yang saat ini tersedia.
SPATIAL_3D_CONTENT: Aktivitas dapat membuat konten 3D.APP_ENVIRONMENT: Aktivitas dapat menetapkan lingkungannya sendiri.EMBED_ACTIVITY: Aktivitas dapat menyematkan aktivitas lain secara spasial.PASSTHROUGH_CONTROL: Aktivitas dapat mengaktifkan atau menonaktifkan passthrough.SPATIAL_AUDIO: Aktivitas dapat menggunakan audio spasial.SPATIAL_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.
// Example 1: check if enabling passthrough mode is allowed if (xrSession.scene.spatialCapabilities.contains( SpatialCapability.PASSTHROUGH_CONTROL ) ) { xrSession.scene.spatialEnvironment.preferredPassthroughOpacity = 1f } // Example 2: multiple capability flags can be checked simultaneously: if (xrSession.scene.spatialCapabilities.contains(SpatialCapability.PASSTHROUGH_CONTROL) && xrSession.scene.spatialCapabilities.contains(SpatialCapability.SPATIAL_3D_CONTENT) ) { // ... }
Menggunakan mode penggabungan untuk memeriksa kemampuan tampilan perangkat
Di Android XR, headset XR dan kacamata XR berkabel memiliki kemampuan hardware yang bervariasi, terutama terkait jenis layarnya. Anda mungkin perlu menyesuaikan
warna UI aplikasi dan objek yang dirender untuk memaksimalkan visibilitas, yang
mungkin dipengaruhi oleh jenis tampilan dan mode penggabungan pilihan yang digunakan oleh
perangkat. DisplayBlendMode API menyediakan kemampuan mode penggabungan perangkat
untuk rendering. Gunakan API ini untuk menentukan cara konten virtual ditambahkan
ke dunia nyata.
Berikut beberapa jenis mode penggabungan yang perlu diperhatikan:
ADDITIVE: Konten virtual ditambahkan ke dunia nyata dengan menambahkan nilai piksel untuk setiap komponen Merah, Hijau, dan Biru. Alfa diabaikan, dan piksel hitam tampak transparan.ALPHA_BLEND: Konten virtual ditambahkan ke dunia nyata dengan pencampuran alfa nilai piksel berdasarkan komponen Alfa.NO_DISPLAY: Penggabungan tidak didukung di perangkat.
Gunakan XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() dari
library Jetpack XR Runtime untuk memeriksa jenis mode penggabungan yang digunakan
dan melakukan penyesuaian sesuai kebutuhan.
Lihat juga
- Membuat sesi
- Transisi antara HSM dan FSM
- Menambahkan lingkungan spasial ke aplikasi Anda
- Menambahkan model 3D ke aplikasi Anda