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 del dispositivo e cambiare man mano che gli utenti interagiscono con la tua app o il sistema. Possono anche essere modificati dalla tua app, ad esempio passando allo spazio Home o allo spazio intero. Per evitare problemi, l'app deve verificare le funzionalità spaziali per determinare quali API sono supportate nell'ambiente corrente.

Verifica le funzionalità spaziali utilizzando Jetpack Compose per XR

Jetpack Compose per XR crea un CompositionLocal per controllare le funzionalità spaziali. Utilizzala per verificare se la UI spaziale, l'audio spaziale, gli ambienti, il passthrough o i contenuti 3D sono attivi.

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

L'esempio seguente mostra come verificare se la UI spaziale è attiva:

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

Verifica le funzionalità spaziali utilizzando SceneCore

Quando utilizzi la libreria SceneCore, devi creare una sessione. Una volta creata la sessione, utilizza spatialCapabilities dal 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 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 della UI della tua app e degli oggetti visualizzati 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 vengono aggiunti i contenuti virtuali al mondo reale.

Ecco alcuni dei tipi di modalità di fusione da conoscere:

  • 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 l'alpha blending dei valori dei pixel in base al componente Alpha.
  • NO_DISPLAY: la fusione non è supportata sul dispositivo.

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

Vedi anche