使用媒體遙控器測試應用程式

在 Android 手機、汽車、電視和耳機上,透過語音與 Google 助理互動的媒體應用程式,是由 Android 媒體工作階段 API 提供技術支援,並使用媒體動作。媒體動作生命週期可能難以遵循。即使是簡單的「播放搜尋結果」要求,也有許多中間步驟可能出錯,如簡化時間軸所示:

媒體動作生命週期

圖 1. 媒體動作生命週期

Media Controller Test (MCT) 應用程式可讓您在 Android 中測試媒體播放的細節,並協助驗證媒體工作階段實作情形。

Media Controller Test 應用程式有兩種版本:

  • 用戶端應用程式是以舊版 MediaControllerCompat 為基礎實作。這樣一來,當外部應用程式透過舊版 MediaControllerCompat 存取時,您就能測試以舊版 MediaSessionCompat 或 Media3 MediaSession 建構的媒體工作階段應用程式。在 GitHub 上查看舊版原始碼。
  • 用戶端應用程式是以最新版 Media3 MediaController 為基礎實作。這樣一來,當外部應用程式透過 Media3 MediaController 存取時,您就能測試以舊版 MediaSessionCompat 或 Media3 MediaSession 建構的媒體工作階段應用程式。請前往 GitHub 查看 Media3 版本的原始碼。

MCT 會顯示應用程式 MediaController 的相關資訊,例如 PlaybackState 和中繼資料,可用於測試應用程式間的媒體遙控器。MCT 也包含驗證測試架構,可讓您自動執行品質確保測試。

如要使用 MCT,應用程式必須具備媒體瀏覽器服務,且您必須允許 MCT 連線至該服務。詳情請參閱「建立媒體瀏覽器服務」。

啟動 MCT

MCT 啟動頁面
圖 2. MCT 啟動頁面

啟動 MCT 後,您會看到兩個清單:

  • Active MediaSessions:啟動 MCT 時,這份清單一開始會是空白,並顯示「No media apps found. 必須授予通知監聽器權限,才能掃描進行中的媒體工作階段。按一下「Settings」(設定),前往權限畫面,然後啟用 MCT 的權限。
  • MediaBrowserService 實作:這份清單會顯示已實作媒體瀏覽器服務的應用程式。如果您已導入媒體瀏覽器服務,應用程式就會顯示在這個清單中,但只有在您將應用程式設為接受所有連線,或將 MCT 加入許可清單時,才能使用 MCT。詳情請參閱「使用 onGetRoot() 控制用戶端連線」。

手動測試「電話」應用程式

如果您允許 MCT 連線至應用程式的媒體瀏覽器服務,應用程式就會顯示在媒體瀏覽器服務清單中。找到後,按一下「Control」,即可在背景啟動應用程式。

否則,您必須先在背景啟動應用程式,然後在應用程式顯示在有效媒體工作階段清單中時,按一下「Control」(控制)。

測試準備和播放

MCT 開始控制應用程式時,會顯示應用程式目前的工作階段中繼資料:目前選取的媒體,以及工作階段準備處理的動作。

控制頁面
圖 3. 控制頁面

MCT 控制項頁面頂端有一個下拉式選單,可選取「Search」(搜尋)、「URI」、「Media ID」(媒體 ID) 或「None」(無)。如果選取其中一個選項,則可使用文字欄位指定與「Search」(搜尋)、「URI」或「Media ID」(媒體 ID) 相關聯的輸入資料。

文字欄位下方的「Prepare」和「Play」按鈕會根據您選取的動作執行適當的呼叫 (onPrepare()、onPrepareFromSearch()、onPrepareFromUri()、onPrepareFromMediaId()、onPlay()、onPlayFromSearch()、onPlayFromUri()、onPlayFromMediaId())。

測試音訊焦點

運作良好的媒體應用程式應能處理音訊焦點。如要測試音訊焦點,請在執行應用程式時,同時執行其他音訊應用程式。MCT 控制項頁面包含要求及釋放音訊焦點的按鈕。

如要測試音訊焦點,請按照下列步驟操作:

  1. 使用「Audio Focus」下拉式選單,選取 AUDIOFOCUS_GAIN、AUDIOFOCUS_GAIN_TRANSIENT 或 AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK 三種時間長度提示之一。
  2. 按下按鈕即可要求焦點。
  3. 再次按下按鈕即可釋放焦點。

測試傳輸控制項

測試傳輸控制項
圖 4. 測試傳輸控制項

向左滑動,即可顯示 MCT 的 UI 檢視畫面。這個檢視畫面包含標準媒體控制器傳輸按鈕,並顯示工作階段的節目圖片和資料。停用的傳輸按鈕會以橘色圈起。其他則為有效。

使用傳輸按鈕測試播放器。傳輸按鈕的狀態應會如預期變更。舉例來說,按下「播放」按鈕後,該按鈕應停用,而「暫停」和「停止」按鈕則應啟用。

再次向左滑動,即可查看可選操作。每個動作都有一個控制項,顯示該動作是否啟用。如果按鈕處於啟用狀態,點選即可執行動作。

如果您是從具有媒體瀏覽器服務的應用程式清單連線,可以再向左滑動兩次,查看應用程式內容階層,或搜尋內容樹狀結構。

手動測試影片應用程式

使用分割畫面模式測試影片應用程式控制器。首先,在一個視窗中開啟影片應用程式,然後在分割畫面模式中開啟 MCT。

執行驗證測試

驗證測試架構提供一鍵測試功能,可確保媒體應用程式正確回應播放要求。

測試「電話」應用程式

「測試」按鈕
圖 5. 「測試」按鈕

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

MCT 狀態

媒體控制狀態
圖 6. 媒體控制狀態

下一個檢視畫面會顯示 MCT MediaController 的詳細資訊,例如 PlaybackState、中繼資料和佇列。工具列右上方有兩個按鈕。左側按鈕可在可剖析和格式化的記錄之間切換。右側的按鈕可重新整理檢視畫面,顯示最新資訊。

選取測試

測試選取頁面
圖 7. 測試選取頁面

向左滑動即可進入驗證測試檢視畫面,其中會顯示可捲動的可用測試清單。如果測試使用查詢 (例如圖 7 所示的「從搜尋播放」測試),則會有一個文字欄位可輸入查詢字串。

MCT 包含下列媒體動作的測試,且會持續新增更多測試:

  • 播放
  • 透過搜尋播放
  • 從媒體 ID 播放
  • 從 URI 播放
  • 暫停
  • 停止
  • 跳到下一首
  • 跳到上一首
  • 跳到待播清單項目
  • 跳轉至

測試結果

測試結果成功
圖 8. 測試結果成功

檢視畫面底部的結果區域一開始是空白的。執行測試時,系統會顯示結果。舉例來說,如要執行「從搜尋播放」測試,請在文字欄位中輸入搜尋查詢,然後按一下「Run Test」。以下螢幕截圖顯示成功的測試結果。

測試 Android TV 應用程式

在 Android TV 上啟動 MCT 時,會看到已安裝的媒體應用程式清單。請注意,只有導入媒體瀏覽器服務的應用程式,才會顯示在這個清單中。

電視上的 MCT 啟動頁面

圖 9. 電視上的 MCT 啟動頁面

選取應用程式後,系統會將您導向測試畫面,右側會顯示驗證測試清單。

電視上的驗證測試頁面

圖 10. 電視上的驗證測試頁面

執行測試時,畫面左側會顯示所選 MediaController 的相關資訊。如要瞭解詳情,請查看 Logcat 中的 MCT 記錄。

電視上的測試資訊頁面

圖 11. 電視上的測試資訊頁面

需要查詢的測試會標上鍵盤圖示。點選其中一項測試,就會開啟查詢的輸入欄位。按 Enter 鍵執行測試。

如要簡化文字輸入,也可以使用 adb 指令:

adb shell input text your-query

您可以使用「%s」在字詞之間加入空格。舉例來說,下列指令會在輸入欄位中加入「hello world」文字。

adb shell input text hello%sworld

建立測試

您可以提交提取要求,加入更多您認為有用的測試。如要瞭解如何建立新測試,請造訪 MCT GitHub Wiki,並參閱驗證測試操作說明。

詳情請參閱貢獻操作說明。

其他資源

MCT 應與實作媒體 API 的應用程式搭配使用。如需這類應用程式的範例,請參閱通用 Android 音樂播放器。

歡迎隨時修正錯誤及提升效能。請參閱貢獻操作說明。