隨附應用程式串流

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

建築

自 Android 13 起,新的 Virtual Device ManagerCompanion Device Manager (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 權限,讓應用程式建立虛擬裝置。角色擁有者應透過建立可做為已連結裝置 Proxy 的 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 角色會假設角色擁有者應用程式具備下列功能和行為:

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