Mit der App-Streaming-Funktion in Android 13 können Smartphones 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 des Rolleninhabers kann auch Eingabe- und Mikrofonereignisse, die von einem Remote-Gerät empfangen wurden, wieder in das lokale Gerät einfügen, 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 die Unterstützung von App-Streaming und der Interaktion mit verbundenen Remote-Geräten.
Virtual Device Manager
App-Streaming nutzt virtuelle Displays. Der Virtual Device Manager erstellt ein virtuelles Display, das vom sichtbaren primären Display getrennt ist. Wenn der Nutzer zustimmt, eine App zu streamen, 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, auf dem lokalen Gerät zur Wiedergabe.
Begleitgerät-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 veranschaulicht die Interaktionen zwischen dem lokalen und dem Remote-Gerät beim App-Streaming:
Abbildung 1: Interaktionen zwischen dem lokalen und dem Remote-Gerät beim App-Streaming
Implementierung der 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 ein virtuelles Gerät zum Aktivieren des App-Streamings erstellt werden kann, muss eine App Inhaber der Rolle COMPANION_DEVICE_APP_STREAMING
sein. 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 Streaming-Rolle für Companion-Apps:
Erstellen Sie eine App, die im Manifest die Berechtigung
REQUEST_COMPANION_PROFILE_APP_STREAMING
anfordert.Fordern Sie den Nutzer auf, der App die Berechtigung zum Ausführen von App-Streaming zu erteilen.
Erstellen Sie eine CDM-
AssociationRequest
-Instanz, um eineCOMPANION_DEVICE_APP_STREAMING
-Rolle anzufordern. Die App erhält die BerechtigungCREATE_VIRTUAL_DEVICE
, wenn die Rolle zugewiesen wird.Rufen Sie
VirtualDeviceManager#create()
auf, um eineVirtualDevice
-Instanz zu erstellen. Mit einerVirtualDevice
-Instanz kann die App virtuelle Displays und virtuelle Eingaben erstellen und verwalten.Starten Sie den ausstehenden Intent der Benachrichtigung auf dem virtuellen Display und erstellen Sie eine Videoaufnahme dieses Displays.
Stelle eine Verbindung zum verbundenen Gerät her und streame das virtuelle Display auf das verbundene Gerät.
Eingabeereignisse vom verbundenen Gerät über die
VirtualDevice
-APIs wieder in das lokale Gerät einfügen.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.Warte bei Bedarf auf weitere Signale vom verbundenen Gerät, um das App-Streaming neu zu starten.
Die App ist für die Verbindung zum Remote-Gerät, die Meldung des Verbindungsstatus an den CDM und die Durchsetzung der Sicherheitsanforderungen gemäß CDD verantwortlich.
Anforderungen an Inhaber der Rolle „COMPANION_DEVICE_APP_STREAMING“
Der 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. Daher kann festgelegt werden, 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 Ihrer zuständigen Kontaktperson bei Google.
Funktionen für Inhaber der Rolle COMPANION_DEVICE_APP_STREAMING
Für das App-Streaming wird davon ausgegangen, dass die App mit der Rolle COMPANION_DEVICE_APP_STREAMING
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 stattfinden, werden auf das lokale Gerät übertragen. So wird beispielsweise ein Touch-Ereignis auf dem Tablet an denselben Koordinaten 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.
- 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 sowie Aktionen für Benachrichtigungen ausführen.
- Metadaten vom lokalen Gerät streamen, z. B. die Liste der auf dem lokalen Gerät verfügbaren Apps, zum verbundenen Gerät.
- Geräteüberprüfung anfordern