Streaming von Companion-Apps

In Android 13 können Smartphones mit der App-Streaming-Funktion ihre Apps auf verbundene Geräte streamen und diese Geräte können mit den Apps interagieren. 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 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 mit der Rolle kann auch Eingabe- und Mikrofonereignisse, die von einem Remote-Gerät empfangen wurden, wieder in das lokale Gerät einspeisen, so als wäre dieses Gerät als Peripheriegerät verbunden.

Architektur

Ab Android 13 bilden der neue Virtual Device Manager und der Companion Device Manager (CDM) die wichtigsten Bausteine für das App-Streaming und die Interaktion mit verbundenen Remote-Geräten.

Gerätemanager für virtuelle Geräte

Beim App-Streaming werden virtuelle Displays verwendet. Der Gerätemanager erstellt ein virtuelles Display, das vom sichtbaren primären Display getrennt ist. Wenn der Nutzer der Übertragung einer App zustimmt, wird die App auf dem virtuellen Display gestartet oder dorthin übertragen. Die Inhalte des virtuellen Displays werden in einem Videostream an das verbundene Gerät übertragen und dort angezeigt.

Der Virtual Device Manager umfasst 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. Eine VirtualDevice-Instanz ermöglicht es einem verbundenen Gerät, einen eingehenden App-Stream zu empfangen, anzuzeigen und mit ihm zu interagieren. Dazu wird Folgendes ausgeführt:

  • 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.
  • Einfügen von Remote-Eingabeereignissen, z. B. von der Tastatur des verbundenen Geräts, in das lokale Gerät zur Wiedergabe.

Companion Device Manager

Das CDM verwaltet den Verbindungsstatus und setzt die Rollenanforderungen durch, die erfüllt sein müssen, um das App-Streaming zu aktivieren.

Die folgende Abbildung zeigt die Interaktionen zwischen dem lokalen und dem Remote-Gerät beim App-Streaming:

app-streaming-interaction

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

Implementierung der App-Streaming-Rolle für Companion-Apps

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

Damit eine App ein virtuelles Gerät erstellen kann, um App-Streaming zu ermöglichen, muss sie 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 App-Streaming implementieren, indem sie eine VirtualDevice-Instanz erstellen, die als Proxy für ein verbundenes Gerät fungiert. Die Klasse VirtualDevice bietet Methoden, mit denen eine zusammengesetzte Oberfläche eines virtuellen Displays extrahiert werden kann, die sich für das Streaming auf ein anderes Gerät eignet. Die Klasse VirtualDevice bietet auch APIs zum Einfügen von Eingabeereignissen, die auf einem Remote-Gerät auftreten, auf dem lokalen Gerät. So kann eine App, die auf einem lokalen Gerät ausgeführt wird, so aussehen, als würde sie nativ auf einem Remote-Gerät ausgeführt.

So implementierst du die App-Streaming-Rolle für Companion-Apps:

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

  2. Fordern Sie den Nutzer auf, der App die Berechtigung zum Ausführen von App-Streaming zu erteilen.

  3. Erstellen Sie 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. Starte den ausstehenden Intent der Benachrichtigung auf dem virtuellen Display und erstelle eine Videoaufnahme dieses Displays.

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

  7. Eingabeereignisse vom verbundenen Gerät über die VirtualDevice APIs zurück in das lokale Gerät einfügen.

  8. Wenn der Nutzer die Streaming-App auf dem Remote-Gerät schließt, beende den Stream und beende die VirtualDevice-Instanz. Die zuvor gestreamte App wird jetzt 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 App-Streaming neu zu starten.

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

Anforderungen an Inhaber der Rolle COMPANION_DEVICE_APP_STREAMING

Der CDM gewährt die Rolle COMPANION_DEVICE_APP_STREAMING, wenn der Nutzer eine App zum Streamen von Apps mit einem Gerät verknüpft. Diese Rolle ist mit einem Geräteprofil verknüpft, sodass Sie eine gewisse Kontrolle darüber haben, welche Apps dem Google 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.

Funktionen des Inhabers der Rolle COMPANION_DEVICE_APP_STREAMING

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

  • 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 dem lokalen Gerät wiedergegeben. Beispielsweise wird ein Touch-Ereignis auf dem Tablet mit denselben Koordinaten auf dem Smartphone wiedergegeben.
    • Audiodaten aus der gestreamten App erfassen
    • Den Mikrofonstream des lokalen Geräts durch den Mikrofonstream eines verbundenen Geräts ersetzen, während eine gestreamte App das Mikrofon verwendet.
    • Den Kamerastream des lokalen Geräts durch den Kamerastream eines verbundenen Geräts ersetzen, während eine gestreamte App die Kamera verwendet.
  • Benachrichtigungen vom lokalen Gerät auf das verbundene Gerät verwalten und streamen und auf Benachrichtigungen reagieren.
  • Metadaten vom lokalen Gerät streamen, z. B. die Liste der auf dem lokalen Gerät verfügbaren Apps, zum verbundenen Gerät.
  • Gerätebestätigung anfordern.