W Androidzie 13 funkcja strumieniowego przesyłania aplikacji umożliwia telefonom przesyłanie aplikacji na połączone urządzenia i pozwala tym urządzeniom na interakcję z aplikacjami. Nowa rola COMPANION_DEVICE_APP_STREAMING umożliwia aplikacji tworzenie serwerów proxy na połączonych urządzeniach zdalnych i zarządzanie 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 wyświetlacza wirtualnego, uruchamiania na nim aplikacji, a następnie przesyłania strumieniowego filmu z uruchomionej aplikacji na inne urządzenie. Aplikacja pełniąca rolę może też wstrzykiwać zdarzenia wejścia i mikrofonu
otrzymane z urządzenia zdalnego z powrotem do urządzenia lokalnego, tak jakby to urządzenie było
podłączone jako urządzenie peryferyjne.
Architektura
Od Androida 13 nowe Menedżer urządzeń wirtualnych i Menedżer urządzeń towarzyszących (CDM) stanowią kluczowe elementy składowe umożliwiające strumieniowe przesyłanie aplikacji i interakcje ze zdalnymi, połączonymi urządzeniami.
Menedżer urządzeń wirtualnych
Strumieniowe przesyłanie aplikacji wykorzystuje wirtualne wyświetlacze. 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 wyświetlaczu wirtualnym lub na niego przeniesiona. Zawartość wirtualnego wyświetlacza jest przesyłana w strumieniu wideo do podłączonego urządzenia, na którym jest wyświetlana.
Menedżer urządzeń wirtualnych zawiera interfejsy API, które umożliwiają tworzenie, rejestrowanie i zarządzanie instancjami VirtualDevice.
Instancja VirtualDevice jest serwerem proxy połączonego urządzenia i jego możliwości. Instancja VirtualDevice umożliwia połączonemu urządzeniu odbieranie, wyświetlanie i obsługiwanie przychodzącego strumieniowego przesyłania aplikacji w ten sposób:
- Tworzenie instancji
VirtualDisplayprzeznaczonej do wyświetlania na ekranie połączonego urządzenia. - Wstrzykiwanie zdalnego strumienia audio, np. z mikrofonu połączonego urządzenia, do urządzenia lokalnego w celu odtwarzania.
- Wstrzykiwanie zdarzeń wejściowych z urządzenia zdalnego, np. z klawiatury połączonego urządzenia, do urządzenia lokalnego w celu odtworzenia.
Menedżer urządzeń towarzyszących
CDM zarządza stanem połączenia i wymusza wymagania dotyczące ról, które muszą być spełnione, aby włączyć strumieniowe przesyłanie aplikacji.
Na poniższym rysunku przedstawiono interakcje między urządzeniem lokalnym a urządzeniem zdalnym podczas strumieniowego przesyłania aplikacji:
Rysunek 1. Interakcje między urządzeniem lokalnym a urządzeniem zdalnym podczas strumieniowego przesyłania aplikacji
Wdrażanie roli strumieniowego przesyłania aplikacji towarzyszącej
Producenci OEM mogą wdrożyć aplikację z rolą COMPANION_DEVICE_APP_STREAMING, aby zapewnić na swoich urządzeniach bogate i bezpieczne funkcje obsługi na innym urządzeniu.
Aby utworzyć urządzenie wirtualne umożliwiające strumieniowe przesyłanie aplikacji, aplikacja musi mieć rolę COMPANION_DEVICE_APP_STREAMING. Po przyznaniu roli aplikacja otrzymuje uprawnienie CREATE_VIRTUAL_DEVICE, które umożliwia jej utworzenie urządzenia wirtualnego. Podmioty posiadające role powinny wdrożyć strumieniowe przesyłanie aplikacji, tworząc instancję VirtualDevice, która działa jako serwer proxy dla połączonego urządzenia. Klasa VirtualDevice udostępnia metody, które umożliwiają wyodrębnienie złożonej powierzchni wyświetlacza wirtualnego, odpowiedniej 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, do urządzenia lokalnego. Dzięki temu aplikacja działająca na urządzeniu lokalnym może wyglądać tak, jakby działała natywnie na urządzeniu zdalnym.
Aby wdrożyć rolę strumieniowego przesyłania aplikacji towarzyszącej, wykonaj te czynności:
Utwórz aplikację, która w pliku manifestu prosi o uprawnienie
REQUEST_COMPANION_PROFILE_APP_STREAMING.Poproś użytkownika o przyznanie aplikacji uprawnień aplikacji do strumieniowego przesyłania aplikacji.
Utwórz instancję CDM
AssociationRequest, aby poprosić o rolęCOMPANION_DEVICE_APP_STREAMING. Aplikacja otrzymuje uprawnienieCREATE_VIRTUAL_DEVICEpo przyznaniu roli.Wywołaj
VirtualDeviceManager#create(), aby utworzyć instancjęVirtualDevice. W przypadku instancjiVirtualDeviceaplikacja może tworzyć wirtualne wyświetlacze i wirtualne dane wejściowe oraz nimi zarządzać.Uruchom intencję oczekującą powiadomienia na wyświetlaczu wirtualnym i utwórz nagranie wideo tego wyświetlacza.
Utwórz połączenie z podłączonym urządzeniem i przesyłaj strumieniowo wirtualny wyświetlacz na to urządzenie.
Wstrzykiwanie zdarzeń wejściowych z połączonego urządzenia z powrotem do urządzenia lokalnego za pomocą interfejsów
VirtualDeviceAPI.Gdy użytkownik zamknie aplikację do odtwarzania strumieniowego na urządzeniu zdalnym, zakończ transmisję i zamknij instancję
VirtualDevice. W tym momencie aplikacja do odtwarzania 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 połączonego urządzenia, aby ponownie uruchomić strumieniowanie aplikacji.
Aplikacja odpowiada za połączenie z urządzeniem zdalnym, zgłaszanie stanu połączenia do CDM i egzekwowanie wymagań dotyczących bezpieczeństwa opisanych w CDD.
Wymagania dotyczące osoby z rolą COMPANION_DEVICE_APP_STREAMING
Menedżer urządzeń towarzyszących przyznaje rolę COMPANION_DEVICE_APP_STREAMING, gdy użytkownik powiąże aplikację do strumieniowania z urządzeniem. Ta rola jest powiązana z profilem urządzenia, więc masz pewną kontrolę nad tym, które aplikacje można dodać do Sklepu Play, aby pasowały do tego profilu. Listę wymagań dotyczących roli COMPANION_DEVICE_APP_STREAMING znajdziesz w sekcji Role Androida. Aby uzyskać więcej informacji, skontaktuj się z osobą kontaktową w Google.
Uprawnienia roli COMPANION_DEVICE_APP_STREAMING
Aby strumieniowo przesyłać aplikacje, 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 nimi zarządzać;
- Twórz zaufane wyświetlacze wirtualne, w tym odblokowane wyświetlacze, i zarządzaj nimi w ten sposób:
- Uruchamiaj aktywności na wyświetlaczu wirtualnym.
- Wstrzykiwanie zdarzeń, które mają miejsce w aplikacji do odtwarzania strumieniowego na połączonym urządzeniu, z powrotem na urządzenie lokalne, np. odtwarzanie zdarzenia dotknięcia na tablecie w tych samych współrzędnych na telefonie.
- Przechwytywanie danych audio z aplikacji do odtwarzania strumieniowego.
- Zastąp strumień mikrofonu urządzenia lokalnego strumieniem mikrofonu połączonego urządzenia, gdy aplikacja do odtwarzania strumieniowego używa mikrofonu.
- Zastąp strumień z kamery urządzenia lokalnego strumieniem z kamery połączonego urządzenia, gdy aplikacja do odtwarzania strumieniowego korzysta z kamery.
- zarządzać powiadomieniami z urządzenia lokalnego i przesyłać je strumieniowo na połączone urządzenie oraz podejmować działania w związku z powiadomieniami;
- Przesyłanie strumieniowe metadanych z urządzenia lokalnego, takich jak lista aplikacji dostępnych na urządzeniu lokalnym, na połączone urządzenie.
- Poproś o weryfikację urządzenia.