Vérifier les fonctionnalités spatiales

Appareils XR concernés
Ces conseils vous aideront à créer des expériences pour ces types d'appareils XR.
Casques XR
Lunettes XR filaires

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 :

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