下圖說明與媒體互動的元件:
圖 1. 系統元件
下表說明此圖中的元素:
元件 | 說明 |
---|---|
主畫面 | 代表車輛 UI 中其他顯示及控制目前播放的介面 媒體。在 Android 開放原始碼計畫中,這是系統啟動時顯示的主畫面。在這個畫面中 使用者可以查看正在播放的媒體項目詳細資料,並執行一組有限的標準作業 和自訂動作 (例如「播放」和「暫停」)。 |
系統 UI | 提供包含全域 UI 導覽選項的功能,例如:前往 媒體: |
Google 助理 | Android 為各種語音助理應用程式提供用來與系統互動的機制。 這類應用程式可在背景與媒體來源互動 (例如, 語音指令產生的歌曲),或是在前景中前往媒體 (例如 系統指示語音助理應用程式顯示特定媒體來源的使用者介面時)。 |
應用程式啟動器 | Android 應用程式會透過應用程式啟動器啟動,包括媒體來源。媒體可以 呈現自己的媒體來源選取器,搭配或取代應用程式啟動器 發展媒體的起點 |
Google Play 商店 | 使用 GAS 時,使用者可透過以下應用程式找出並安裝新的應用程式 Android 裝置。針對媒體,應用程式安裝完成後,系統會將使用者導向至媒體 完成登入程序或開始與應用程式互動。 |
媒體工作階段管理員 | 可追蹤及控管所有媒體來源的媒體工作階段的 Android 系統服務。這項服務 提供的機制可偵測媒體來源成為前景媒體的時機 來源。媒體以及所有其他顯示目前正在播放媒體來源的應用程式 ( 例如主畫面),請使用「媒體工作階段管理員」偵測這些事件並更新使用者介面 。媒體來源會與媒體工作階段管理員互動的方式 媒體業 工作階段 API。 |
電台 | 能夠與無線電硬體互動的特殊應用程式。電台搜尋 快速選取最近識別的電台,並切換電台。 使用者可以切換使用 Radio 和 Media 的 UI 元件 這點十分重要 |
駕駛人分心引擎 | 一種 Android 系統服務,用來根據 。媒體來源登入和設定使用者體驗 (即直接操控螢幕) 媒體來源),則這項服務可確保車輛在發動時不會顯示不安全的內容 都必須先經過處理原始設備製造商 (OEM) 可以自訂這些狀態的定義,以及系統運作方式 回應這些狀況 (例如顯示封鎖畫面的疊加層)。 |
使用者流程
啟動媒體應用程式
啟動媒體的程序如下所示。
圖 2. 啟動媒體應用程式
媒體必須透過以下的隱含方式啟動
CAR_INTENT_ACTION_MEDIA_TEMPLATE
。
這項意圖可能會包含下列資訊做為「額外項目」:
-
android.car.intent.extra.MEDIA_COMPONENT
(選用)。額外字串 表示MediaBrowserService
敬上 顯示在要連結的媒體應用程式中如未提供,媒體螢幕 目前所選的媒體應用程式。這項意圖的範本如下: 進入點:-
系統 UI。用於返回媒體體驗或開始 初次使用 Chrome 時在此情況下,使用上述 Intent 時不會有任何 額外項目,以使 Media 顯示目前所選的媒體應用程式。
-
主畫面、Google 助理和通知中心。,使用者可以 請前往「媒體」,即可顯示目前所選的媒體應用程式。無論在任何情況下 隱含意圖 (不含額外項目) 就會觸發
-
應用程式啟動器。當使用者從 應用程式啟動器,上述意圖包含
CAR_EXTRA_MEDIA_COMPONENT
敬上 額外項目,其中包含所選的媒體應用程式。媒體將此指定為 並與其連線詳情請參閱下一節:「應用程式」 媒體整合啟動器。
-
應用程式啟動器與媒體整合
媒體應用程式不得提供任何加上
android.intent.category.LAUNCHER
類別。因此,應用程式啟動器
相同) 必須導入特殊邏輯,才能處理媒體來源整合問題:
-
應用程式啟動器必須掃描系統,尋找要實作的套件
MediaBrowserService.SERVICE_INTERFACE
。 針對這類套件,應用程式啟動器會擷取服務圖示 (與擷取其他套件內容所用的服務圖示類似) 活動。 -
然後,應用程式啟動器會將這些套件與實作
android.intent.category.LAUNCHER
個活動。如果應用程式提供MediaBrowserService
實作和啟動器活動時,服務會 優先順序。截至本文撰寫時間為止,沒有任何媒體來源應用程式可提供啟動器活動。
- 您可以在 Android 開放原始碼計畫程式碼中找到這個邏輯的範例:
AppLauncherUtils#getAllLauncherApps()
。
登入流程和設定選項
媒體應用程式可以提供車輛最佳化設定活動。這類活動可以是 用於實作未由 Android Media API 處理的使用者流程,例如:
- 登入
- 登出
- 切換帳戶
- 顯示使用者目前登入的位置 (如有)
- 服務設定
圖 3. 登入流程
這項設定活動是由媒體應用程式透過下列意圖篩選器宣告:
<activity android:name=".AppSettingsActivity" android:exported="true android:theme="@style/SettingsActivity" android:label="@string/app_settings_activity_title"> <intent-filter> <action android:name="android.intent.action.APPLICATION_PREFERENCES"/> </intent-filter> </activity>
媒體必須實作下列邏輯:
-
檢查目前所選的媒體應用程式是否包含具有指定 意圖篩選器。
-
如果是的話,請允許使用者前往活動。
-
如果車輛使用者體驗限制生效 (例如車輛正在移動),這項預設服務應能滿足這項需求 「設定」活動並非驅動程式最佳化 UI,因此會停用。
處理錯誤和需要登入
媒體是透過 Android Media Session API 與媒體應用程式互動。隨心所欲
API,媒體收到
PlaybackState
敬上
物件,用於通訊媒體應用程式的目前狀態。
當媒體應用程式變更時,系統就會啟動登入程序
PlaybackState
敬上
到
STATE_ERROR
、
包括特定的錯誤代碼 (詳情請見下方說明)。當此情況
發生時,媒體會顯示錯誤說明,以及前往登入活動的預設用途
是由媒體應用程式實作的
應用程式可以透過相同流程指出其他錯誤情況 (例如, 伺服器連線錯誤)。
圖 4. 處理錯誤
進行一般 PlaybackState
錯誤處理時,媒體必須檢查下列輸入內容。
-
PlaybackState
錯誤代碼等於PlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED
。 這項信號 媒體應用程式需要登入才能繼續作業。其他錯誤代碼 ,這會指出其他類型的錯誤情況。 -
PlaybackState
則錯誤訊息 (由媒體應用程式使用PlaybackStateCompat.Builder#setErrorMessage
方法) 包含 使用者可以理解的說明 (例如「您尚未登入。」)。這則訊息必須向 要讓使用者分心,必須加以最佳化 (DO)。 -
或者,
PlaybackState
可以包含下列額外項目 (由媒體設定) 具有PlaybackStateCompat.Builder#setExtras
的應用程式 方法),-
android.media.extras.ERROR_RESOLUTION_ACTION_LABEL
。設定為 包含使用者可理解的訊息,會顯示在使用者輕觸並啟動 登入流程。 -
android.media.extras.ERROR_RESOLUTION_ACTION_INTENT
。設定PendingIntent
將於以下日期累計: 當使用者按下上述按鈕時觸發。這個PendingIntent
指向由相同媒體應用程式實作的自訂登入活動。
-
-
PlaybackState
州等於STATE_ERROR
。 這表示您必須先登入,才能執行其他操作。