En Android 13, la función de transmisión de aplicaciones permite que los teléfonos transmitan sus aplicaciones a dispositivos conectados y permite que esos dispositivos interactúen con las aplicaciones. Una nueva función COMPANION_DEVICE_APP_STREAMING
permite que una aplicación cree y administre servidores proxy para dispositivos remotos conectados para transmitir aplicaciones desde el dispositivo local al dispositivo remoto. La aplicación que tiene la función COMPANION_DEVICE_APP_STREAMING
puede obtener permisos para crear una pantalla virtual, iniciar una aplicación en ella y luego transmitir un video de la aplicación iniciada a otro dispositivo. La aplicación de titular de función también puede inyectar eventos de entrada y micrófono recibidos desde un dispositivo remoto al dispositivo local, como si ese dispositivo estuviera conectado como un periférico.
Arquitectura
A partir de Android 13, el nuevo Administrador de dispositivos virtuales y el Administrador de dispositivos complementarios (CDM) forman los componentes clave para admitir la transmisión de aplicaciones y la interacción con dispositivos remotos conectados.
Administrador de dispositivos virtuales
La transmisión de aplicaciones funciona aprovechando las pantallas virtuales . El Administrador de dispositivos virtuales crea una pantalla virtual separada de la pantalla principal visible. Cuando el usuario acepta comenzar a transmitir una aplicación, la aplicación se inicia o se transfiere a la pantalla virtual. El contenido de la pantalla virtual se transfiere en una transmisión de vídeo al dispositivo conectado para su visualización.
Virtual Device Manager incluye API que permiten la creación, el registro y la gestión de instancias de VirtualDevice
.
Una instancia VirtualDevice
es un proxy para el dispositivo conectado y sus capacidades. Una instancia VirtualDevice
permite que un dispositivo conectado reciba, muestre e interactúe con una transmisión de aplicación entrante, haciendo lo siguiente:
- Crear una instancia
VirtualDisplay
destinada a mostrarse en la pantalla de un dispositivo conectado. - Inyectar una transmisión de audio remota, como desde el micrófono del dispositivo conectado, en el dispositivo local para su reproducción.
- Inyectar eventos de entrada remota, como los del teclado del dispositivo conectado, en el dispositivo local para su reproducción.
Administrador de dispositivos complementarios
El CDM administra el estado de la conectividad y aplica los requisitos de función que se deben cumplir para habilitar la transmisión de aplicaciones.
La siguiente figura ilustra las interacciones entre el dispositivo local y remoto durante la transmisión de aplicaciones:
Figura 1. Interacciones entre los dispositivos locales y remotos durante la transmisión de aplicaciones
Implementación de la función de transmisión de aplicaciones complementarias
Los OEM pueden implementar una aplicación con la función COMPANION_DEVICE_APP_STREAMING
para permitir una experiencia rica y segura entre dispositivos en sus dispositivos.
Para crear un dispositivo virtual para habilitar la transmisión de aplicaciones, una aplicación debe tener la función COMPANION_DEVICE_APP_STREAMING
. Cuando se otorga la función, la aplicación recibe el permiso CREATE_VIRTUAL_DEVICE
, que le permite crear un dispositivo virtual. Se espera que los titulares de funciones implementen la transmisión de aplicaciones mediante la creación de una instancia VirtualDevice
que actúe como proxy para un dispositivo conectado. La clase VirtualDevice
proporciona métodos que permiten la extracción de una superficie compuesta de una pantalla virtual, adecuada para transmitir a otro dispositivo. La clase VirtualDevice
también proporciona API para inyectar eventos de entrada que ocurren en un dispositivo remoto en el dispositivo local, lo que permite que una aplicación que se ejecuta en un dispositivo local parezca como si se estuviera ejecutando de forma nativa en un dispositivo remoto.
Siga estos pasos para implementar la función de transmisión de aplicaciones complementarias:
Cree una aplicación que solicite el permiso
REQUEST_COMPANION_PROFILE_APP_STREAMING
en el manifiesto.Solicite al usuario que otorgue permiso a la aplicación para realizar la transmisión de aplicaciones.
Cree una instancia de CDM
AssociationRequest
para solicitar una funciónCOMPANION_DEVICE_APP_STREAMING
. La aplicación recibe el permisoCREATE_VIRTUAL_DEVICE
cuando se otorga la función.Llame
VirtualDeviceManager#create()
para crear una instanciaVirtualDevice
. Con una instanciaVirtualDevice
, la aplicación puede crear y administrar pantallas y entradas virtuales.Inicie la intención pendiente de la notificación en la pantalla virtual y cree una captura de video de esa pantalla.
Cree una conexión con el dispositivo conectado y transmita la pantalla virtual al dispositivo conectado.
Inyecte eventos de entrada desde el dispositivo conectado al dispositivo local a través de las API
VirtualDevice
.Cuando el usuario cierra la aplicación de transmisión en el dispositivo remoto, finalice la transmisión y elimine la instancia
VirtualDevice
. En este punto, la aplicación de transmisión anterior se ejecuta en segundo plano en el dispositivo local y la conexión se cierra.Si es necesario, espere más señales del dispositivo conectado para reiniciar la transmisión de la aplicación.
La aplicación es responsable de conectarse al dispositivo remoto, informar el estado de conectividad al CDM y hacer cumplir los requisitos de seguridad como se describe en el CDD .
COMPANION_DEVICE_APP_STREAMING requisitos del titular de la función
El CDM otorga la función COMPANION_DEVICE_APP_STREAMING
cuando el usuario asocia una aplicación de transmisión de aplicaciones con un dispositivo. Esta función está asociada con un perfil de dispositivo, por lo que hay cierto control sobre qué aplicaciones se pueden agregar a Play Store que coincidan con este perfil. Consulte Roles de Android para obtener una lista de los requisitos del rol COMPANION_DEVICE_APP_STREAMING
. Comuníquese con su punto de contacto de Google para obtener más información.
COMPANION_DEVICE_APP_STREAMING capacidades del titular de rol
Para realizar la transmisión de aplicaciones, la función COMPANION_DEVICE_APP_STREAMING
supone que la aplicación titular de la función tiene las siguientes capacidades y comportamientos:
- Cree y administre conexiones con otros dispositivos.
- Cree y administre pantallas virtuales confiables, incluidas pantallas desbloqueadas, de la siguiente manera:
- Iniciar actividades en la pantalla virtual.
- Inyecte eventos que suceden en una aplicación transmitida en un dispositivo conectado nuevamente en el dispositivo local, como reproducir un evento táctil en la tableta en las mismas coordenadas en el teléfono.
- Capture datos de audio desde la aplicación transmitida.
- Reemplace la transmisión del micrófono del dispositivo local con la transmisión del micrófono de un dispositivo conectado mientras una aplicación transmitida esté usando el micrófono.
- Reemplace la transmisión de la cámara del dispositivo local con la transmisión de la cámara de un dispositivo conectado mientras una aplicación transmitida esté usando la cámara.
- Administre y transmita notificaciones desde el dispositivo local al dispositivo conectado y tome medidas sobre las notificaciones.
- Transmita metadatos desde el dispositivo local, como la lista de aplicaciones disponibles en el dispositivo local, al dispositivo conectado.
- Solicitar verificación del dispositivo.