W Androidzie 13 funkcja przesyłania aplikacji umożliwia przesyłanie aplikacji z telefonów 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 o roli 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 rolą może też wstrzyknąć 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 interakcję 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
.
VirtualDevice
to instancja serwera proxy dla 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:
- Tworzenie instancji
VirtualDisplay
, która ma być wyświetlana na ekranie połączonego urządzenia. - Wstrzykiwanie 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 odtwarzania.
Menedżer urządzeń towarzyszących
CDM zarządza stanem łączności i wymaga spełnienia wymagań dotyczących ról, które muszą zostać spełnione, aby umożliwić strumieniowe przesyłanie aplikacji.
Rysunek poniżej przedstawia interakcje między urządzeniem lokalnym a zdalnym podczas strumieniowego przesyłania aplikacji:
Rysunek 1. Interakcje między urządzeniami lokalnymi i zdalnymi podczas przesyłania strumieniowego aplikacji
Implementacja roli strumieniowego przesyłania aplikacji towarzyszącej
Producenci OEM mogą zaimplementować aplikację z rolą COMPANION_DEVICE_APP_STREAMING
, aby umożliwić płynne i bezpieczne korzystanie z urządzeń.
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 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 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 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ę strumieniową 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ć przesyłanie strumieniowe.
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 można dodawać 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 właściciela 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 wyświetlaczu.
- 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.
- Przechwytywanie danych 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 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.