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 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 wirtualne urządzenie ManagerMenedż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.
  • Wstrzykiwanie zdalnego strumienia audio, np. z mikrofonu podłączonego urządzenia, do urządzenia lokalnego w celu odtwarzania.
  • Wstrzykiwanie zdalnych zdarzeń wejściowych, np. 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 strumieniowania aplikacji

Wdrażanie roli strumieniowania aplikacji towarzyszącej

Producenci OEM mogą wdrażać aplikację z rolą COMPANION_DEVICE_APP_STREAMING, aby zapewnić na swoich urządzeniach bogate i bezpieczne środowisko na innym urządzeniu.

Aby utworzyć urządzenie wirtualne umożliwiające strumieniowe przesyłanie aplikacji, aplikacja musi mieć przypisaną rolę COMPANION_DEVICE_APP_STREAMING. Po przyznaniu roli aplikacja otrzymuje uprawnienie CREATE_VIRTUAL_DEVICE, które umożliwia jej utworzenie urządzenia wirtualnego. Osoby pełniące rolę powinny wdrożyć streamowanie 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 danych.

  3. Utwórz instancję CDM  AssociationRequest aby poprosić o rolę COMPANION_DEVICE_APP_STREAMING. Gdy rola zostanie przyznana, aplikacja otrzyma uprawnienie CREATE_VIRTUAL_DEVICE.

  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 intencję oczekującą powiadomienia na wyświetlaczu wirtualnym i utwórz nagranie wideo tego wyświetlacza.

  6. Utwórz 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 odtwarzania strumieniowego na urządzeniu zdalnym, zakończ streamowanie 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.

  9. W razie potrzeby poczekaj na więcej sygnałów 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 posiadaczy roli COMPANION_DEVICE_APP_STREAMING

Menedżer urządzeń towarzyszących przyznaje rolę COMPANION_DEVICE_APP_STREAMING, gdy użytkownik powiąże aplikację do odtwarzania strumieniowego 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 na Androidzie. Aby uzyskać więcej informacji, skontaktuj się z osobą kontaktową w Google.

Uprawnienia posiadacza roli 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 wyświetlacze wirtualne, 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 dotknięcia na tablecie w tych samych współrzędnych na telefonie.
    • Przechwytywanie danych audio z aplikacji przesyłanej strumieniowo.
    • Zastąp strumień mikrofonu urządzenia lokalnego strumieniem mikrofonu połączonego urządzenia, gdy strumieniowana aplikacja 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 z urządzenia lokalnego, np. listę aplikacji dostępnych na urządzeniu lokalnym, na połączone urządzenie;
  • Poproś o weryfikację urządzenia.