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 utworzenia wirtualnego wyświetlacza, uruchomienia na nim aplikacji, a następnie przesyłania strumieniowo filmu z uruchomionej aplikacji na inne urządzenie. Aplikacja z rolą może też wstrzykiwać zdarzenia wejścia i mikrofonu otrzymane z urządzenia zdalnego z powrotem na urządzenie lokalne, 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 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 strumieniu 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
.
VirtualDevice
to instancja serwera proxy dla połączonego urządzenia i jego możliwości. instancja VirtualDevice
umożliwia połączonemu urządzeniu odbieranie, wyświetlanie i interakcję z przychodzącym strumieniem aplikacji:
- Tworzenie instancji
VirtualDisplay
, która ma być wyświetlana na ekranie połączonego urządzenia. - Wstrzyknięcie strumienia dźwięku z dalszego urządzenia (np. z mikrofonu podłączonego urządzenia) na urządzenie lokalne w celu odtworzenia.
- Wstrzykiwanie zdarzeń zdalnego wejścia, takich jak klawiatura na podłączonym urządzeniu, na urządzenie lokalne w celu odtworzenia.
Menedżer urządzeń towarzyszących
CDM zarządza stanem łączności i egzekwuje wymagania dotyczące ról, które muszą zostać spełnione, aby umożliwić strumieniowe przesyłanie aplikacji.
Na rysunku poniżej pokazano interakcje między urządzeniem lokalnym a urządzeniem zdalnym podczas strumieniowego przesyłania aplikacji:
Rysunek 1. Interakcje między urządzeniami lokalnymi i zdalnymi podczas przesyłania strumieniowego aplikacji
Implementacja roli aplikacji towarzyszącej do strumieniowego przesyłania danych
Producenci OEM mogą zaimplementować aplikację z rolą COMPANION_DEVICE_APP_STREAMING
, aby umożliwić użytkownikom korzystanie z bogatych i bezpiecznych funkcji na różnych 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 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 w pliku manifestu prosi o uprawnienie
REQUEST_COMPANION_PROFILE_APP_STREAMING
.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 przyznasz rolę, 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 połączonym urządzeniem i przesyłaj strumieniowo wirtualny wyświetlacz na to urządzenie.
Przekazywanie zdarzeń wejściowych z połączonego urządzenia do urządzenia lokalnego za pomocą interfejsów API
VirtualDevice
.Gdy użytkownik zamknie aplikację strumieniowego przesyłania danych na urządzeniu zdalnym, zakończ strumień i zamknij 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 zaczekaj na więcej sygnałów z połączonego urządzenia, 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 administratora aplikacji na Androidzie. Aby uzyskać więcej informacji, skontaktuj się z osobą kontaktową z Google.
Uprawnienia związane z rolą COMPANION_DEVICE_APP_STREAMING
Aby umożliwić strumieniowe przesyłanie aplikacji, rola COMPANION_DEVICE_APP_STREAMING
zakłada, że aplikacja posiadacza roli ma te możliwości i zachowania:
- tworzyć połączenia z innymi urządzeniami i zarządzać nimi.
- Utwórz zaufane wirtualne wyświetlacze, w tym odblokowane wyświetlacze, i zarządzaj nimi w ten sposób:
- Rozpocznij działania na wirtualnym ekranie.
- Wstrzykiwanie zdarzeń, które występują w przekazywanej aplikacji na połączonym urządzeniu, z powrotem na urządzenie lokalne, np. odtwarzanie zdarzenia dotykowego na tablecie w 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ąpić strumień kamery urządzenia lokalnego strumieniem kamery urządzenia połączonego, gdy aplikacja przesyłana strumieniowo używa kamery.
- Zarządzaj powiadomieniami i odtwarzaj je na urządzeniu lokalnym na połączonym urządzeniu oraz podejmuj działania dotyczące powiadomień.
- przesyłać metadane z urządzenia lokalnego (np. listę aplikacji dostępnych na tym urządzeniu) na urządzenie połączone;
- Poproś o weryfikację urządzenia.