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 persino essere modificate dalla tua app stessa, ad esempio passando allo spazio Home o allo spazio 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 per XR crea un Composition Local per verificare le funzionalità spaziali. Utilizzalo per verificare se sono attivati 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 è attivata:

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 per eseguire una query sulle funzionalità spaziali attualmente disponibili.

Puoi anche scegliere di abbonarti 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)
) {
    // ...
}

Utilizzare la modalità di fusione per verificare le funzionalità di visualizzazione del dispositivo

Su Android XR, i visori XR e gli occhiali XR con cavo hanno funzionalità hardware diverse, in particolare per quanto riguarda il tipo di display. Potresti dover adattare i colori dell'interfaccia utente e degli oggetti sottoposti a rendering 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à della modalità di fusione del dispositivo per il rendering. Utilizza questa API per determinare come 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 alfa.
  • NO_DISPLAY: la fusione non è supportata sul dispositivo.

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

Vedi anche