Prévoir la prise en charge de différents types de lunettes audio et lunettes avec écran

Appareils XR concernés
Ces conseils vous aident à créer des expériences pour ces types d'appareils XR.
Lunettes audio et
avec écran

Les différents types de lunettes audio et avec écran ont des fonctionnalités différentes. Par exemple, alors que toutes les lunettes audio et avec écran offrent des expériences audio via la voix, seules les lunettes avec écran disposent d'un écran sur lequel votre application peut afficher des interfaces utilisateur créées avec Jetpack Compose Glimmer.

Pour créer une expérience utilisateur fluide sur une gamme d'appareils, planifiez votre Activity pour que les lunettes vérifient les différentes fonctionnalités de l'appareil. Cette approche simplifie le développement en vous permettant de créer une activité qui adapte son comportement, plutôt que plusieurs activités ciblant des appareils spécifiques.

Comprendre le cycle de vie des activités projetées

L'activité que vous créez pour les lunettes audio et avec écran ne s'exécute pas directement sur l'appareil, mais est projetée sur l'appareil à partir d'un appareil hôte (tel que le téléphone de l'utilisateur). Les activités dédiées que vous créez à cet effet sont des activités projetées. Le cycle de vie des activités projetées est basé sur le cycle de vie standard des activités, mais il inclut également plusieurs différences clés qui prennent en charge les fonctionnalités de différents types de lunettes audio et avec écran.

Figure 1. Les événements clés du cycle de vie des activités projetées.

Voici une présentation des événements clés, avec des légendes pour les interactions spécifiques aux activités projetées sur les lunettes audio et avec écran :

  • onCreate()
    • Appelé lorsque l'activité projetée est créée.
    • Initialisez ici l'interface utilisateur Jetpack Compose Glimmer de votre application et d'autres composants.
  • onStart()
    • Appelé lorsque l'activité projetée démarre et que l'utilisateur est conscient de l'application.
  • onResume()
    • Appelé lorsque l'activité projetée retrouve le focus. Lorsque l'activité est ciblée, elle est interactive et peut consommer des entrées de pavé tactile ou de bouton.
    • Appelé lorsque les lunettes sont remises sur la tête (enfilées), après avoir été retirées.
  • onPause()
    • Appelé lorsque l'activité projetée perd le focus, mais que l'utilisateur est toujours conscient de votre application. Lorsque l'activité n'est pas ciblée, elle n'est pas interactive et cesse de consommer des entrées.
  • onStop()
    • Appelé lorsque le système estime que l'utilisateur n'est plus conscient de votre application.
    • Appelé lorsque les lunettes sont retirées de la tête.
  • onDestroy()
    • Appelé lorsque l'activité projetée est sur le point d'être détruite. Lorsque cette méthode est appelée, le système libère toutes les ressources liées à l'activité.

Comprendre l'impact de l'état de l'écran sur le cycle de vie de l'activité projetée

Dans une Activity standard, l'état du cycle de vie change lorsque l'écran de l'appareil s'éteint, passant généralement à onPause() ou onStop(). En revanche, le cycle de vie de l'activité projetée ne change pas lorsque l'écran des lunettes s'allume ou s'éteint. Ce comportement signifie que votre activité projetée continue de s'exécuter à l'état "Démarré" ou "Repris", même lorsque l'écran est éteint, ce qui permet aux expériences audio de votre application de se poursuivre sans interruption.

Les autres changements d'état de l'activité déclenchés par différents événements système et utilisateur se comportent de la manière habituelle.

Comprendre l'impact de la conscience de l'utilisateur sur votre activité projetée

Un utilisateur peut être conscient de votre activité projetée même si elle n'est pas visible. La conscience fait référence à toutes les façons dont un utilisateur peut percevoir et interagir avec les expériences de votre application, y compris les suivantes :

  • Écouter du contenu audio, des commentaires audibles ou d'autres signaux sonores.
  • Actions d'application qui déclenchent une LED visible par l'utilisateur, comme un indicateur de confidentialité si votre application accède à la caméra ou au micro.

Dans ces situations, l'utilisateur est conscient que les lunettes audio et avec écran sont actives et répondent, même s'il ne regarde pas l'écran :

  • L'état onStart() des activités projetées signifie que l'activité est active.
  • L'état onResume() signifie que l'activité est interactive et peut recevoir des entrées de pavé tactile ou recevoir une distribution d'entrée principale.

Tant que l'utilisateur est conscient de votre application, votre activité reste active et au premier plan. Si le système ne détecte aucun signal de conscience pendant une courte période, il supprime l'activité du premier plan et finit par déclencher onStop().

Comprendre les activités projetées et les contextes projetés

Les lunettes audio et avec écran sont traitées comme un appareil connecté qui étend les fonctionnalités du téléphone d'un utilisateur. Un contexte projeté est un contexte qui tient compte de l'appareil Context et qui permet aux applications d'interagir avec le matériel d'un appareil de lunettes connecté , tel que ses capteurs, sa caméra ou son micro, plutôt qu'avec le matériel du téléphone. Lorsque vous développez des expériences pour les lunettes audio et avec écran, votre application doit utiliser un contexte projeté pour accéder au matériel des lunettes.

Un contexte projeté peut être automatiquement accordé à votre application en fonction du contexte de l'activité appelante :

  • Pour les activités projetées : si le code de votre application s'exécute à partir de votre activité projetée, son propre contexte d'activité est déjà un contexte projeté. Dans ce scénario, les appels effectués dans cette activité peuvent déjà accéder au matériel des lunettes.

  • Pour les applications ou services téléphoniques : si une partie de votre application en dehors de votre activité projetée (telle qu'une activité ou un service téléphonique) doit accéder au matériel des lunettes, elle doit obtenir explicitement un contexte projeté. Pour ce faire, utilisez la createProjectedDeviceContext() méthode.

Pour en savoir plus, consultez Utiliser un contexte projeté pour accéder au matériel des lunettes audio et avec écran.

Comprendre les API qui tiennent compte de l'appareil

Certaines API Android standards modifient le matériel de l'appareil auquel elles accèdent en fonction du Context de l'activité appelante. Lorsque ces API reçoivent un contexte projeté, elles accèdent au matériel des lunettes au lieu du matériel de l'appareil téléphonique hôte :

  • CameraManager: accède à la caméra des lunettes.
  • SensorManager: récupère les données des capteurs (par exemple, les données du gyroscope ou de l'accéléromètre) des lunettes.
  • AudioManager: gère les flux audio, le volume et le routage sur les lunettes.
  • AudioRecord: capture l'audio à l'aide du micro des lunettes.