Strumieniowe przesyłanie danych z aplikacji towarzyszącej

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żerMenedż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:

app-streaming-interaction

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:

  1. Utwórz aplikację, która w pliku manifestu prosi o uprawnienie REQUEST_COMPANION_PROFILE_APP_STREAMING.

  2. Poproś użytkownika o przyznanie aplikacji uprawnień do strumieniowego przesyłania aplikacji.

  3. Utwórz instancję CDM AssociationRequest , aby poprosić o rolę COMPANION_DEVICE_APP_STREAMING. Aplikacja otrzymuje uprawnienie CREATE_VIRTUAL_DEVICE po przyznaniu roli.

  4. Wywołaj VirtualDeviceManager#create() aby utworzyć instancję VirtualDevice. W przypadku instancji VirtualDevice aplikacja może tworzyć wirtualne wyświetlacze i wirtualne dane wejściowe oraz nimi zarządzać.

  5. Uruchom oczekujący zamiar powiadomienia na wyświetlaczu wirtualnym i utwórz nagranie wideo tego wyświetlacza.

  6. Nawiąż połączenie z podłączonym urządzeniem i przesyłaj strumieniowo wirtualny wyświetlacz na to urządzenie.

  7. Wstrzykiwanie zdarzeń wejściowych z połączonego urządzenia do urządzenia lokalnego za pomocą interfejsów VirtualDevice API.

  8. 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.

  9. 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.