Strumieniowanie w aplikacji towarzyszącej

W systemie Android 13 funkcja strumieniowego przesyłania aplikacji umożliwia telefonom przesyłanie strumieniowe aplikacji do podłączonych urządzeń i umożliwia tym urządzeniom interakcję z aplikacjami. Nowa rola COMPANION_DEVICE_APP_STREAMING umożliwia aplikacji tworzenie serwerów proxy dla podłączonych urządzeń zdalnych i zarządzanie nimi w celu strumieniowego przesyłania aplikacji z urządzenia lokalnego na urządzenie zdalne. Aplikacja posiadająca rolę COMPANION_DEVICE_APP_STREAMING może uzyskać uprawnienia do utworzenia wirtualnego wyświetlacza, uruchomienia na nim aplikacji, a następnie strumieniowego przesyłania wideo z uruchomionej aplikacji na inne urządzenie. Aplikacja pełniąca rolę może także wstrzykiwać zdarzenia wejściowe i mikrofonowe odebrane z urządzenia zdalnego z powrotem do urządzenia lokalnego, 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 i Menedżer urządzeń towarzyszących (CDM) stanowią kluczowe elementy obsługujące przesyłanie strumieniowe aplikacji i interakcję ze zdalnymi, podłączonymi urządzeniami.

Menedżer urządzeń wirtualnych

Przesyłanie strumieniowe aplikacji opiera się na wykorzystaniu wirtualnych wyświetlaczy . 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 przesyłania strumieniowego aplikacji, aplikacja zostanie uruchomiona na wirtualnym wyświetlaczu lub przeniesiona na niego. Zawartość wirtualnego wyświetlacza jest przesyłana w strumieniu wideo do podłączonego urządzenia w celu wyświetlenia.

Menedżer urządzeń wirtualnych zawiera interfejsy API umożliwiające tworzenie, rejestrację i zarządzanie instancjami VirtualDevice .

Instancja VirtualDevice jest serwerem proxy dla podłączonego urządzenia i jego możliwości. Instancja VirtualDevice umożliwia podłączonemu urządzeniu odbieranie, wyświetlanie i interakcję z przychodzącym strumieniem aplikacji, wykonując następujące czynności:

  • Tworzenie instancji VirtualDisplay przeznaczonej do wyświetlania na wyświetlaczu podłączonego urządzenia.
  • Wstrzykiwanie zdalnego strumienia audio, na przykład z mikrofonu podłączonego urządzenia, do urządzenia lokalnego w celu odtwarzania.
  • Wstrzykiwanie zdalnych zdarzeń wejściowych, takich jak klawiatura podłączonego urządzenia, do urządzenia lokalnego w celu odtwarzania.

Menedżer urządzeń towarzyszących

CDM zarządza stanem łączności i wymusza wymagania roli, które muszą zostać spełnione, aby umożliwić przesyłanie strumieniowe aplikacji.

Poniższy rysunek ilustruje interakcje między urządzeniem lokalnym i zdalnym podczas przesyłania strumieniowego aplikacji:

app-streaming-interaction

Rysunek 1. Interakcje między urządzeniami lokalnymi i zdalnymi podczas przesyłania strumieniowego aplikacji

Implementacja roli przesyłania strumieniowego aplikacji towarzyszącej

Producenci OEM mogą wdrożyć aplikację z rolą COMPANION_DEVICE_APP_STREAMING , aby zapewnić na swoich urządzeniach bogate i bezpieczne środowisko pracy na różnych urządzeniach.

Aby utworzyć urządzenie wirtualne umożliwiające przesyłanie strumieniowe aplikacji, aplikacja musi być posiadaczem roli COMPANION_DEVICE_APP_STREAMING . Po przyznaniu roli aplikacja otrzymuje uprawnienie CREATE_VIRTUAL_DEVICE , które umożliwia aplikacji utworzenie urządzenia wirtualnego. Oczekuje się, że posiadacze ról zaimplementują przesyłanie strumieniowe aplikacji, tworząc instancję VirtualDevice , która działa jako serwer proxy dla podłączonego urządzenia. Klasa VirtualDevice udostępnia metody umożliwiające wyodrębnienie złożonej powierzchni wirtualnego wyświetlacza, nadającej się do przesyłania strumieniowego do innego urządzenia. Klasa VirtualDevice udostępnia także interfejsy API służące do wstrzykiwania zdarzeń wejściowych występujących na urządzeniu zdalnym do urządzenia lokalnego, dzięki czemu aplikacja działająca na urządzeniu lokalnym wygląda tak, jakby działała natywnie na urządzeniu zdalnym.

Wykonaj poniższe kroki, aby zaimplementować rolę przesyłania strumieniowego aplikacji towarzyszącej:

  1. Utwórz aplikację, która żąda uprawnienia REQUEST_COMPANION_PROFILE_APP_STREAMING w manifeście.

  2. Poproś użytkownika o udzielenie aplikacji pozwolenia na przesyłanie strumieniowe aplikacji.

  3. Utwórz instancję CDM AssociationRequest , aby zażądać roli COMPANION_DEVICE_APP_STREAMING . Po przyznaniu roli aplikacja otrzymuje uprawnienie CREATE_VIRTUAL_DEVICE .

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

  5. Uruchom oczekującą intencję powiadomienia na wirtualnym wyświetlaczu 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 do podłączonego urządzenia.

  7. Wstrzykuj zdarzenia wejściowe z podłączonego urządzenia do urządzenia lokalnego za pośrednictwem interfejsów API urządzenia VirtualDevice .

  8. Gdy użytkownik zamknie aplikację do przesyłania strumieniowego na urządzeniu zdalnym, zakończ strumień i usuń instancję VirtualDevice . W tym momencie wcześniej używana aplikacja do przesyłania 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 podłączonego urządzenia, aby ponownie uruchomić przesyłanie strumieniowe aplikacji.

Aplikacja odpowiada za łączenie się ze zdalnym urządzeniem, raportowanie stanu połączenia do CDM i egzekwowanie wymagań bezpieczeństwa opisanych w CDD .

Wymagania posiadacza roli COMPANION_DEVICE_APP_STREAMING

CDM przyznaje rolę COMPANION_DEVICE_APP_STREAMING , gdy użytkownik kojarzy aplikację do strumieniowego przesyłania aplikacji z urządzeniem. Ta rola jest powiązana z profilem urządzenia, więc istnieje pewna kontrola nad tym, które aplikacje pasujące do tego profilu można dodać do Sklepu Play. Zobacz Role systemu Android , aby zapoznać się z listą wymagań roli COMPANION_DEVICE_APP_STREAMING . Aby uzyskać więcej informacji, skontaktuj się ze swoją osobą kontaktową w Google.

Możliwości posiadacza roli COMPANION_DEVICE_APP_STREAMING

Aby móc przesyłać strumieniowo aplikację, rola COMPANION_DEVICE_APP_STREAMING zakłada, że ​​aplikacja posiadacza roli ma następujące możliwości i zachowania:

  • Twórz połączenia z innymi urządzeniami i zarządzaj nimi.
  • Twórz i zarządzaj zaufanymi wirtualnymi wyświetlaczami, w tym odblokowanymi wyświetlaczami, w następujący sposób:
    • Rozpocznij działania na wirtualnym wyświetlaczu.
    • Wstrzykuj zdarzenia, które mają miejsce w aplikacji przesyłanej strumieniowo na podłączone urządzenie, z powrotem na urządzenie lokalne, na przykład odtwarzanie zdarzenia dotykowego na tablecie o tych samych współrzędnych na telefonie.
    • Przechwytuj dane audio z aplikacji przesyłanej strumieniowo.
    • Zastąp strumień mikrofonu urządzenia lokalnego strumieniem mikrofonu podłączonego urządzenia, gdy aplikacja przesyłana strumieniowo korzysta z mikrofonu.
    • Zastąp strumień kamery urządzenia lokalnego strumieniem kamery podłączonego urządzenia, gdy aplikacja strumieniowa korzysta z kamery.
  • Zarządzaj powiadomieniami i przesyłaj je strumieniowo z urządzenia lokalnego na podłączone urządzenie, a także podejmuj działania związane z powiadomieniami.
  • Przesyłaj strumieniowo metadane z urządzenia lokalnego, takie jak lista aplikacji dostępnych na urządzeniu lokalnym, do podłączonego urządzenia.
  • Poproś o weryfikację urządzenia.