W systemie Android 13 funkcja strumieniowego przesyłania aplikacji umożliwia telefonom przesyłanie strumieniowe aplikacji do podłączonych urządzeń i umożliwia tym urządzeniom interakcję z aplikacjami. Nowa rola COMPANION_DEVICE_APP_STREAMING
umożliwia aplikacji tworzenie serwerów proxy dla podłączonych urządzeń zdalnych i zarządzanie nimi w celu strumieniowego przesyłania aplikacji z urządzenia lokalnego na urządzenie zdalne. Aplikacja posiadająca rolę COMPANION_DEVICE_APP_STREAMING
może uzyskać uprawnienia do utworzenia wirtualnego wyświetlacza, uruchomienia na nim aplikacji, a następnie strumieniowego przesyłania wideo z uruchomionej aplikacji na inne urządzenie. Aplikacja pełniąca rolę może także wstrzykiwać zdarzenia wejściowe i mikrofonowe odebrane z urządzenia zdalnego z powrotem do urządzenia lokalnego, tak jakby to urządzenie było podłączone jako urządzenie peryferyjne.
Architektura
Począwszy od Androida 13, nowy Menedżer urządzeń wirtualnych i Menedżer urządzeń towarzyszących (CDM) stanowią kluczowe elementy obsługujące przesyłanie strumieniowe aplikacji i interakcję ze zdalnymi, podłączonymi urządzeniami.
Menedżer urządzeń wirtualnych
Przesyłanie strumieniowe aplikacji opiera się na wykorzystaniu wirtualnych wyświetlaczy . Menedżer urządzeń wirtualnych tworzy wirtualny wyświetlacz, który jest oddzielony od widocznego wyświetlacza głównego. Gdy użytkownik wyrazi zgodę na rozpoczęcie przesyłania strumieniowego aplikacji, aplikacja zostanie uruchomiona na wirtualnym wyświetlaczu lub przeniesiona na niego. Zawartość wirtualnego wyświetlacza jest przesyłana w strumieniu wideo do podłączonego urządzenia w celu wyświetlenia.
Menedżer urządzeń wirtualnych zawiera interfejsy API umożliwiające tworzenie, rejestrację i zarządzanie instancjami VirtualDevice
.
Instancja VirtualDevice
jest serwerem proxy dla podłączonego urządzenia i jego możliwości. Instancja VirtualDevice
umożliwia podłączonemu urządzeniu odbieranie, wyświetlanie i interakcję z przychodzącym strumieniem aplikacji, wykonując następujące czynności:
- Tworzenie instancji
VirtualDisplay
przeznaczonej do wyświetlania na wyświetlaczu podłączonego urządzenia. - Wstrzykiwanie zdalnego strumienia audio, na przykład z mikrofonu podłączonego urządzenia, do urządzenia lokalnego w celu odtwarzania.
- Wstrzykiwanie zdalnych zdarzeń wejściowych, takich jak klawiatura podłączonego urządzenia, do urządzenia lokalnego w celu odtwarzania.
Menedżer urządzeń towarzyszących
CDM zarządza stanem łączności i wymusza wymagania roli, które muszą zostać spełnione, aby umożliwić przesyłanie strumieniowe aplikacji.
Poniższy rysunek ilustruje interakcje między urządzeniem lokalnym i zdalnym podczas przesyłania strumieniowego aplikacji:
Rysunek 1. Interakcje między urządzeniami lokalnymi i zdalnymi podczas przesyłania strumieniowego aplikacji
Implementacja roli przesyłania strumieniowego aplikacji towarzyszącej
Producenci OEM mogą wdrożyć aplikację z rolą COMPANION_DEVICE_APP_STREAMING
, aby zapewnić na swoich urządzeniach bogate i bezpieczne środowisko pracy na różnych urządzeniach.
Aby utworzyć urządzenie wirtualne umożliwiające przesyłanie strumieniowe aplikacji, aplikacja musi być posiadaczem roli COMPANION_DEVICE_APP_STREAMING
. Po przyznaniu roli aplikacja otrzymuje uprawnienie CREATE_VIRTUAL_DEVICE
, które umożliwia aplikacji utworzenie urządzenia wirtualnego. Oczekuje się, że posiadacze ról zaimplementują przesyłanie strumieniowe aplikacji, tworząc instancję VirtualDevice
, która działa jako serwer proxy dla podłączonego urządzenia. Klasa VirtualDevice
udostępnia metody umożliwiające wyodrębnienie złożonej powierzchni wirtualnego wyświetlacza, nadającej się do przesyłania strumieniowego do innego urządzenia. Klasa VirtualDevice
udostępnia także interfejsy API służące do wstrzykiwania zdarzeń wejściowych występujących na urządzeniu zdalnym do urządzenia lokalnego, dzięki czemu aplikacja działająca na urządzeniu lokalnym wygląda tak, jakby działała natywnie na urządzeniu zdalnym.
Wykonaj poniższe kroki, aby zaimplementować rolę przesyłania strumieniowego aplikacji towarzyszącej:
Utwórz aplikację, która żąda uprawnienia
REQUEST_COMPANION_PROFILE_APP_STREAMING
w manifeście.Poproś użytkownika o udzielenie aplikacji pozwolenia na przesyłanie strumieniowe aplikacji.
Utwórz instancję CDM
AssociationRequest
, aby zażądać roliCOMPANION_DEVICE_APP_STREAMING
. Po przyznaniu roli aplikacja otrzymuje uprawnienieCREATE_VIRTUAL_DEVICE
.Wywołaj
VirtualDeviceManager#create()
aby utworzyć instancjęVirtualDevice
. Dzięki instancjiVirtualDevice
aplikacja może tworzyć wirtualne wyświetlacze i wirtualne wejścia oraz zarządzać nimi.Uruchom oczekującą intencję powiadomienia na wirtualnym wyświetlaczu i utwórz nagranie wideo tego wyświetlacza.
Utwórz połączenie z podłączonym urządzeniem i przesyłaj strumieniowo wirtualny wyświetlacz do podłączonego urządzenia.
Wstrzykuj zdarzenia wejściowe z podłączonego urządzenia do urządzenia lokalnego za pośrednictwem interfejsów API urządzenia
VirtualDevice
.Gdy użytkownik zamknie aplikację do przesyłania strumieniowego na urządzeniu zdalnym, zakończ strumień i usuń instancję
VirtualDevice
. W tym momencie wcześniej używana aplikacja do przesyłania strumieniowego działa w tle na urządzeniu lokalnym, a połączenie zostaje zamknięte.W razie potrzeby poczekaj na więcej sygnałów z podłączonego urządzenia, aby ponownie uruchomić przesyłanie strumieniowe aplikacji.
Aplikacja odpowiada za łączenie się ze zdalnym urządzeniem, raportowanie stanu połączenia do CDM i egzekwowanie wymagań bezpieczeństwa opisanych w CDD .
Wymagania posiadacza roli COMPANION_DEVICE_APP_STREAMING
CDM przyznaje rolę COMPANION_DEVICE_APP_STREAMING
, gdy użytkownik kojarzy aplikację do strumieniowego przesyłania aplikacji z urządzeniem. Ta rola jest powiązana z profilem urządzenia, więc istnieje pewna kontrola nad tym, które aplikacje pasujące do tego profilu można dodać do Sklepu Play. Zobacz Role systemu Android , aby zapoznać się z listą wymagań roli COMPANION_DEVICE_APP_STREAMING
. Aby uzyskać więcej informacji, skontaktuj się ze swoją osobą kontaktową w Google.
Możliwości posiadacza roli COMPANION_DEVICE_APP_STREAMING
Aby móc przesyłać strumieniowo aplikację, rola COMPANION_DEVICE_APP_STREAMING
zakłada, że aplikacja posiadacza roli ma następujące możliwości i zachowania:
- Twórz połączenia z innymi urządzeniami i zarządzaj nimi.
- Twórz i zarządzaj zaufanymi wirtualnymi wyświetlaczami, w tym odblokowanymi wyświetlaczami, w następujący sposób:
- Rozpocznij działania na wirtualnym wyświetlaczu.
- Wstrzykuj zdarzenia, które mają miejsce w aplikacji przesyłanej strumieniowo na podłączone urządzenie, z powrotem na urządzenie lokalne, na przykład odtwarzanie zdarzenia dotykowego na tablecie o tych samych współrzędnych na telefonie.
- Przechwytuj dane audio z aplikacji przesyłanej strumieniowo.
- Zastąp strumień mikrofonu urządzenia lokalnego strumieniem mikrofonu podłączonego urządzenia, gdy aplikacja przesyłana strumieniowo korzysta z mikrofonu.
- Zastąp strumień kamery urządzenia lokalnego strumieniem kamery podłączonego urządzenia, gdy aplikacja strumieniowa korzysta z kamery.
- Zarządzaj powiadomieniami i przesyłaj je strumieniowo z urządzenia lokalnego na podłączone urządzenie, a także podejmuj działania związane z powiadomieniami.
- Przesyłaj strumieniowo metadane z urządzenia lokalnego, takie jak lista aplikacji dostępnych na urządzeniu lokalnym, do podłączonego urządzenia.
- Poproś o weryfikację urządzenia.