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:
isSpatialUiEnabled: indica se l'applicazione può creare elementi UI spaziali (ad esempioSpatialPanel).isContent3dEnabled: indica se l'applicazione può creare oggetti 3D.isAppEnvironmentEnabled: indica se l'applicazione può impostare l'ambiente.isPassthroughControlEnabled: indica se l'applicazione può controllare lo stato passthrough.isSpatialAudioEnabled: indica se l'applicazione può utilizzare l'audio spaziale.
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.
SPATIAL_3D_CONTENT: l'attività può creare contenuti 3D.APP_ENVIRONMENT: L'attività può impostare il proprio ambiente.EMBED_ACTIVITY: L'attività può incorporare spazialmente un'altra attività.PASSTHROUGH_CONTROL: l'attività può attivare o disattivare il passthrough.SPATIAL_AUDIO: l'attività può utilizzare l'audio spaziale.SPATIAL_UI: l'attività può spazializzarsi (ad esempio, aggiungendo un pannello spaziale).
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
- Create a session (Crea una sessione)
- Transizione tra HSM e FSM
- Aggiungere ambienti spaziali all'app
- Aggiungere modelli 3D all'app