隨附應用程式串流

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

建築

從 Android 13 開始,新的虛擬裝置管理工具隨附裝置管理工具 (CDM) 是關鍵的構成要素,以支援應用程式串流並與遠端連線裝置互動。

虛擬裝置管理工具

應用程式串流功能會利用虛擬顯示器。虛擬裝置管理工具會建立與可見的主要螢幕區隔開來的虛擬螢幕。當使用者同意開始串流應用程式時,應用程式會在虛擬螢幕上啟動或移轉至虛擬螢幕。虛擬螢幕的內容會在影片串流中傳輸至要顯示的已連線裝置。

Virtual Device Manager 包含 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 角色會假設角色擁有者應用程式具備下列功能和行為:

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