Strumieniowe przesyłanie aplikacji towarzyszących

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:

app-streaming-interaction

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:

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

  2. poprosić 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. Gdy rola zostanie przyznana, aplikacja otrzyma uprawnienie CREATE_VIRTUAL_DEVICE.

  4. Aby utworzyć instancję VirtualDevice, wywołaj funkcję VirtualDeviceManager#create(). Dzięki instancji VirtualDevice aplikacja może tworzyć wirtualne wyświetlacze i wirtualne dane wejściowe oraz nimi zarządzać.

  5. Uruchom oczekujący na ekranie wirtualnym zamiar powiadomienia i zrób zrzut ekranu.

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

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

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

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