In Android 13, la funzionalità di streaming di app consente agli smartphone di trasmettere in streaming le proprie app ai dispositivi connessi e a questi ultimi di interagire con le app. Un nuovo ruolo COMPANION_DEVICE_APP_STREAMING
consente a un'app di creare e gestire proxy per i dispositivi remoti connessi per
trasmettere app in streaming dal dispositivo locale a quello remoto. L'app con il ruolo COMPANION_DEVICE_APP_STREAMING può ottenere le autorizzazioni per creare un display virtuale, avviare un'app al suo interno e poi trasmettere in streaming un video dell'app avviata su un altro dispositivo. L'app del titolare del ruolo può anche inserire eventi di input e microfono
ricevuti da un dispositivo remoto nel dispositivo locale, come se quest'ultimo fosse
collegato come periferica.
Architettura
A partire da Android 13, il nuovo Virtual Device Manager e il Companion Device Manager (CDM) costituiscono i blocchi di base per supportare lo streaming di app e l'interazione con dispositivi remoti e connessi.
Gestione dispositivi virtuali
Lo streaming di app funziona sfruttando i display virtuali. Gestione dispositivi virtuali crea un display virtuale separato dal display principale visibile. Quando l'utente acconsente ad avviare lo streaming di un'app, questa viene avviata o trasferita sul display virtuale. I contenuti del display virtuale vengono trasferiti in uno stream video al dispositivo connesso per essere visualizzati.
Virtual Device Manager include API che consentono la creazione, la registrazione e la gestione di istanze di VirtualDevice.
Un'istanza VirtualDevice è un proxy per il dispositivo connesso e le sue
funzionalità. Un'istanza VirtualDevice consente a un dispositivo connesso di ricevere,
visualizzare e interagire con uno streaming di app in entrata, nel seguente modo:
- Creazione di un'istanza
VirtualDisplaydestinata a essere visualizzata sul display di un dispositivo connesso. - L'inserimento di un flusso audio remoto, ad esempio dal microfono del dispositivo connesso, nel dispositivo locale per la riproduzione.
- Inserimento di eventi di input remoto, ad esempio dalla tastiera del dispositivo connesso, nel dispositivo locale per la riproduzione.
Gestione dispositivi companion
Il CDM gestisce lo stato della connettività e applica i requisiti di ruolo che devono essere soddisfatti per abilitare lo streaming di app.
La seguente figura illustra le interazioni tra il dispositivo locale e il dispositivo remoto durante lo streaming di app:
Figura 1. Interazioni tra i dispositivi locali e remoti durante lo streaming di app
Implementazione del ruolo di streaming di app complementare
Gli OEM possono implementare un'app con il ruolo COMPANION_DEVICE_APP_STREAMING per
offrire un'esperienza cross-device ricca e sicura sui loro dispositivi.
Per creare un dispositivo virtuale per abilitare lo streaming di app, un'app deve essere titolare del ruolo
COMPANION_DEVICE_APP_STREAMING. Quando il ruolo viene concesso, l'app riceve l'autorizzazione CREATE_VIRTUAL_DEVICE, che le consente di creare un dispositivo virtuale. I titolari dei ruoli
devono implementare lo streaming di app creando un'istanza VirtualDevice
che funge da proxy per un dispositivo connesso. La classe VirtualDevice fornisce metodi che consentono l'estrazione di una superficie composita di un display virtuale, adatta per lo streaming su un altro dispositivo. La classe VirtualDevice
fornisce anche API per l'inserimento di eventi di input che si verificano su un dispositivo remoto nel
dispositivo locale, consentendo a un'app in esecuzione su un dispositivo locale di apparire come
se fosse in esecuzione in modo nativo su un dispositivo remoto.
Per implementare il ruolo di streaming di app complementare:
Crea un'app che richieda l'autorizzazione
REQUEST_COMPANION_PROFILE_APP_STREAMINGnel manifest.Chiedi all'utente di concedere all'app le autorizzazioni app per eseguire lo streaming di app.
Crea un'istanza CDM
AssociationRequestper richiedere un ruoloCOMPANION_DEVICE_APP_STREAMING. L'app riceve l'autorizzazioneCREATE_VIRTUAL_DEVICEquando viene concesso il ruolo.Chiama
VirtualDeviceManager#create()per creare un'istanzaVirtualDevice. Con un'istanzaVirtualDevice, l'app può creare e gestire display virtuali e input virtuali.Avvia il pending intent della notifica sul display virtuale e crea una registrazione video di tale display.
Crea una connessione al dispositivo connesso e trasmetti il display virtuale al dispositivo connesso.
Inserisci gli eventi di input indietro dal dispositivo connesso al dispositivo locale tramite le API
VirtualDevice.Quando l'utente chiude l'app di streaming sul dispositivo remoto, termina lo streaming e chiudi l'istanza
VirtualDevice. A questo punto, l'app di streaming che trasmetteva in precedenza viene eseguita in background sul dispositivo locale e la connessione viene chiusa.Se necessario, attendi altri segnali dal dispositivo connesso per riavviare lo streaming dell'app.
L'app è responsabile della connessione al dispositivo remoto, della segnalazione dello stato di connettività a CDM e dell'applicazione dei requisiti di sicurezza come descritto nel CDD.
Requisiti per i titolari del ruolo COMPANION_DEVICE_APP_STREAMING
CDM concede il ruolo COMPANION_DEVICE_APP_STREAMING quando l'utente associa un'app di streaming di app a un dispositivo. Questo ruolo è associato a un
profilo del dispositivo, quindi è possibile controllare quali app possono essere aggiunte al Play
Store che corrispondono a questo profilo. Consulta Ruoli Android per un elenco dei requisiti dei ruoli COMPANION_DEVICE_APP_STREAMING. Contatta
il tuo punto di contatto Google per saperne di più.
Funzionalità del titolare del ruolo COMPANION_DEVICE_APP_STREAMING
Per eseguire lo streaming di app, il ruolo COMPANION_DEVICE_APP_STREAMING presuppone che
l'app del titolare del ruolo abbia le seguenti funzionalità e comportamenti:
- Crea e gestisci le connessioni ad altri dispositivi.
- Crea e gestisci display virtuali attendibili, inclusi i display sbloccati, come segue:
- Avvia le attività sul display virtuale.
- Inserisci gli eventi che si verificano su un'app di streaming su un dispositivo connesso sul dispositivo locale, ad esempio riproduci un evento touch sul tablet alle stesse coordinate sullo smartphone.
- Acquisire i dati audio dall'app di streaming.
- Sostituisci il flusso del microfono del dispositivo locale con il flusso del microfono di un dispositivo connesso mentre un'app di streaming utilizza il microfono.
- Sostituisci lo stream della videocamera del dispositivo locale con quello di un dispositivo connesso mentre un'app in streaming utilizza la videocamera.
- Gestire e trasmettere in streaming le notifiche dal dispositivo locale a quello connesso e intraprendere azioni in base alle notifiche.
- Trasmettere in streaming i metadati dal dispositivo locale, ad esempio l'elenco delle app disponibili sul dispositivo locale, al dispositivo connesso.
- Richiedi la verifica del dispositivo.