Les fonctionnalités spatiales peuvent changer à mesure que les utilisateurs interagissent avec votre application ou le système, ou même être modifiées par votre application elle-même (par exemple, en passant en mode Home Space ou Full Space). Pour éviter les problèmes, votre application doit vérifier les fonctionnalités spatiales pour déterminer quelles API sont compatibles avec l'environnement actuel.
Vérifier les fonctionnalités spatiales à l'aide de Jetpack Compose for XR
Jetpack Compose for XR crée un Composition Local pour vérifier les fonctionnalités spatiales. Utilisez-le pour vérifier si l'UI spatiale, l'audio spatial, les environnements, le passthrough ou les contenus 3D sont activés.
Vous pouvez utiliser LocalSpatialCapabilities.current
pour vérifier si les fonctionnalités spatiales suivantes sont actuellement disponibles:
isSpatialUiEnabled
: indique si l'application peut créer des éléments d'UI spatiaux (par exemple,SpatialPanel
).isContent3dEnabled
: indique si l'application peut créer des objets 3D.isAppEnvironmentEnabled
: indique si l'application peut définir l'environnement.isPassthroughControlEnabled
: indique si l'application peut contrôler l'état de passthrough.isSpatialAudioEnabled
: indique si l'application peut utiliser le son spatial.
L'exemple suivant montre comment vérifier si l'UI spatiale est activée:
if (LocalSpatialCapabilities.current.isSpatialUiEnabled) { Subspace { SpatialPanel( modifier = SubspaceModifier .width(1488.dp) .fillMaxHeight() ) { AppContent() } } } else { AppContent() }
Vérifier les fonctionnalités spatiales à l'aide de SceneCore
Lorsque vous utilisez la bibliothèque SceneCore, vous devez créer une session. Une fois la session créée, appelez spatialCapabilities
sur la session pour interroger les fonctionnalités spatiales actuellement disponibles.
SPATIAL_CAPABILITY_3D_CONTENT
: l'activité peut créer des contenus 3D.SPATIAL_CAPABILITY_APP_ENVIRONMENT
: l'activité peut définir son propre environnement.SPATIAL_CAPABILITY_EMBED_ACTIVITY
: l'activité peut intégrer spatialement une autre activité.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL
: l'activité peut activer ou désactiver le passthrough.SPATIAL_CAPABILITY_SPATIAL_AUDIO
: l'activité peut utiliser le son spatial.SPATIAL_CAPABILITY_UI
: l'activité peut se spatialiser, par exemple en ajoutant un panneau spatial.
Vous pouvez également choisir de vous abonner à un rappel, addSpatialCapabilitiesChangedListener
, qui vous avertit lorsque les fonctionnalités spatiales ont changé.
// Example 1: check if enabling passthrough mode is allowed if (xrSession.scene.spatialCapabilities.hasCapability( SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL ) ) { xrSession.scene.spatialEnvironment.setPassthroughOpacityPreference(0f) } // Example 2: multiple capability flags can be checked simultaneously: if (xrSession.scene.spatialCapabilities.hasCapability( SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL and SpatialCapabilities.SPATIAL_CAPABILITY_3D_CONTENT ) ) { // ... }
Voir aussi
- Créer une session
- Passage entre le HSM et le FSM
- Ajouter des environnements spatiaux à votre application
- Ajouter des modèles 3D à votre application