在 Android 13 中,應用程式串流功能可讓手機將應用程式串流至已連結的裝置,並讓這些裝置與應用程式互動。新的 COMPANION_DEVICE_APP_STREAMING
角色可讓應用程式為已連線的遠端裝置建立及管理 Proxy,以便將應用程式從本機裝置串流至遠端裝置。擁有 COMPANION_DEVICE_APP_STREAMING
角色的應用程式可以取得權限,建立虛擬顯示裝置、在該裝置上啟動應用程式,然後將已啟動應用程式的影片串流傳輸至其他裝置。角色擁有者應用程式也可以將從遠端裝置收到的輸入和麥克風事件,插入本機裝置,就像該裝置是以周邊裝置的形式連線一樣。
建築
自 Android 13 起,新的 Virtual Device Manager 和 Companion Device Manager (CDM) 是支援應用程式串流播放和與遠端連線裝置互動的關鍵構件。
虛擬裝置管理工具
應用程式串流功能會利用虛擬顯示器。虛擬裝置管理工具會建立虛擬螢幕,與可見的主要螢幕分開。當使用者同意開始串流應用程式時,應用程式會在虛擬螢幕上啟動或移轉至虛擬螢幕。虛擬螢幕的內容會透過影片串流傳輸至已連結的裝置,以便顯示。
Virtual Device Manager 包含 API,可用於建立、註冊及管理 VirtualDevice
例項。
VirtualDevice
例項是已連結裝置及其功能的 Proxy。VirtualDevice
例項可讓已連結的裝置接收、顯示及與傳入的應用程式串流互動,方法如下:
- 建立要顯示在已連結裝置螢幕上的
VirtualDisplay
例項。 - 將遠端音訊串流 (例如來自已連接裝置的麥克風) 注入本機裝置,以便播放。
- 將遠端輸入事件 (例如來自已連結裝置的鍵盤) 插入本機裝置,以便播放。
隨附裝置管理工具
CDM 會管理連線狀態,並強制執行啟用應用程式串流功能時必須符合的角色規定。
下圖說明應用程式串流期間,本機和遠端裝置之間的互動情形:
圖 1. 應用程式串流期間,本機和遠端裝置之間的互動
實作隨附應用程式串流角色
OEM 廠商可以實作具有 COMPANION_DEVICE_APP_STREAMING
角色的應用程式,在裝置上提供豐富且安全的跨裝置體驗。
如要建立虛擬裝置以啟用應用程式串流功能,應用程式必須是 COMPANION_DEVICE_APP_STREAMING
角色的角色持有者。授予角色後,應用程式會收到 CREATE_VIRTUAL_DEVICE
權限,讓應用程式建立虛擬裝置。角色擁有者應透過建立可做為已連結裝置 Proxy 的 VirtualDevice
例項,實作應用程式串流功能。VirtualDevice
類別提供方法,可用於擷取虛擬顯示器的複合途徑,適合用於串流至其他裝置。VirtualDevice
類別也提供 API,可將在遠端裝置上發生的輸入事件注入本機裝置,讓在本機裝置上執行的應用程式,看起來就像在遠端裝置上原生執行一樣。
請按照下列步驟實作隨附應用程式串流角色:
建立會在資訊清單中要求
REQUEST_COMPANION_PROFILE_APP_STREAMING
權限的應用程式。提示使用者授予應用程式權限,以便進行應用程式串流。
建立 CDM
AssociationRequest
執行個體,以要求COMPANION_DEVICE_APP_STREAMING
角色。授予角色後,應用程式就會收到CREATE_VIRTUAL_DEVICE
權限。呼叫
VirtualDeviceManager#create()
以建立VirtualDevice
例項。有了VirtualDevice
例項,應用程式就能建立及管理虛擬顯示畫面和虛擬輸入內容。在虛擬螢幕上啟動通知的待處理意圖,並建立該螢幕的錄影畫面。
建立與已連結裝置的連線,並將虛擬顯示畫面串流至已連結裝置。
透過
VirtualDevice
API,將來自已連結裝置的輸入事件重新插入本機裝置。當使用者在遠端裝置上關閉串流應用程式時,請結束串流並拆解
VirtualDevice
例項。此時,先前的串流應用程式會在本機裝置的背景中執行,且連線會關閉。視需要等待更多來自已連結裝置的信號,重新啟動應用程式串流。
應用程式負責連線至遠端裝置、向 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
角色會假設角色擁有者應用程式具備下列功能和行為:
- 建立及管理其他裝置的連線。
- 建立及管理可信任的虛擬顯示器 (包括解鎖的顯示器),方法如下:
- 在虛擬螢幕上啟動活動。
- 將連結裝置上串流應用程式發生的事件,注入本機裝置,例如在平板電腦上播放手機上相同座標的觸控事件。
- 擷取來自串流應用程式的音訊資料。
- 在串流應用程式使用麥克風時,將本機裝置的麥克風串流取代為已連線裝置的麥克風串流。
- 當串流應用程式使用相機時,將本機裝置的相機串流取代為已連結裝置的相機串流。
- 管理及串流本機裝置的通知至已連結的裝置,並對通知採取行動。
- 將本機裝置的媒體資料串流傳送至已連結的裝置,例如本機裝置上可用的應用程式清單。
- 要求驗證裝置。