Les fonctionnalités spatiales peuvent varier d'un appareil à l'autre et changer lorsque les utilisateurs interagissent avec votre application ou le système. Ils peuvent même être modifiés 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 afin de déterminer les API compatibles avec l'environnement actuel.
Vérifier les fonctionnalités spatiales à l'aide de Jetpack Compose pour XR
Jetpack Compose pour XR crée un CompositionLocal pour vérifier les fonctionnalités spatiales. Utilisez cette option pour vérifier si l'UI spatiale, le son spatial, les environnements, le passthrough ou le contenu 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'interface utilisateur 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 l'intercommunication.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, utilisez spatialCapabilities à partir de l'scene de la session pour interroger les capacités spatiales actuellement disponibles.
SPATIAL_3D_CONTENT: l'activité peut créer des contenus 3D.APP_ENVIRONMENT: l'activité peut définir son propre environnement.EMBED_ACTIVITY: l'activité peut intégrer une autre activité dans l'espace.PASSTHROUGH_CONTROL: l'activité peut activer ou désactiver le mode Passthrough.SPATIAL_AUDIO: l'activité peut utiliser le son spatial.SPATIAL_UI: l'activité peut se spatialiser elle-même (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.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) ) { // ... }
Utiliser le mode de fusion pour vérifier les capacités d'affichage de l'appareil
Sur Android XR, les casques XR et les lunettes XR filaires ont des capacités matérielles différentes, en particulier en ce qui concerne leur type d'affichage. Vous devrez peut-être adapter les couleurs de l'UI de votre application et des objets affichés pour optimiser la visibilité, qui peut être influencée par le type d'affichage et le mode de fusion préféré utilisé par l'appareil. L'API DisplayBlendMode fournit la fonctionnalité de mode de fusion de l'appareil pour l'affichage. Utilisez cette API pour déterminer comment le contenu virtuel est ajouté au monde réel.
Voici quelques-uns des types de modes de fusion à connaître :
ADDITIVE: le contenu virtuel est ajouté au monde réel en ajoutant les valeurs de pixel pour chacun des composants rouge, vert et bleu. La valeur alpha est ignorée et les pixels noirs apparaissent transparents.ALPHA_BLEND: le contenu virtuel est ajouté au monde réel en mélangeant les valeurs de pixel en fonction du composant alpha.NO_DISPLAY: le mélange n'est pas compatible avec l'appareil.
Utilisez XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() de la bibliothèque d'exécution Jetpack XR pour vérifier le type de mode de fusion utilisé et effectuer les ajustements nécessaires.
Voir aussi
- Créer une session
- Passer de la gestion de l'espace de stockage par l'établissement à la gestion de l'espace de stockage par la famille
- Ajouter des environnements spatiaux à votre application
- Ajouter des modèles 3D à votre application