Streaming dell'app complementare

In Android 13, la funzionalità di streaming delle app consente ai telefoni di trasmettere in streaming le proprie app ai dispositivi connessi e di interagire con tali dispositivi. Un nuovo ruolo COMPANION_DEVICE_APP_STREAMING consente a un'app di creare e gestire proxy per i dispositivi remoti connessi per eseguire lo streaming di app dal dispositivo locale al dispositivo remoto. L'app con il ruolo COMPANION_DEVICE_APP_STREAMING può ottenere le autorizzazioni per creare un display virtuale, avviare un'app su di esso e quindi trasmettere in streaming un video dell'app avviata su un altro dispositivo. L'app titolare del ruolo può anche inserire eventi di input e microfono ricevuti da un dispositivo remoto nel dispositivo locale, come se tale dispositivo fosse connesso come periferica.

Architettura

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

Gestore dispositivi virtuali

Lo streaming delle app funziona sfruttando i display virtuali . Virtual Device Manager crea uno schermo virtuale separato dallo schermo 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 un flusso video al dispositivo collegato per essere visualizzati.

Virtual Device Manager include API che consentono la creazione, la registrazione e la gestione delle 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, visualizzare e interagire con un flusso di app in entrata, procedendo come segue:

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

Gestione dispositivi aggiuntivi

Il CDM gestisce lo stato della connettività e applica i requisiti del ruolo che devono essere soddisfatti per abilitare lo streaming delle app.

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

app-streaming-interaction

Figura 1. Interazioni tra i dispositivi locali e remoti durante lo streaming delle app

Implementazione del ruolo di streaming dell'app complementare

Gli OEM possono implementare un'app con il ruolo COMPANION_DEVICE_APP_STREAMING per consentire un'esperienza multidispositivo ricca e sicura sui propri 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 consente all'app di creare un dispositivo virtuale. Si prevede che i titolari del ruolo implementino 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 inoltre API per inserire 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.

Segui questi passaggi per implementare il ruolo di streaming dell'app complementare:

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

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

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

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

  5. Avvia l'intento in sospeso della notifica sul display virtuale e crea un'acquisizione video di quel display.

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

  7. Reinserire gli eventi di input dal dispositivo connesso nel dispositivo locale tramite le API VirtualDevice .

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

  9. Se necessario, attendere ulteriori segnali dal dispositivo connesso per riavviare lo streaming dell'app.

L'app è responsabile della connessione al dispositivo remoto, della segnalazione dello stato di connettività al CDM e dell'applicazione dei requisiti di sicurezza come descritto nel CDD .

Requisiti del titolare 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 quali app possono essere aggiunte al Play Store che corrispondono a questo profilo. Vedi Ruoli Android per un elenco dei requisiti del ruolo COMPANION_DEVICE_APP_STREAMING . Rivolgiti al tuo punto di contatto Google per ulteriori informazioni.

Funzionalità del titolare del ruolo COMPANION_DEVICE_APP_STREAMING

Per eseguire lo streaming delle app, il ruolo COMPANION_DEVICE_APP_STREAMING presuppone che l'app titolare del ruolo abbia le funzionalità e i comportamenti seguenti:

  • Crea e gestisci connessioni con altri dispositivi.
  • Crea e gestisci display virtuali attendibili, inclusi display sbloccati, come segue:
    • Avvia le attività sul display virtuale.
    • Inserisci eventi che si verificano su un'app in streaming su un dispositivo connesso sul dispositivo locale, ad esempio la riproduzione di un evento touch sul tablet alle stesse coordinate sul telefono.
    • Cattura i dati audio dall'app in streaming.
    • Sostituisci il flusso del microfono del dispositivo locale con il flusso del microfono di un dispositivo connesso mentre un'app in streaming utilizza il microfono.
    • Sostituisci lo streaming della fotocamera del dispositivo locale con lo streaming della fotocamera di un dispositivo connesso mentre un'app in streaming utilizza la fotocamera.
  • Gestisci e trasmetti in streaming le notifiche dal dispositivo locale al dispositivo connesso e intraprendi azioni sulle notifiche.
  • Trasmetti i metadati dal dispositivo locale, come l'elenco delle app disponibili sul dispositivo locale, al dispositivo connesso.
  • Richiedi la verifica del dispositivo.