配套應用流式傳輸

在 Android 13 中,應用程式串流功能允許手機將應用程式串流傳輸到連接的設備,並讓這些設備與應用程式互動。新的COMPANION_DEVICE_APP_STREAMING角色允許應用程式為連接的遠端裝置建立和管理代理,以將應用程式從本機裝置串流傳輸到遠端裝置。持有COMPANION_DEVICE_APP_STREAMING角色的應用程式可以獲得創建虛擬顯示器的權限,在其上啟動應用程序,然後將啟動的應用程式的視訊串流傳輸到另一台裝置。角色持有者應用程式還可以將從遠端設備接收到的輸入和麥克風事件注入回本地設備,就好像該設備作為外圍設備連接一樣。

建築學

從 Android 13 開始,新的虛擬設備管理器配套設備管理器 (CDM)構成了支援應用程式流程以及與遠端連接裝置互動的關鍵構建塊。

虛擬設備管理器

應用程式串流透過利用虛擬顯示器來運作。虛擬設備管理器可建立獨立於可見主顯示器的虛擬顯示器。當用戶同意開始串流應用程式時,應用程式將在虛擬顯示器上啟動或傳輸到虛擬顯示器。虛擬顯示器的內容以視訊串流的形式傳輸到要顯示的連接裝置。

虛擬設備管理器包括支援建立、註冊和管理VirtualDevice實例的 API。

VirtualDevice實例是所連接裝置及其功能的代理程式。 VirtualDevice實例使連接的裝置能夠透過執行以下操作來接收、顯示傳入的應用程式流並與之互動:

  • 建立一個要顯示在連線裝置顯示幕上的VirtualDisplay實例。
  • 將遠端音訊串流(例如來自連接裝置的麥克風)注入到本機裝置中進行播放。
  • 將遠端輸入事件(例如來自連接裝置的鍵盤)注入到本機裝置中進行播放。

配套設備管理器

CDM 管理連線狀態並強制執行啟用應用程式流程必須滿足的角色要求。

下圖展示了應用程式串流過程中本地和遠端設備之間的互動:

app-streaming-interaction

圖 1.應用程式串流傳輸期間本地和遠端設備之間的交互

配套應用程式串流角色的實現

OEM 可以實現具有COMPANION_DEVICE_APP_STREAMING角色的應用程序,以在其裝置上實現豐富且安全的跨裝置體驗。

若要建立虛擬裝置以啟用應用程式流程,應用程式必須是COMPANION_DEVICE_APP_STREAMING角色的角色持有者。授予角色後,應用程式會收到CREATE_VIRTUAL_DEVICE權限,這使應用程式能夠建立虛擬裝置。角色持有者應透過建立充當連接裝置代理的VirtualDevice實例來實現應用程式流程。 VirtualDevice類別提供了能夠提取虛擬顯示器的複合表面的方法,適合串流傳輸到另一個裝置。 VirtualDevice類別還提供 API,用於將遠端設備上發生的輸入事件注入本機設備,使本地設備上運行的應用程式看起來就像在遠端設備上本機運行一樣。

請依照以下步驟實施配套應用程式串流角色:

  1. 建立一個在清單中請求REQUEST_COMPANION_PROFILE_APP_STREAMING權限的應用程式。

  2. 提示使用者授予應用程式執行應用程式串流傳輸的權限。

  3. 建立 CDM AssociationRequest實例以請求COMPANION_DEVICE_APP_STREAMING角色。授予角色後,應用程式會收到CREATE_VIRTUAL_DEVICE權限。

  4. 呼叫VirtualDeviceManager#create()建立VirtualDevice實例。透過VirtualDevice實例,應用程式可以建立和管理虛擬顯示器和虛擬輸入。

  5. 在虛擬顯示器上啟動通知的待處理意圖並建立該顯示器的視訊擷取。

  6. 建立與所連接裝置的連線並將虛擬顯示串流傳輸到所連接的裝置。

  7. 透過VirtualDevice API 將輸入事件從已連接的裝置注入回本機裝置。

  8. 當使用者關閉遠端裝置上的串流應用程式時,結束串流並拆除VirtualDevice實例。此時,先前的串流應用程式在本地設備的後台運行,並且連接關閉。

  9. 如果需要,請等待來自連接裝置的更多訊號以重新啟動應用程式串流傳輸。

該應用程式負責連接到遠端設備、向 CDM 報告連接狀態,並執行CDD中所述的安全要求。

COMPANION_DEVICE_APP_STREAMING 角色持有者要求

當使用者將應用程式流程應用程式與裝置關聯時,CDM 會授予COMPANION_DEVICE_APP_STREAMING角色。此角色與裝置設定檔相關聯,因此可以控制哪些應用程式可以新增至與此設定檔相符的 Play 商店。有關COMPANION_DEVICE_APP_STREAMING角色要求的列表,請參閱Android 角色。請聯絡您的 Google 聯絡人以獲取更多資訊。

COMPANION_DEVICE_APP_STREAMING 角色持有者能力

若要執行應用程式串流傳輸, COMPANION_DEVICE_APP_STREAMING角色假定角色持有者應用程式具有以下功能和行為:

  • 建立和管理與其他裝置的連線。
  • 建立和管理受信任的虛擬顯示器,包括解鎖的顯示器,如下所示:
    • 在虛擬顯示幕上開始活動。
    • 將連接設備上的串流應用程式上發生的事件注入回本地設備,例如在平板電腦上在手機上的相同座標處播放觸控事件。
    • 從串流應用程式擷取音訊資料。
    • 當串流應用程式正在使用麥克風時,將本機裝置的麥克風串流替換為連接裝置的麥克風串流。
    • 當串流應用程式正在使用相機時,將本機裝置的相機串流替換為連接裝置的相機串流。
  • 管理通知並將其從本地設備串流傳輸到連接的設備,並對通知採取操作。
  • 將元資料從本機裝置(例如本機裝置上可用的應用程式清單)串流傳輸到已連線的裝置。
  • 請求設備驗證。