Companion-App-Streaming

Mit der App-Streamingfunktion von Android 13 können Smartphones ihre Apps auf verbundene Geräte streamen und diese Geräte können mit den Apps interagieren. Mit einer neuen Rolle COMPANION_DEVICE_APP_STREAMING können Apps Proxys für verbundene Remote-Geräte erstellen und verwalten, um Apps vom lokalen Gerät auf das Remote-Gerät zu streamen. Die App mit der Rolle COMPANION_DEVICE_APP_STREAMING kann Berechtigungen zum Erstellen eines virtuellen Displays, zum Starten einer App darauf und zum Streamen eines Videos der gestarteten App auf ein anderes Gerät erhalten. Die App des Rolleninhabers kann auch Eingabe- und Mikrofonereignisse, die von einem Remotegerät empfangen wurden, wieder in das lokale Gerät einschleusen, als wäre dieses Gerät als Peripheriegerät verbunden.

Architektur

Ab Android 13 sind der neue Virtual Device Manager und der Companion Device Manager (CDM) die wichtigsten Bausteine für die Unterstützung von App-Streaming und Interaktionen mit entfernten, verbundenen Geräten.

Virtueller Gerätemanager

Beim App-Streaming werden virtuelle Displays verwendet. Der Virtual Device Manager erstellt einen virtuellen Bildschirm, der vom sichtbaren primären Bildschirm getrennt ist. Wenn der Nutzer zustimmt, eine App zu streamen, wird die App auf dem virtuellen Display gestartet oder dorthin übertragen. Der Inhalt des virtuellen Displays wird in einem Videostream an das verbundene Gerät übertragen, um dort angezeigt zu werden.

Der Virtual Device Manager enthält APIs, mit denen VirtualDevice-Instanzen erstellt, registriert und verwaltet werden können.

Eine VirtualDevice-Instanz ist ein Proxy für das verbundene Gerät und seine Funktionen. Mit einer VirtualDevice-Instanz kann ein verbundenes Gerät einen eingehenden App-Stream empfangen, anzeigen und damit interagieren. Gehen Sie dazu so vor:

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

Begleitgerät-Manager

Das CDM verwaltet den Verbindungsstatus und erzwingt die Rollenanforderungen, die erfüllt sein müssen, um das Anwendungs-Streaming zu ermöglichen.

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

App-Streaming-Interaktion

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

Implementierung der Rolle für das Streaming von Companion-Apps

OEMs können eine App mit der Rolle COMPANION_DEVICE_APP_STREAMING implementieren, um eine umfassende und sichere geräteübergreifende Nutzung auf ihren Geräten zu ermöglichen.

Wenn Sie ein virtuelles Gerät zum Aktivieren des App-Streamings erstellen möchten, muss eine App die Rolle COMPANION_DEVICE_APP_STREAMING haben. Wenn die Rolle gewährt wird, erhält die App die Berechtigung CREATE_VIRTUAL_DEVICE, mit der sie ein virtuelles Gerät erstellen kann. Rolleninhaber müssen das App-Streaming implementieren, indem sie eine VirtualDevice-Instanz erstellen, die als Proxy für ein verbundenes Gerät dient. Die Klasse VirtualDevice bietet Methoden, mit denen eine zusammengesetzte Oberfläche einer virtuellen Anzeige extrahiert werden kann, die sich für das Streaming auf ein anderes Gerät eignet. Die VirtualDevice-Klasse bietet auch APIs zum Einschleusen von Eingabeereignissen, die auf einem Remotegerät auftreten, auf das lokale Gerät. So kann eine App, die auf einem lokalen Gerät ausgeführt wird, so aussehen, als würde sie nativ auf einem Remotegerät ausgeführt.

So implementierst du die Streamingrolle für die Companion App:

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

  2. Bitten Sie den Nutzer, der App die Berechtigung zum App-Streaming zu erteilen.

  3. Erstelle eine CDM-AssociationRequest-Instanz, um eine COMPANION_DEVICE_APP_STREAMING-Rolle anzufordern. Die App erhält die Berechtigung CREATE_VIRTUAL_DEVICE, 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 Displays und virtuelle Eingaben erstellen und verwalten.

  5. Starten Sie die ausstehende Absicht der Benachrichtigung auf dem virtuellen Display und erstellen Sie eine Videoaufnahme dieses Displays.

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

  7. Eingabeereignisse über die VirtualDevice APIs vom verbundenen Gerät auf das lokale Gerät zurückgeben

  8. Wenn der Nutzer die Streaming-App auf dem Remote-Gerät schließt, beenden Sie den Stream und löschen Sie die VirtualDevice-Instanz. Zu diesem Zeitpunkt wird die zuvor gestreamte App im Hintergrund auf dem lokalen Gerät ausgeführt und die Verbindung wird geschlossen.

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

Die App ist für die Verbindung zum Remotegerät, die Meldung des Verbindungsstatus an den CDM und die Durchsetzung der Sicherheitsanforderungen gemäß der CDD verantwortlich.

Anforderungen für Inhaber der Rolle „COMPANION_DEVICE_APP_STREAMING“

Das CDM gewährt die Rolle COMPANION_DEVICE_APP_STREAMING, wenn der Nutzer eine App-Streaming-App mit einem Gerät verknüpft. Diese Rolle ist mit einem Geräteprofil verknüpft. So können Sie besser steuern, welche Apps dem 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. Weitere Informationen erhalten Sie von Ihrem Google-Ansprechpartner.

Berechtigungen für Rolleninhaber COMPANION_DEVICE_APP_STREAMING

Für das App-Streaming mit der Rolle COMPANION_DEVICE_APP_STREAMING wird davon ausgegangen, dass die App des Rolleninhabers die folgenden Funktionen und Verhaltensweisen hat:

  • Verbindungen zu anderen Geräten herstellen und verwalten
  • So erstellen und verwalten Sie vertrauenswürdige virtuelle Displays, einschließlich entsperrter Displays:
    • Aktivitäten auf dem virtuellen Display starten
    • Ereignisse, die in einer gestreamten App auf einem verbundenen Gerät auftreten, werden auf das lokale Gerät zurückgegeben. Beispiel: Ein Touch-Ereignis wird auf dem Tablet an denselben Koordinaten wie auf dem Smartphone wiedergegeben.
    • Audiodaten aus der gestreamten App erfassen
    • Ersetzt 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.
  • Benachrichtigungen vom lokalen Gerät auf das verbundene Gerät streamen und Aktionen auf Benachrichtigungen ausführen.
  • Metadaten vom lokalen Gerät streamen, z. B. die Liste der auf dem lokalen Gerät verfügbaren Apps, auf das verbundene Gerät
  • Geräteüberprüfung anfordern