在 Android 手機、車輛、電視和耳機上,透過語音與 Google 助理互動的媒體應用程式,會採用 Android 媒體工作階段 API 並使用媒體動作。媒體動作生命週期可能難以追蹤。即使是簡單的搜尋要求播放作業,也包含許多可能出錯的中繼步驟,如簡化版時間軸所示:
Media Controller Test (MCT) 應用程式可讓您在 Android 中測試媒體播放的細節,並協助驗證媒體工作階段實作情形。
Media Controller Test 應用程式有兩個版本:
- 用戶端應用程式是在舊版
MediaControllerCompat
上實作。這樣一來,當外部應用程式透過舊版MediaControllerCompat
存取時,您就能測試建構在舊版MediaSessionCompat
或 Media3MediaSession
之上的媒體工作階段應用程式。在 GitHub 上尋找舊版的原始碼。 - 用戶端應用程式是建構在最新的 Media3
MediaController
之上。這樣一來,當外部應用程式透過 Media3MediaController
存取時,您就能測試建構在舊版MediaSessionCompat
或 Media3MediaSession
之上的媒體工作階段應用程式。在 GitHub 上找出 Media3 版本的原始碼。
MCT 會顯示應用程式 MediaController
的相關資訊,例如 PlaybackState
和中繼資料,並可用於測試應用程式間的媒體控制項。MCT 也包含驗證測試架構,可讓您自動化品質確保測試。
如要使用 MCT,您的應用程式必須提供媒體瀏覽器服務,且您必須允許 MCT 連線至該服務。詳情請參閱「建立媒體瀏覽器服務」一文。
啟動 MCT

啟動 MCT 後,您會看到兩個清單:
- Active MediaSessions:啟動 MCT 時,這個清單一開始會是空白,您會看到「找不到媒體應用程式。需要 Notification Listener 權限才能掃描目前的媒體工作階段。」按一下「設定」,前往權限畫面並啟用 MCT 的權限。
- MediaBrowserService 實作項目:這份清單會顯示已實作媒體瀏覽器服務的應用程式。如果您已實作媒體瀏覽器服務,您的應用程式就會顯示在這份清單中,但您必須將應用程式設為接受所有連線,或將 MCT 加入許可清單,才能使用 MCT。詳情請參閱「使用 onGetRoot() 控制用戶端連線」。
手動測試手機應用程式
如果您允許 MCT 連線至應用程式的媒體瀏覽器服務,您的應用程式就會顯示在媒體瀏覽器服務清單實作項目清單中。找到該應用程式,然後按一下「控制」,即可在背景啟動應用程式。
否則,您必須先在背景自行啟動應用程式,然後在運作中的媒體工作階段清單中看到「Control」時,再按一下該按鈕。
測試準備和播放
當 MCT 開始控制應用程式時,會顯示應用程式的目前工作階段中繼資料:目前選取的媒體,以及工作階段準備處理的動作。

MCT 控制項頁面頂端含有下拉式選單,您可以選取「Search」、「URI」、「Media ID」或「None」,以及文字欄位,用來指定與「Search」、「URI」或「Media ID」相關聯的輸入資料 (如果您選取其中一個選項)。
文字欄位下方的「準備」和「播放」按鈕會根據您選取的動作執行適當的呼叫 (onPrepare()
、onPrepareFromSearch()
、onPrepareFromUri()
、onPrepareFromMediaId()
、onPlay()
、onPlayFromSearch()
、onPlayFromUri()
、onPlayFromMediaId()
)。
測試音訊焦點
良好的媒體應用程式應能處理音訊焦點。您可以同時執行另一個音訊應用程式,藉此測試音訊焦點。MCT 控制項頁面包含可要求及釋放音訊焦點的按鈕。
如要測試音訊焦點,請按照下列步驟操作:
- 使用「Audio Focus」下拉式選單,選取
AUDIOFOCUS_GAIN
、AUDIOFOCUS_GAIN_TRANSIENT
或AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK
等三種時間提示。 - 按下按鈕要求焦點。
- 再次按下按鈕即可釋放焦點。
測試傳輸控制項

向左滑動即可顯示 MCT 的 UI 檢視畫面。這個檢視畫面含有標準媒體控制器的傳輸按鈕,並顯示工作階段的節目圖片和資料。已停用的運輸按鈕會以橘色圈出。其他所有功能都已啟用。
使用傳輸按鈕測試播放器。運輸按鈕的狀態應如預期變更。舉例來說,當您按下「播放」按鈕時,該按鈕應會停用,而「暫停」和「停止」按鈕則會啟用。
再次向左滑動,即可查看顯示選用動作的畫面。每個動作都有一個控制項,可顯示該動作是否處於啟用狀態。如果是啟用狀態,您可以按一下該按鈕執行動作。
如果您是透過提供媒體瀏覽器服務的應用程式清單連線,您可以再向左滑動兩次,查看可上下瀏覽應用程式內容階層的畫面,或搜尋內容樹狀結構。
手動測試影片應用程式
使用分割畫面模式測試影片應用程式控制項。首先,在一個視窗中開啟影片應用程式,然後在分割畫面模式下開啟 MCT。
執行驗證測試
驗證測試架構提供一鍵式測試,可讓您執行測試,確保媒體應用程式正確回應播放要求。
測試電話應用程式

如要存取驗證測試,請按一下媒體應用程式旁的「Test」按鈕。
MCT 狀態

接下來的檢視畫面會顯示 MCT 的 MediaController
詳細資訊,例如 PlaybackState
、中繼資料和佇列。工具列的右上方有兩個按鈕。左側的按鈕可切換可解析和格式化的記錄。右側的按鈕會重新整理檢視畫面,以便顯示最新資訊。
選取測試

向左滑動即可前往驗證測試檢視畫面,您可以在其中查看可用的測試項目清單。如果測試使用查詢 (如圖 7 所示的從搜尋中播放測試),就會有文字欄位可輸入查詢字串。
MCT 包含下列媒體動作的測試,且會持續在專案中新增更多測試:
- 播放
- 透過搜尋功能播放
- 透過媒體 ID 播放
- 播放來源 URI
- 暫停
- 停止
- 跳至下一首
- 跳至上一首
- 跳到佇列項目
- 跳轉至
測試結果

檢視畫面底部的結果區域一開始是空白的。執行測試時,系統會顯示結果。舉例來說,如要執行「從搜尋結果播放」測試,請在文字欄位中輸入搜尋查詢,然後按一下「執行測試」。下圖顯示成功的測試結果。
測試 Android TV 應用程式
在 Android TV 上啟動 MCT 時,您會看到已安裝的媒體應用程式清單。請注意,只有導入媒體瀏覽器服務的應用程式,才會顯示在這份清單中。
選取應用程式後,系統會顯示測試畫面,並在畫面右側列出驗證測試清單。
執行測試時,畫面左側會顯示所選 MediaController 的相關資訊。詳情請查看 Logcat 中的 MCT 記錄。
需要查詢的測試會標示鍵盤圖示。點選其中一個測試,即可開啟查詢的輸入欄位。按一下「Enter」執行測試。
如要簡化文字輸入作業,您也可以使用 adb
指令:
adb shell input text your-query
您可以使用「%s」在字詞之間加入空格。舉例來說,下列指令會將「hello world」文字新增至輸入欄位。
adb shell input text hello%sworld
建構測試
您可以提交提取要求,並加入更多您認為實用的測試。如要瞭解如何建立新測試,請前往 MCT GitHub Wiki,查看驗證測試操作說明。
請參閱貢獻說明。
其他資源
MCT 應與實作媒體 API 的應用程式搭配使用。如需這類應用程式的範例,請參閱 Android 通用音樂播放器。
我們隨時歡迎您提供錯誤修正和改善建議。請參閱貢獻說明。