隨附應用程式串流

在 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 角色會假設角色持有者應用程式具備下列功能和行為:

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