Diffusion d'applications compagnons

Dans Android 13, la fonctionnalité de diffusion d'applications permet aux téléphones de diffuser leurs applications sur des appareils connectés et permet à ces appareils d'interagir avec les applications. Un nouveau rôle COMPANION_DEVICE_APP_STREAMING permet à une application de créer et de gérer des proxys pour les appareils distants connectés afin de diffuser des applications de l'appareil local vers l'appareil distant. L'application détenant le rôle COMPANION_DEVICE_APP_STREAMING peut obtenir les autorisations nécessaires pour créer un affichage virtuel, lancer une application dessus, puis diffuser une vidéo de l'application lancée sur un autre appareil. L'application du détenteur de rôle peut également réinjecter les événements d'entrée et de microphone reçus d'un appareil distant dans l'appareil local, comme si cet appareil était connecté en tant que périphérique.

Architecture

À partir d'Android 13, le nouveau Virtual Device Manager et le Companion Device Manager (CDM) constituent les éléments clés pour prendre en charge le streaming d'applications et l'interaction avec les appareils distants et connectés.

Gestionnaire de périphériques virtuels

Le streaming d'applications fonctionne en tirant parti des écrans virtuels . Le gestionnaire de périphériques virtuels crée un affichage virtuel distinct de l'affichage principal visible. Lorsque l'utilisateur consent à démarrer la diffusion en continu d'une application, l'application est lancée sur l'écran virtuel ou transférée vers celui-ci. Le contenu de l'affichage virtuel est transféré dans un flux vidéo vers l'appareil connecté à afficher.

Le Virtual Device Manager comprend des API qui permettent la création, l'enregistrement et la gestion d'instances VirtualDevice .

Une instance VirtualDevice est un proxy pour le périphérique connecté et ses fonctionnalités. Une instance VirtualDevice permet à un appareil connecté de recevoir, d'afficher et d'interagir avec un flux d'application entrant, en procédant comme suit :

  • Création d'une instance VirtualDisplay destinée à être affichée sur l'écran d'un appareil connecté.
  • Injection d'un flux audio distant, par exemple depuis le microphone de l'appareil connecté, dans l'appareil local pour la lecture.
  • Injection d'événements d'entrée à distance, tels que ceux du clavier de l'appareil connecté, dans l'appareil local pour la lecture.

Gestionnaire de périphériques compagnon

Le CDM gère l'état de la connectivité et applique les exigences de rôle qui doivent être remplies pour activer le streaming d'applications.

La figure suivante illustre les interactions entre l'appareil local et distant pendant la diffusion d'applications :

app-streaming-interaction

Figure 1. Interactions entre les appareils locaux et distants pendant la diffusion d'applications

Implémentation du rôle de streaming d'application compagnon

Les OEM peuvent implémenter une application avec le rôle COMPANION_DEVICE_APP_STREAMING pour permettre une expérience multi-appareils riche et sécurisée sur leurs appareils.

Pour créer un appareil virtuel afin d'activer le streaming d'applications, une application doit être titulaire du rôle COMPANION_DEVICE_APP_STREAMING . Lorsque le rôle est accordé, l'application reçoit l'autorisation CREATE_VIRTUAL_DEVICE , qui permet à l'application de créer un appareil virtuel. Les titulaires de rôles doivent mettre en œuvre le streaming d'applications en créant une instance VirtualDevice qui agit comme proxy pour un appareil connecté. La classe VirtualDevice fournit des méthodes qui permettent l'extraction d'une surface composite d'un écran virtuel, adaptée à la diffusion en continu vers un autre appareil. La classe VirtualDevice fournit également des API pour injecter des événements d'entrée qui se produisent sur un appareil distant dans l'appareil local, permettant ainsi à une application exécutée sur un appareil local d'apparaître comme si elle s'exécutait de manière native sur un appareil distant.

Suivez ces étapes pour implémenter le rôle de streaming d’application compagnon :

  1. Créez une application qui demande l'autorisation REQUEST_COMPANION_PROFILE_APP_STREAMING dans le manifeste.

  2. Inviter l'utilisateur à accorder à l'application l'autorisation d'effectuer le streaming d'application.

  3. Créez une instance CDM AssociationRequest pour demander un rôle COMPANION_DEVICE_APP_STREAMING . L'application reçoit l'autorisation CREATE_VIRTUAL_DEVICE lorsque le rôle est accordé.

  4. Appelez VirtualDeviceManager#create() pour créer une instance VirtualDevice . Avec une instance VirtualDevice , l'application peut créer et gérer des affichages virtuels et des entrées virtuelles.

  5. Lancez l'intention en attente de notification sur l'écran virtuel et créez une capture vidéo de cet affichage.

  6. Créez une connexion avec l'appareil connecté et diffusez l'affichage virtuel sur l'appareil connecté.

  7. Réinjectez les événements d’entrée de l’appareil connecté dans l’appareil local via les API VirtualDevice .

  8. Lorsque l'utilisateur ferme l'application de streaming sur l'appareil distant, mettez fin au flux et supprimez l'instance VirtualDevice . À ce stade, l'application de streaming précédente s'exécute en arrière-plan sur l'appareil local et la connexion est fermée.

  9. Si nécessaire, attendez d'autres signaux de l'appareil connecté pour redémarrer la diffusion de l'application.

L'application est chargée de se connecter à l'appareil distant, de signaler l'état de la connectivité au CDM et d'appliquer les exigences de sécurité décrites dans le CDD .

Exigences du titulaire du rôle COMPANION_DEVICE_APP_STREAMING

Le CDM accorde le rôle COMPANION_DEVICE_APP_STREAMING lorsque l'utilisateur associe une application de streaming d'application à un appareil. Ce rôle est associé à un profil d'appareil, ce qui permet de contrôler quelles applications peuvent être ajoutées au Play Store et qui correspondent à ce profil. Voir Rôles Android pour une liste des exigences du rôle COMPANION_DEVICE_APP_STREAMING . Contactez votre point de contact Google pour plus d'informations.

Capacités du titulaire du rôle COMPANION_DEVICE_APP_STREAMING

Pour effectuer le streaming d'applications, le rôle COMPANION_DEVICE_APP_STREAMING suppose que l'application titulaire du rôle dispose des fonctionnalités et comportements suivants :

  • Créez et gérez des connexions avec d'autres appareils.
  • Créez et gérez des écrans virtuels fiables, y compris des écrans déverrouillés, comme suit :
    • Démarrez les activités sur l’écran virtuel.
    • Injectez les événements qui se produisent sur une application diffusée en streaming sur un appareil connecté sur l'appareil local, comme la lecture d'un événement tactile sur la tablette aux mêmes coordonnées sur le téléphone.
    • Capturez des données audio à partir de l'application diffusée en streaming.
    • Remplacez le flux du microphone de l'appareil local par le flux du microphone d'un appareil connecté pendant qu'une application diffusée en streaming utilise le microphone.
    • Remplacez le flux de la caméra de l'appareil local par le flux de la caméra d'un appareil connecté pendant qu'une application diffusée en streaming utilise la caméra.
  • Gérez et diffusez les notifications de l'appareil local vers l'appareil connecté, et prenez des mesures sur les notifications.
  • Diffusez les métadonnées de l'appareil local, telles que la liste des applications disponibles sur l'appareil local, vers l'appareil connecté.
  • Demander la vérification de l'appareil.