Les capacités spatiales peuvent varier selon les appareils et changer à mesure que les utilisateurs interagissent avec votre application ou le système. Elles peuvent même être modifiées par votre application elle-même, par exemple en passant en mode d'affichage restreint ou complet. Pour éviter tout problème, votre application doit vérifier les capacités spatiales afin de déterminer quelles API sont compatibles dans l'environnement actuel.
Vérifier les capacités spatiales avec Jetpack Compose pour XR
Jetpack Compose for XR crée une composition locale pour vérifier les capacités spatiales. Utilisez-le pour vérifier si l'UI spatiale, l'audio 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'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 l'affichage direct.isSpatialAudioEnabled: indique si l'application peut utiliser l'audio 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 capacité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 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 spatialement une autre activité.PASSTHROUGH_CONTROL: l'activité peut activer ou désactiver le passthrough.SPATIAL_AUDIO: l'activité peut utiliser l'audio spatial.SPATIAL_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 capacité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 et les lunettes XR filaires ont des capacités matérielles différentes, en particulier en ce qui concerne leur type d'écran. Vous devrez peut-être adapter les couleurs de l'UI et des objets affichés de votre application pour maximiser la visibilité, qui peut être influencée par le type d'écran et le mode de fusion préféré utilisé par l'appareil. L'API DisplayBlendMode fournit la capacité du mode de fusion de l'appareil pour le rendu. Utilisez cette API pour déterminer comment le contenu virtuel est ajouté au monde réel.
Voici quelques 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. L'alpha est ignoré et les pixels noirs apparaissent transparents.ALPHA_BLEND: le contenu virtuel est ajouté au monde réel en fusionnant les valeurs de pixels 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 Jetpack XR Runtime pour vérifier le type de mode de fusion utilisé et apporter les ajustements nécessaires.
Voir aussi
- Créer une session
- Transition entre HSM et FSM
- Ajouter des environnements spatiaux à votre application
- Ajouter des modèles 3D à votre application