W Androidzie 13 funkcja strumieniowego przesyłania danych z aplikacji umożliwia przesyłanie aplikacji z telefonów na połączone urządzenia i korzystanie z nich na tych urządzeniach. Nowa rola COMPANION_DEVICE_APP_STREAMING
umożliwia aplikacji tworzenie serwerów proxy dla połączonych urządzeń 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 utworzenia wirtualnego wyświetlacza, uruchomienia na nim aplikacji, a następnie przesyłania strumieniowego wideo 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 wirtualne urządzenie Menedżer i Menedżer urządzeń towarzyszących (CDM) stanowią kluczowe elementy umożliwiające przesyłanie strumieniowe aplikacji i interakcję ze zdalnymi, połączonymi urządzeniami.
Menedżer urządzeń wirtualnych
Strumieniowanie 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, zostanie ona uruchomiona na wyświetlaczu wirtualnym lub przeniesiona na niego. 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 strumienia aplikacji przez:
- Tworzenie instancji
VirtualDisplay
przeznaczonej do wyświetlania na ekranie połączonego urządzenia. - przesyłanie strumienia audio z urządzenia zdalnego, np. z mikrofonu podłączonego urządzenia, do urządzenia lokalnego w celu odtworzenia;
- Wstrzykiwanie zdalnych zdarzeń wejściowych, takich jak zdarzenia 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 wymagań dotyczących ról, które muszą być spełnione, aby włączyć strumieniowanie aplikacji.
Na poniższym rysunku przedstawiono interakcje między urządzeniem lokalnym a zdalnym podczas strumieniowania aplikacji:
Rysunek 1. Interakcje między urządzeniem lokalnym a zdalnym podczas przesyłania strumieniowego aplikacji
Implementacja roli strumieniowania 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
. Gdy rola zostanie przyznana, aplikacja otrzyma uprawnienie CREATE_VIRTUAL_DEVICE
, które umożliwia jej utworzenie urządzenia wirtualnego. Podmioty pełniące rolę powinny wdrożyć strumieniowanie 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ębnianie złożonej powierzchni wirtualnego wyświetlacza, 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ę przesyłania strumieniowego aplikacji towarzyszącej:
Utwórz aplikację, która w pliku manifestu prosi o uprawnienie
REQUEST_COMPANION_PROFILE_APP_STREAMING
.Poproś użytkownika o przyznanie aplikacji uprawnień do strumieniowego przesyłania aplikacji.
Utwórz instancję CDM
AssociationRequest
, aby poprosić o rolęCOMPANION_DEVICE_APP_STREAMING
. Aplikacja otrzymuje uprawnienieCREATE_VIRTUAL_DEVICE
po przyznaniu roli.Wywołaj
VirtualDeviceManager#create()
aby utworzyć instancjęVirtualDevice
. W przypadku instancjiVirtualDevice
aplikacja może tworzyć wirtualne wyświetlacze i wirtualne dane wejściowe oraz nimi zarządzać.Uruchom oczekujący zamiar powiadomienia na wyświetlaczu wirtualnym i utwórz nagranie wideo tego wyświetlacza.
Nawiąż 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 do urządzenia lokalnego za pomocą interfejsów
VirtualDevice
API.Gdy użytkownik zamknie aplikację do streamowania na urządzeniu zdalnym, zakończ transmisję i zamknij instancję
VirtualDevice
. W tym momencie aplikacja, która wcześniej przesyłała strumieniowo treści, działa w tle na urządzeniu lokalnym, a połączenie zostaje zamknięte.W razie potrzeby poczekaj na kolejne sygnały z połączonego urządzenia, aby ponownie uruchomić przesyłanie strumieniowe aplikacji.
Aplikacja jest odpowiedzialna za łączenie się z urządzeniem zdalnym, zgłaszanie stanu połączenia do CDM i egzekwowanie wymagań dotyczących bezpieczeństwa zgodnie z opisem w CDD.
Wymagania dotyczące posiadacza roli 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 pasujące do tego profilu można dodać do Sklepu Play. Listę wymagań dotyczących roli COMPANION_DEVICE_APP_STREAMING
znajdziesz w sekcji Role na Androidzie. Aby uzyskać więcej informacji, skontaktuj się z osobą kontaktową w Google.
Uprawnienia użytkownika z rolą COMPANION_DEVICE_APP_STREAMING
Aby przesyłać strumieniowo 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.
- Twórz zaufane wirtualne wyświetlacze, w tym odblokowane wyświetlacze, i zarządzaj nimi w ten sposób:
- Rozpocznij działania na wyświetlaczu wirtualnym.
- Wstrzykiwanie zdarzeń, które mają miejsce w aplikacji przesyłanej strumieniowo 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.
- przechwytywać dane audio z aplikacji przesyłanej strumieniowo;
- Zastąp strumień mikrofonu urządzenia lokalnego strumieniem mikrofonu połączonego urządzenia, gdy aplikacja przesyłana strumieniowo korzysta z mikrofonu.
- Zastąp strumień z kamery urządzenia lokalnego strumieniem z kamery połączonego urządzenia, gdy strumieniowana aplikacja korzysta z kamery.
- zarządzać powiadomieniami i przesyłać je strumieniowo z urządzenia lokalnego na połączone urządzenie oraz podejmować działania związane z powiadomieniami;
- przesyłać metadane strumienia z urządzenia lokalnego, np. listę aplikacji dostępnych na urządzeniu lokalnym, na połączone urządzenie;
- Poproś o weryfikację urządzenia.