Dans Android 13, la fonctionnalité de streaming d'applications permet aux téléphones de diffuser leurs applications sur les appareils connectés et de permettre à 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 disposant du 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 titulaire du rôle peut également injecter les é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 éléments de base pour prendre en charge le streaming d'applications et l'interaction avec des appareils connectés à distance.
Gestionnaire d'appareils virtuels
Le streaming d'application fonctionne en exploitant les é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 sur l'écran virtuel ou transférée vers celui-ci. Le contenu de l'écran virtuel est transféré dans un flux vidéo vers l'appareil connecté pour être affiché.
Le Virtual Device Manager inclut des API qui permettent de créer, d'enregistrer et de gérer des instances VirtualDevice
.
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 instance
VirtualDisplay
destinée à être affichée sur l'écran d'un appareil connecté. - Injecter un flux audio distant, par exemple à partir du micro de l'appareil connecté, dans l'appareil local pour la lecture.
- Injecter des événements d'entrée à distance, tels que ceux provenant 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 la connectivité et applique les exigences de rôle à respecter pour activer le streaming d'applications.
La figure suivante illustre les interactions entre l'appareil local et l'appareil distant lors du streaming d'application:
Figure 1 : Interactions entre les appareils locaux et distants lors du streaming d'applications
Implémentation du rôle de streaming de l'application associée
Les OEM peuvent implémenter une application avec le rôle COMPANION_DEVICE_APP_STREAMING
pour offrir une expérience inter-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 lui permet de créer un appareil virtuel. Les titulaires de rôles doivent implémenter le streaming d'application en créant une instance VirtualDevice
qui sert de proxy pour un appareil connecté. La classe VirtualDevice
fournit des méthodes qui permettent d'extraire une surface composée d'un écran virtuel, adaptée au streaming vers un autre appareil. La classe VirtualDevice
fournit également des API permettant d'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 donner l'impression qu'elle s'exécute nativement sur un appareil distant.
Pour implémenter le rôle de streaming de l'application associée, procédez comme suit:
Créez une application qui demande l'autorisation
REQUEST_COMPANION_PROFILE_APP_STREAMING
dans le fichier manifeste.Invitez l'utilisateur à accorder à l'application l'autorisation d'effectuer le streaming d'application.
Créez une instance
AssociationRequest
CDM pour demander un rôleCOMPANION_DEVICE_APP_STREAMING
. L'application reçoit l'autorisationCREATE_VIRTUAL_DEVICE
lorsque le rôle est attribué.Appelez
VirtualDeviceManager#create()
pour créer une instanceVirtualDevice
. Avec une instanceVirtualDevice
, l'application peut créer et gérer des écrans et des entrées virtuels.Lancez l'intent en attente de la notification sur l'écran virtuel et créez une capture vidéo de cet écran.
Créez une connexion à l'appareil connecté et diffusez l'écran virtuel sur l'appareil connecté.
Réinjectez les événements d'entrée de l'appareil connecté dans l'appareil local via les API
VirtualDevice
.Lorsque l'utilisateur ferme l'application de streaming sur l'appareil distant, arrêtez la diffusion et détruisez l'instance
VirtualDevice
. À ce stade, l'application précédemment diffusée en streaming s'exécute en arrière-plan sur l'appareil local, et la connexion est fermée.Si nécessaire, attendez d'autres signaux de l'appareil connecté pour redémarrer le streaming de l'application.
L'application est chargée de se connecter à l'appareil distant, de signaler l'état de connectivité à CDM et d'appliquer les exigences de sécurité, comme décrit dans le CDD.
Exigences relatives au titulaire du rôle COMPANION_DEVICE_APP_STREAMING
Le CDM attribue 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. Vous pouvez donc contrôler les applications qui peuvent être ajoutées au Play Store et qui correspondent à ce profil. Pour obtenir la liste des exigences concernant le rôle COMPANION_DEVICE_APP_STREAMING
, consultez la section Rôles Android. Pour en savoir plus, adressez-vous à votre contact Google.
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 des comportements suivants:
- Créer et gérer des connexions à d'autres appareils
- Créez et gérez des affichages virtuels approuvés, y compris des affichages déverrouillés, comme suit :
- Lancez des activités sur l'écran virtuel.
- Injectez les événements qui se produisent sur une application lue 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.
- Capturez les données audio de l'application lue en streaming.
- Remplacez le flux du micro de l'appareil local par le flux du micro d'un appareil connecté lorsqu'une application en streaming utilise le micro.
- Remplacez le flux de l'appareil local par le flux de l'appareil connecté lorsqu'une application en streaming utilise l'appareil photo.
- Gérez et diffusez les notifications de l'appareil local vers l'appareil connecté, et effectuez des actions sur les notifications.
- Lire en streaming les métadonnées de l'appareil local (par exemple, la liste des applications disponibles sur l'appareil local) vers l'appareil connecté.
- Demandez la validation de l'appareil.