Streaming d'application associée

Sous Android 13, la fonctionnalité de streaming d'application permet aux téléphones de diffuser leurs applications sur des appareils connectés et à ces appareils d'interagir avec les applications. Un nouveau COMPANION_DEVICE_APP_STREAMING rôle 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 qui détient le rôle COMPANION_DEVICE_APP_STREAMING peut obtenir des autorisations pour créer un écran virtuel, y lancer une application, puis diffuser une vidéo de l'application lancée sur un autre appareil. L'application qui détient le rôle peut également injecter des événements d'entrée et de micro 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 gestionnaire d'appareils virtuels et le gestionnaire d'appareils associés (CDM) constituent les principaux blocs de construction pour prendre en charge le streaming d'application et l'interaction avec les appareils distants connectés.

Gestionnaire d'appareils virtuels

Le streaming d'application fonctionne en tirant parti des écrans virtuels. Le gestionnaire d'appareils virtuels crée un écran virtuel distinct de l'écran principal visible. Lorsque l'utilisateur accepte de lancer le streaming d'une application, celle-ci est lancée ou transférée vers l'écran virtuel. Le contenu de l'écran virtuel est transféré dans un flux vidéo vers l'appareil connecté pour être affiché.

Le gestionnaire d'appareils virtuels inclut des API qui permettent de créer, d'enregistrer, et de gérer des VirtualDevice instances.

Une instance VirtualDevice est un proxy pour l'appareil 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 VirtualDisplay instance destinée à être affichée sur l'écran d'un appareil connecté.
  • Injection d'un flux audio distant, par exemple à partir du micro de l'appareil connecté, dans l'appareil local pour la lecture.
  • Injection d'événements d'entrée à distance, par exemple à partir du clavier de l'appareil connecté, dans l'appareil local pour la lecture.

Gestionnaire d'appareils associés

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

La figure suivante illustre les interactions entre l'appareil local et l'appareil distant lors du streaming d'application :

app-streaming-interaction

Figure 1. Interactions entre les appareils local et distant lors du streaming d'application

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

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

Pour créer un appareil virtuel afin d'activer le streaming d'application, une application doit détenir le rôle COMPANION_DEVICE_APP_STREAMING. Lorsque le rôle est accordé, l'application reçoit l' CREATE_VIRTUAL_DEVICE autorisation, ce qui permet à l'application de créer un appareil virtuel. Les détenteurs de rôle sont censés implémenter le streaming d'application en créant une instance VirtualDevice qui fait office de proxy pour un appareil connecté. La classe VirtualDevice fournit des méthodes qui permettent d'extraire une surface composite d'un écran virtuel, adaptée au streaming 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, ce qui permet à une application exécutée sur un appareil local de s'afficher comme si elle s'exécutait de manière native sur un appareil distant.

Pour implémenter le rôle de streaming d'application associée, procédez comme suit :

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

  2. Invitez 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 écrans virtuels et des entrées virtuelles.

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

  6. Créez une connexion à l'appareil connecté et diffusez l'écran virtuel sur l'appareil connecté.

  7. Injectez des é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édemment diffusée 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 le streaming d'application.

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

Exigences pour les détenteurs 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. Il est donc possible de contrôler les applications qui peuvent être ajoutées au Play Store et qui correspondent à ce profil. Pour obtenir la liste des exigences du rôle COMPANION_DEVICE_APP_STREAMING, consultez la section Rôles Android. Pour en savoir plus, contactez votre représentant Google.

Fonctionnalités des détenteurs du rôle COMPANION_DEVICE_APP_STREAMING

Pour effectuer le streaming d'application, le rôle COMPANION_DEVICE_APP_STREAMING suppose que l'application qui détient le rôle présente les fonctionnalités et les comportements suivants :

  • Créer et gérer des connexions à d'autres appareils.
  • Créer et gérer des écrans virtuels de confiance, y compris des écrans déverrouillés, comme suit :
    • Démarrer des activités sur l'écran virtuel.
    • Injecter des événements qui se produisent sur une application diffusée en streaming sur un appareil connecté sur l'appareil local, par exemple en lisant un événement tactile sur la tablette aux mêmes coordonnées sur le téléphone.
    • Capturer des données audio à partir de l'application diffusée en streaming.
    • Remplacer le flux du micro de l'appareil local par le flux du micro d'un appareil connecté lorsqu'une application diffusée en streaming utilise le micro.
    • Remplacer le flux de la caméra de l'appareil local par le flux de la caméra d'un appareil connecté lorsqu'une application diffusée en streaming utilise la caméra.
  • Gérer et diffuser des notifications de l'appareil local vers l'appareil connecté, et effectuer des actions sur les notifications.
  • Diffuser des métadonnées de l'appareil local, telles que la liste des applications disponibles sur l'appareil local, vers l'appareil connecté.
  • Demander la validation de l'appareil.