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 entrée 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

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ée

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é avec 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 libérer les ressources spécifiques aux lunettes, telles qu'un flux de données de caméra, lorsque l'état passe de STARTED à CREATED. L'état CREATED indique que l'appareil n'est plus porté. Il est donc essentiel d'arrêter ces processus pour éviter une décharge inutile de la batterie et préserver la confidentialité des utilisateurs.