Memeriksa kemampuan spasial

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:

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.

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