Companion-App-Streaming

In Android 13 ermöglicht die App-Streaming-Funktion Telefonen, ihre Apps auf angeschlossene Geräte zu streamen und diese Geräte mit den Apps interagieren zu lassen. Mit der neuen Rolle COMPANION_DEVICE_APP_STREAMING kann eine App Proxys für verbundene Remote-Geräte erstellen und verwalten, um Apps vom lokalen Gerät zum Remote-Gerät zu streamen. Die App mit der Rolle COMPANION_DEVICE_APP_STREAMING kann Berechtigungen zum Erstellen einer virtuellen Anzeige, zum Starten einer App darauf und zum Streamen eines Videos der gestarteten App auf ein anderes Gerät erhalten. Die Rolleninhaber-App kann auch von einem Remote-Gerät empfangene Eingabe- und Mikrofonereignisse zurück in das lokale Gerät einspeisen, als ob dieses Gerät als Peripheriegerät angeschlossen wäre.

Die Architektur

Ab Android 13 bilden der neue Virtual Device Manager und der Companion Device Manager (CDM) die wichtigsten Bausteine ​​zur Unterstützung des App-Streamings und der Interaktion mit entfernten, verbundenen Geräten.

Virtueller Gerätemanager

Beim App-Streaming werden virtuelle Displays genutzt. Der Virtual Device Manager erstellt eine virtuelle Anzeige, die von der sichtbaren primären Anzeige getrennt ist. Wenn der Benutzer dem Starten des Streamings einer App zustimmt, wird die App auf dem virtuellen Display gestartet oder dorthin übertragen. Der Inhalt der virtuellen Anzeige wird in einem Videostream zur Anzeige an das angeschlossene Gerät übertragen.

Der Virtual Device Manager umfasst APIs, die die Erstellung, Registrierung und Verwaltung von VirtualDevice Instanzen ermöglichen.

Eine VirtualDevice Instanz ist ein Proxy für das verbundene Gerät und seine Funktionen. Eine VirtualDevice Instanz ermöglicht es einem verbundenen Gerät, einen eingehenden App-Stream zu empfangen, anzuzeigen und mit ihm zu interagieren, indem es Folgendes tut:

  • Erstellen einer VirtualDisplay Instanz, die auf dem Display eines angeschlossenen Geräts angezeigt werden soll.
  • Einspeisen eines Remote-Audiostreams, beispielsweise vom Mikrofon des angeschlossenen Geräts, in das lokale Gerät zur Wiedergabe.
  • Einspeisen von Remote-Eingabeereignissen, z. B. von der Tastatur des angeschlossenen Geräts, zur Wiedergabe in das lokale Gerät.

Begleitender Geräte-Manager

Der CDM verwaltet den Konnektivitätsstatus und erzwingt die Rollenanforderungen, die erfüllt sein müssen, um App-Streaming zu ermöglichen.

Die folgende Abbildung veranschaulicht die Interaktionen zwischen dem lokalen und dem Remote-Gerät während des App-Streamings:

app-streaming-interaction

Abbildung 1. Interaktionen zwischen den lokalen und Remote-Geräten während des App-Streamings

Implementierung der Companion-App-Streaming-Rolle

OEMs können eine App mit der Rolle COMPANION_DEVICE_APP_STREAMING implementieren, um ein umfassendes und sicheres geräteübergreifendes Erlebnis auf ihren Geräten zu ermöglichen.

Um ein virtuelles Gerät zum Aktivieren des App-Streamings zu erstellen, muss eine App Rolleninhaber der Rolle COMPANION_DEVICE_APP_STREAMING sein. Wenn die Rolle gewährt wird, erhält die App die Berechtigung CREATE_VIRTUAL_DEVICE , die es der App ermöglicht, ein virtuelles Gerät zu erstellen. Von Rolleninhabern wird erwartet, dass sie App-Streaming implementieren, indem sie eine VirtualDevice Instanz erstellen, die als Proxy für ein verbundenes Gerät fungiert. Die VirtualDevice Klasse stellt Methoden bereit, die die Extraktion einer zusammengesetzten Oberfläche einer virtuellen Anzeige ermöglichen, die zum Streamen auf ein anderes Gerät geeignet ist. Die VirtualDevice Klasse stellt außerdem APIs zum Einfügen von Eingabeereignissen, die auf einem Remote-Gerät auftreten, in das lokale Gerät bereit, sodass eine App, die auf einem lokalen Gerät ausgeführt wird, so aussieht, als würde sie nativ auf einem Remote-Gerät ausgeführt.

Befolgen Sie diese Schritte, um die Begleit-App-Streaming-Rolle zu implementieren:

  1. Erstellen Sie eine App, die im Manifest die Berechtigung REQUEST_COMPANION_PROFILE_APP_STREAMING anfordert.

  2. Fordern Sie den Benutzer auf, der App die Berechtigung zum App-Streaming zu erteilen.

  3. Erstellen Sie eine CDM AssociationRequest Instanz, um eine COMPANION_DEVICE_APP_STREAMING -Rolle anzufordern. Die App erhält die CREATE_VIRTUAL_DEVICE Berechtigung, wenn die Rolle gewährt wird.

  4. Rufen Sie VirtualDeviceManager#create() auf, um eine VirtualDevice Instanz zu erstellen. Mit einer VirtualDevice Instanz kann die App virtuelle Anzeigen und virtuelle Eingaben erstellen und verwalten.

  5. Starten Sie die ausstehende Absicht der Benachrichtigung auf der virtuellen Anzeige und erstellen Sie eine Videoaufnahme dieser Anzeige.

  6. Stellen Sie eine Verbindung zum verbundenen Gerät her und streamen Sie die virtuelle Anzeige auf das verbundene Gerät.

  7. Geben Sie über die VirtualDevice APIs Eingabeereignisse vom angeschlossenen Gerät in das lokale Gerät zurück.

  8. Wenn der Benutzer die Streaming-App auf dem Remote-Gerät schließt, beenden Sie den Stream und fahren Sie die VirtualDevice Instanz herunter. Zu diesem Zeitpunkt läuft die zuvor gestreamte App im Hintergrund auf dem lokalen Gerät und die Verbindung wird geschlossen.

  9. Warten Sie bei Bedarf auf weitere Signale vom angeschlossenen Gerät, um das App-Streaming neu zu starten.

Die App ist dafür verantwortlich, eine Verbindung zum Remote-Gerät herzustellen, den Verbindungsstatus an CDM zu melden und die in der CDD beschriebenen Sicherheitsanforderungen durchzusetzen.

Anforderungen an den Rolleninhaber COMPANION_DEVICE_APP_STREAMING

Der CDM gewährt die COMPANION_DEVICE_APP_STREAMING Rolle, wenn der Benutzer einem Gerät eine App-Streaming-App zuordnet. Diese Rolle ist mit einem Geräteprofil verknüpft, sodass Sie eine gewisse Kontrolle darüber haben, welche Apps zum Play Store hinzugefügt werden können, die diesem Profil entsprechen. Eine Liste der Anforderungen für die Rolle COMPANION_DEVICE_APP_STREAMING finden Sie unter Android-Rollen . Für weitere Informationen wenden Sie sich an Ihren Google-Ansprechpartner.

Funktionen des Rolleninhabers COMPANION_DEVICE_APP_STREAMING

Um App-Streaming durchzuführen, geht die Rolle COMPANION_DEVICE_APP_STREAMING davon aus, dass die Rolleninhaber-App über die folgenden Fähigkeiten und Verhaltensweisen verfügt:

  • Erstellen und verwalten Sie Verbindungen zu anderen Geräten.
  • Erstellen und verwalten Sie vertrauenswürdige virtuelle Displays, einschließlich entsperrter Displays, wie folgt:
    • Starten Sie Aktivitäten auf dem virtuellen Display.
    • Fügen Sie Ereignisse, die in einer gestreamten App auf einem verbundenen Gerät stattfinden, wieder auf dem lokalen Gerät ein, z. B. das Abspielen eines Berührungsereignisses auf dem Tablet an denselben Koordinaten auf dem Telefon.
    • Erfassen Sie Audiodaten aus der gestreamten App.
    • Ersetzen Sie den Mikrofonstream des lokalen Geräts durch den Mikrofonstream eines verbundenen Geräts, während eine gestreamte App das Mikrofon verwendet.
    • Ersetzen Sie den Kamerastream des lokalen Geräts durch den Kamerastream eines verbundenen Geräts, während eine gestreamte App die Kamera verwendet.
  • Verwalten und streamen Sie Benachrichtigungen vom lokalen Gerät auf das verbundene Gerät und ergreifen Sie Maßnahmen für Benachrichtigungen.
  • Streamen Sie Metadaten vom lokalen Gerät, z. B. die Liste der auf dem lokalen Gerät verfügbaren Apps, auf das verbundene Gerät.
  • Fordern Sie eine Geräteverifizierung an.