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