隨附應用程式串流

在 Android 13 中,應用程式串流功能可讓手機將應用程式串流至已連結的裝置,並讓這些裝置與應用程式互動。應用程式可透過新的 COMPANION_DEVICE_APP_STREAMING 角色,為連線的遠端裝置建立及管理 Proxy,將應用程式從本機裝置串流至遠端裝置。擁有 COMPANION_DEVICE_APP_STREAMING 角色的應用程式可以取得權限,建立虛擬螢幕、在虛擬螢幕上啟動應用程式,然後將啟動的應用程式影片串流至其他裝置。角色持有者應用程式也可以將從遠端裝置收到的輸入和麥克風事件,重新注入本機裝置,就像該裝置是連線的周邊裝置一樣。

建築

從 Android 13 開始,新的虛擬裝置管理員隨附裝置管理員 (CDM) 是支援應用程式串流和與遠端連線裝置互動的主要建構區塊。

虛擬裝置管理工具

應用程式串流功能會運用虛擬螢幕。虛擬裝置管理工具會建立與可見主要螢幕不同的虛擬螢幕。使用者同意開始串流應用程式後,應用程式就會在虛擬螢幕上啟動或轉移。虛擬螢幕的內容會以影片串流形式傳輸至連結裝置,並顯示在該裝置上。

虛擬裝置管理工具包含 API,可建立、註冊及管理 VirtualDevice 執行個體。

VirtualDevice 例項是連結裝置及其功能的 Proxy。VirtualDevice 執行個體可讓連結裝置接收、顯示及互動傳入的應用程式串流,方法如下:

  • 建立要在已連線裝置螢幕上顯示的 VirtualDisplay執行個體。
  • 將遠端音訊串流 (例如連線裝置麥克風的音訊) 注入本機裝置,以便播放。
  • 將遠端輸入事件 (例如連線裝置鍵盤的輸入內容) 插入本機裝置,以進行播放。

隨附裝置管理工具

CDM 會管理連線狀態,並強制執行啟用應用程式串流功能時必須符合的角色規定。

下圖說明應用程式串流期間,本機和遠端裝置之間的互動:

app-streaming-interaction

圖 1. 應用程式串流期間,本機和遠端裝置之間的互動

實作隨附應用程式串流角色

原始設備製造商 (OEM) 可以實作具有 COMPANION_DEVICE_APP_STREAMING 角色的應用程式,在裝置上提供豐富且安全的跨裝置體驗。

如要建立虛擬裝置來啟用應用程式串流,應用程式必須是 COMPANION_DEVICE_APP_STREAMING 角色的角色持有者。獲得角色後,應用程式會收到 CREATE_VIRTUAL_DEVICE 權限,因此可以建立虛擬裝置。角色持有人應建立 VirtualDevice 執行個體,做為連結裝置的 Proxy,藉此實作應用程式串流。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 角色會假設角色持有者應用程式具備下列功能和行為:

  • 建立及管理與其他裝置的連線。
  • 建立及管理信任的虛擬螢幕,包括解鎖的螢幕,方法如下:
    • 在虛擬螢幕上開始活動。
    • 將連結裝置上串流應用程式發生的事件,注入回本機裝置,例如在手機上相同座標播放平板電腦上的觸控事件。
    • 從串流應用程式擷取音訊資料。
    • 在串流應用程式使用麥克風時,將本機裝置的麥克風串流替換為連線裝置的麥克風串流。
    • 在串流應用程式使用相機時,以連結裝置的攝影機串流影像取代本機裝置的攝影機串流影像。
  • 管理及將本機裝置的通知串流到已連線的裝置,並對通知採取行動。
  • 將本機裝置的串流中繼資料 (例如本機裝置上可用的應用程式清單) 傳送至連結裝置。
  • 要求驗證裝置。