W Androidzie 13 funkcja strumieniowego przesyłania aplikacji umożliwia przesyłanie strumieniowe aplikacji na połączone urządzenia i interakcję z nimi. Nowa rola COMPANION_DEVICE_APP_STREAMING
pozwala aplikacji tworzyć proxy dla połączonych urządzeń zdalnych i zarządzać nimi, aby przesyłać strumieniowo aplikacje z urządzenia lokalnego na urządzenie zdalne. Aplikacja z rolą COMPANION_DEVICE_APP_STREAMING
może uzyskać uprawnienia do tworzenia wirtualnego wyświetlacza, uruchamiania na nim aplikacji, a następnie przesyłania strumieniowo filmu z uruchomionej aplikacji na inne urządzenie. Aplikacja z przypisaną rolą może też wstrzykiwać zdarzenia związane z wejściem i mikrofonem otrzymywane z urządzenia zdalnego z powrotem do urządzenia lokalnego, tak jakby urządzenie było podłączone jako urządzenie peryferyjne.
Architektura
Począwszy od Androida 13 nowy menedżer urządzeń wirtualnych oraz menedżer urządzeń towarzyszących stanowią kluczowe elementy umożliwiające przesyłanie aplikacji i interakcje z odległymi, połączonymi urządzeniami.
Menedżer urządzeń wirtualnych
Strumieniowe przesyłanie aplikacji działa dzięki wirtualnym wyświetlaczom. 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 strumieniowego przesyłania aplikacji, aplikacja zostanie uruchomiona na wirtualnym wyświetlaczu lub przeniesiona na niego. Treści wirtualnego wyświetlacza są przesyłane w postaci strumienia wideo do podłączonego urządzenia, na którym są wyświetlane.
Menedżer urządzeń wirtualnych zawiera interfejsy API, które umożliwiają tworzenie, rejestrowanie i zarządzanie instancjami VirtualDevice
.
Instancja VirtualDevice
to serwer proxy połączonego urządzenia i jego funkcji. instancja VirtualDevice
umożliwia połączonemu urządzeniu odbieranie, wyświetlanie i interakcję z przychodzącym strumieniem aplikacji:
- Tworzę instancję
VirtualDisplay
do wyświetlania na wyświetlaczu połączonego urządzenia. - Wstrzykiwanie zdalnego strumienia audio, na przykład z mikrofonu podłączonego urządzenia, do urządzenia lokalnego w celu odtwarzania.
- wstrzykiwanie zdarzeń zdalnego wejścia, np. z klawiatury podłączonego urządzenia, do urządzenia lokalnego w celu odtwarzania;
Menedżer urządzeń towarzyszących
CDM zarządza stanem połączenia i egzekwuje wymagania dotyczące ról, które muszą zostać spełnione, aby umożliwić strumieniowe przesyłanie aplikacji.
Poniższy rysunek przedstawia interakcje między urządzeniem lokalnym i zdalnym podczas strumieniowego przesyłania aplikacji:
Rysunek 1. Interakcje między urządzeniami lokalnymi i zdalnymi podczas strumieniowego przesyłania aplikacji
Implementacja roli strumieniowego przesyłania aplikacji towarzyszącej
OEM może wdrożyć aplikację z przypisaną rolą COMPANION_DEVICE_APP_STREAMING
, aby zapewnić zaawansowane i bezpieczne działanie aplikacji na wielu urządzeniach.
Aby utworzyć urządzenie wirtualne, które umożliwi strumieniowe przesyłanie aplikacji, aplikacja musi mieć rolę COMPANION_DEVICE_APP_STREAMING
. Gdy rola zostanie przyznana, aplikacja otrzyma uprawnienie CREATE_VIRTUAL_DEVICE
, które umożliwi jej utworzenie urządzenia wirtualnego. Użytkownicy ról powinni wdrażać strumieniowanie aplikacji, tworząc instancję VirtualDevice
, która działa jako serwer proxy dla połączonego urządzenia. Klasa VirtualDevice
udostępnia metody umożliwiające wyodrębnienie złożonej powierzchni wirtualnego wyświetlacza, która nadaje się do przesyłania strumieniowego na inne urządzenie. Klasa VirtualDevice
udostępnia też interfejsy API do wstrzykiwania zdarzeń wejściowych, które występują na urządzeniu zdalnym, na urządzenie lokalne, co umożliwia aplikacji działającej na urządzeniu lokalnym wyświetlanie się tak, jakby była uruchomiona natywnie na urządzeniu zdalnym.
Aby wdrożyć rolę przesyłania strumieniowego w aplikacji towarzyszącej:
Utwórz aplikację, która żąda uprawnienia
REQUEST_COMPANION_PROFILE_APP_STREAMING
w pliku manifestu.poprosić użytkownika o przyznanie aplikacji uprawnień do strumieniowego przesyłania aplikacji.
Utwórz instancję CDM
AssociationRequest
aby poprosić o rolęCOMPANION_DEVICE_APP_STREAMING
. Gdy rola zostanie przyznana, aplikacja otrzyma uprawnienieCREATE_VIRTUAL_DEVICE
.Aby utworzyć instancję
VirtualDevice
, wywołaj funkcjęVirtualDeviceManager#create()
. Dzięki instancjiVirtualDevice
aplikacja może tworzyć wirtualne wyświetlacze i wirtualne dane wejściowe oraz nimi zarządzać.Uruchom oczekujący na ekranie wirtualnym zamiar powiadomienia i zrób zrzut ekranu.
Utwórz połączenie z podłączonym urządzeniem i transmituj na nie wyświetlacz wirtualny.
Wstrzyknij zdarzenia wejściowe z połączonego urządzenia do urządzenia lokalnego za pomocą interfejsów API
VirtualDevice
.Gdy użytkownik zamknie aplikację do strumieniowego przesyłania danych na urządzeniu zdalnym, zakończ przesyłanie i zniszcz instancję
VirtualDevice
. W tym momencie wcześniej uruchomiona aplikacja do strumieniowego przesyłania danych działa w tle na urządzeniu lokalnym, a połączenie jest zamknięte.W razie potrzeby odczekaj, aż na połączonym urządzeniu pojawią się kolejne sygnały, aby ponownie uruchomić aplikację do przesyłania strumieniowego.
Aplikacja odpowiada za nawiązywanie połączenia z urządzeniem zdalnym, zgłaszanie stanu połączeń do CDM oraz egzekwowanie wymagań dotyczących zabezpieczeń zgodnie z CDD.
Wymagania dotyczące roli COMPANION_DEVICE_APP_STREAMING
Menedżer urządzeń towarzyszących przyznaje rolę COMPANION_DEVICE_APP_STREAMING
, gdy użytkownik powiąże aplikację do strumieniowego przesyłania aplikacji z urządzeniem. Ta rola jest powiązana z profilem urządzenia, więc można w pewnym stopniu kontrolować, które aplikacje pasujące do tego profilu mogą zostać dodane do Sklepu Play. Aby poznać wymagania dotyczące roli COMPANION_DEVICE_APP_STREAMING
, zapoznaj się z artykułem Rola na Androidzie. Aby uzyskać więcej informacji, skontaktuj się z osobą kontaktową z Google.
Uprawnienia związane z rolą COMPANION_DEVICE_APP_STREAMING
Aby móc przesyłać aplikacje, rola COMPANION_DEVICE_APP_STREAMING
zakłada, że aplikacja posiadacza roli ma te możliwości i zachowania:
- Tworzenie połączeń z innymi urządzeniami i zarządzanie nimi.
- Aby utworzyć zaufane wirtualne wyświetlacze, w tym odblokowane wyświetlacze, i nimi zarządzać:
- Uruchamiaj działania na ekranie wirtualnym.
- Wstrzyknij zdarzenia, które wystąpiły w aplikacji przesyłanej strumieniowo na połączonym urządzeniu, z powrotem na urządzenie lokalne, np. odtworzenie zdarzenia dotknięcia na tablecie o tych samych współrzędnych na telefonie.
- Przechwyć dane audio z aplikacji strumieniowej.
- Zastąpić strumień mikrofonu na urządzeniu lokalnym strumieniem mikrofonu na urządzeniu połączonym, gdy aplikacja strumieniowa korzysta z mikrofonu.
- Zastąp strumień z kamery urządzenia lokalnego strumieniem z kamery urządzenia połączonego z telefonem, gdy aplikacja strumieniowa używa kamery.
- Zarządzaj powiadomieniami i przesyłaj je strumieniowo z urządzenia lokalnego na połączone urządzenie oraz podejmuj działania dotyczące powiadomień.
- Przesyłać na połączone urządzenie metadane z urządzenia lokalnego, np. listę aplikacji dostępnych na urządzeniu lokalnym.
- Poproś o weryfikację urządzenia.