Vérifier la disponibilité des appareils au moment de l'exécution pour les lunettes IA

Au cours de la journée d'un utilisateur, ses lunettes IA peuvent perdre leur connexion à l'appareil hôte (comme son téléphone) ou être temporairement indisponibles s'il les retire. Pour tenir compte de ces types de changements de disponibilité des appareils, votre application peut utiliser l'API XR Device Availability, qui consolide les signaux de disponibilité des appareils dans les valeurs Lifecycle.State Android standards. Utilisez cette API pour gérer le routage audio et l'activation du mot clé, et pour savoir quand attendre une saisie de l'utilisateur en fonction de la disponibilité des lunettes IA.

Comprendre les états du cycle de vie

Le tableau suivant indique comment les signaux de disponibilité des appareils sont mappés aux valeurs Lifecycle.State.

État du cycle de vie

État de l'appareil

Description

INITIALIZED

Date de création

L'objet de cycle de vie est créé, mais pas encore observé.

CREATED

Inactif

Le service est connecté, mais l'utilisateur ne porte pas l'appareil.

STARTED

Actif

L'utilisateur porte l'appareil.

DESTROYED

Déconnecté

L'appareil est déconnecté ou la connexion au service est perdue.

Vérifier et surveiller la disponibilité des appareils

Pour vérifier et surveiller la disponibilité d'un appareil, vous utiliserez un contexte projeté ainsi que l'état du cycle de vie pour déterminer comment votre application doit gérer chaque cas :

    val xrDevice = XrDevice.getCurrentDevice(projectedContext)

    xrDevice.getLifecycle().currentStateFlow
        .takeWhile { it != Lifecycle.State.DESTROYED }
        .collect { state ->
            when (state) {
                Lifecycle.State.STARTED -> { /* Device is ACTIVE (worn) */ }
                Lifecycle.State.CREATED -> { /* Device is INACTIVE (not worn) */ }
                else -> { /* Handle other states */ }
            }
        }
}

Points clés concernant le code

  • Vérifiez la connexion : avant d'accéder au cycle de vie de l'appareil, appelez ProjectedContext.isProjectedDeviceConnected pour vérifier que l'appareil projeté est connecté à l'appareil hôte.
  • Obtenez un ProjectedContext : n'appelez ProjectedContext.createProjectedDeviceContext qu'après avoir vérifié la connexion et assurez-vous de transmettre ce contexte à votre instance XrDevice.
  • Gérer l'invalidation du contexte : un nouveau deviceId est généré chaque fois qu'un appareil projeté se connecte. Une fois l'état DESTROYED atteint, le ProjectedContext actuel n'est plus valide. Arrêtez immédiatement de l'utiliser et attendez une nouvelle connexion.
  • Optimiser la batterie et les ressources : gérer correctement les fonctionnalités de l'application en fonction de l'état du cycle de vie pour préserver les ressources système et réduire la consommation de la batterie. Par exemple, vous devez arrêter de projeter du contenu d'UI sur les lunettes IA lorsque l'état passe à CREATED.