Streaming di app companion

In Android 13, la funzionalità di streaming delle app consente agli smartphone di trasmettere le 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 in modo da trasmettere in streaming le app dal dispositivo locale al dispositivo remoto. L'app che detiene il ruolo COMPANION_DEVICE_APP_STREAMING può ottenere le autorizzazioni per creare un display virtuale, avviare un'app e trasmettere in streaming un video dell'app avviata su un altro dispositivo. L'app del proprietario del ruolo può anche iniettare eventi di input e microfono ricevuti da un dispositivo remoto nel dispositivo locale, come se fosse collegato come periferica.

Architettura

A partire da Android 13, il nuovo Virtual Device Manager e il Companion Device Manager (CDM) costituiscono i componenti di base per supportare lo streaming di app e l'interazione con i dispositivi connessi remoti.

Gestione dispositivi virtuali

Lo streaming di app funziona utilizzando i display virtuali. Virtual Device Manager crea un display virtuale separato dal display principale visibile. Quando l'utente acconsente ad avviare lo streaming di un'app, l'app viene avviata o trasferita sul display virtuale. I contenuti del display virtuale vengono trasferiti in uno stream video al dispositivo collegato per essere visualizzati.

Gestione dispositivi virtuali include API che consentono la creazione, la registrazione e la gestione di istanze VirtualDevice.

Un'istanza VirtualDevice è un proxy per il dispositivo connesso e le sue funzionalità. Un'istanza VirtualDevice consente a un dispositivo connesso di ricevere, mostrare e interagire con uno stream di app in arrivo nel seguente modo:

  • Creazione di un'istanza VirtualDisplay destinata a essere visualizzata sul display di un dispositivo connesso.
  • Inserimento di uno stream audio remoto, ad esempio dal microfono del dispositivo connesso, nel dispositivo locale per la riproduzione.
  • Iniezione di eventi di input remoti, ad esempio quelli della tastiera del dispositivo collegato, nel dispositivo locale per la riproduzione.

Gestione dispositivi companion

Il CDM gestisce lo stato di connettività e applica i requisiti dei ruoli che devono essere soddisfatti per abilitare lo streaming di app.

La figura seguente illustra le interazioni tra il dispositivo locale e quello remoto durante lo streaming di app:

app-streaming-interaction

Figura 1. Interazioni tra i dispositivi locale e remoto durante lo streaming di app

Implementazione del ruolo di streaming dell'app complementare

Gli OEM possono implementare un'app con il ruolo COMPANION_DEVICE_APP_STREAMING per attivare un'esperienza cross-device completa e sicura sui propri dispositivi.

Per creare un dispositivo virtuale per abilitare lo streaming di app, un'app deve essere un detentore 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 detentori di ruolo devono implementare lo streaming di app creando un'istanza VirtualDevice che agisce come 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 inserire nel dispositivo locale eventi di input che si verificano su un dispositivo remoto, 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 dell'app complementare:

  1. Crea un'app che richieda l'autorizzazione REQUEST_COMPANION_PROFILE_APP_STREAMING nel file manifest.

  2. Chiedi all'utente di concedere all'app l'autorizzazione per eseguire lo streaming di app.

  3. Crea un'istanza CDM AssociationRequest per richiedere un ruolo COMPANION_DEVICE_APP_STREAMING. L'app riceve l'autorizzazione CREATE_VIRTUAL_DEVICE quando viene concesso il ruolo.

  4. Chiama VirtualDeviceManager#create() per creare un'istanza VirtualDevice. Con un'istanza VirtualDevice, l'app può creare e gestire display e input virtuali.

  5. Avvia l'intent in attesa della notifica sul display virtuale e crea un acquisizione video del display.

  6. Crea una connessione al dispositivo connesso e riproduci in streaming il display virtuale sul dispositivo connesso.

  7. Riinvia gli eventi di input dal dispositivo connesso al dispositivo locale tramite le API VirtualDevice.

  8. Quando l'utente chiude l'app di streaming sul dispositivo remoto, termina lo streaming e rimuovi l'istanza VirtualDevice. A questo punto, l'app di streaming precedente viene eseguita in background sul dispositivo locale e la connessione viene chiusa.

  9. 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

Il 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 in parte quali app possono essere aggiunte al Play Store in base a questo profilo. Consulta la sezione Ruoli Android per un elenco dei requisiti dei ruoli COMPANION_DEVICE_APP_STREAMING. Per ulteriori informazioni, rivolgiti al tuo punto di contatto Google.

Competenze 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:

  • Creare e gestire connessioni ad altri dispositivi.
  • Crea e gestisci display virtuali attendibili, inclusi i display sbloccati, come segue:
    • Avvia le attività sul display virtuale.
    • Inserire di nuovo sul dispositivo locale gli eventi che si verificano su un'app in streaming su un dispositivo connesso, ad esempio la riproduzione di un evento touch sul tablet con le stesse coordinate sullo smartphone.
    • Acquisisci i dati audio dall'app riprodotta in streaming.
    • Sostituisci lo stream del microfono di un dispositivo locale con lo stream del microfono di un dispositivo connesso mentre il microfono di un'app riprodotta in streaming.
    • Sostituisci lo stream della videocamera del dispositivo locale con lo stream della videocamera di un dispositivo connesso mentre la videocamera è in uso in un'app riprodotta in streaming.
  • Gestisci e riproduci in streaming le notifiche dal dispositivo locale al dispositivo collegato e intervieni sulle notifiche.
  • Trasmetti in streaming i metadati dal dispositivo locale, come l'elenco di app disponibili sul dispositivo locale, al dispositivo connesso.
  • Richiedi la verifica del dispositivo.