Verificare le funzionalità spaziali

Dispositivi XR applicabili
Queste indicazioni ti aiutano a creare esperienze per questi tipi di dispositivi XR.
Visori XR
Occhiali XR con cavo

Le funzionalità spaziali possono variare a seconda dei dispositivi e cambiare man mano che gli utenti interagiscono con la tua app o il sistema. Possono anche essere modificate dall'app stessa, ad esempio, passando a Spazio Home o Schermo intero. Per evitare problemi, la tua app deve verificare le funzionalità spaziali per determinare quali API sono supportate nell'ambiente attuale.

Verificare le funzionalità spaziali utilizzando Jetpack Compose per XR

Jetpack Compose for XR crea una composizione locale per controllare le funzionalità spaziali. Utilizzalo per verificare se sono attivi l'interfaccia utente spaziale, l'audio spaziale, gli ambienti, il passthrough o i contenuti 3D.

Puoi utilizzare LocalSpatialCapabilities.current per verificare se le seguenti funzionalità spaziali sono attualmente disponibili:

L'esempio seguente mostra come verificare se l'interfaccia utente spaziale è attiva:

if (LocalSpatialCapabilities.current.isSpatialUiEnabled) {
    Subspace {
        SpatialPanel(
            modifier = SubspaceModifier
                .width(1488.dp)
                .fillMaxHeight()
        ) {
            AppContent()
        }
    }
} else {
    AppContent()
}

Verificare le funzionalità spaziali utilizzando SceneCore

Quando utilizzi la libreria SceneCore, devi creare una sessione. Una volta creata la sessione, utilizza spatialCapabilities dalla scene della sessione per eseguire query sulle funzionalità spaziali attualmente disponibili.

Puoi anche scegliere di iscriverti a un callback, addSpatialCapabilitiesChangedListener che ti avvisa quando le funzionalità spaziali sono cambiate.

// 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)
) {
    // ...
}

Utilizza la modalità di fusione per controllare le funzionalità di visualizzazione del dispositivo

Su Android XR, i visori XR e gli occhiali XR con cavo hanno capacità hardware diverse, soprattutto per quanto riguarda il tipo di display. Potresti dover adattare i colori dell'interfaccia utente e degli oggetti visualizzati della tua app per massimizzare la visibilità, che potrebbe essere influenzata dal tipo di display e dalla modalità di fusione preferita utilizzata dal dispositivo. L'API DisplayBlendMode fornisce la funzionalità di modalità di fusione del dispositivo per il rendering. Utilizza questa API per determinare in che modo i contenuti virtuali vengono aggiunti al mondo reale.

Ecco alcuni tipi di modalità di fusione da tenere presenti:

  • ADDITIVE: i contenuti virtuali vengono aggiunti al mondo reale aggiungendo i valori dei pixel per ciascuno dei componenti rosso, verde e blu. Il canale alfa viene ignorato e i pixel neri appaiono trasparenti.
  • ALPHA_BLEND: i contenuti virtuali vengono aggiunti al mondo reale mediante la fusione alfa dei valori dei pixel in base al componente Alpha.
  • NO_DISPLAY: la fusione non è supportata sul dispositivo.

Utilizza XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() dalla libreria Jetpack XR Runtime per controllare il tipo di modalità di fusione in uso e apportare le modifiche necessarie.

Vedi anche