iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 28
0

繼續來看看有什麼功能可以測試,先來看 AudioFocus 的測試,模擬其它 App 發出 AudioFocus 時,受測的 App 有什麼反應。AudioFocus 可以複習這天的內容(播放器架構實作 (4) - ExoPlayer 設定實作),但這邊並不是我們自己實作的,是使用的 ExoPlayer 內實作好的方式,我們就來看看 ExoPlayer 實作出來出來的結果是什麼吧。

這邊的測試有三個選項,點擊後結果為:

  • GAIN (AUDIOFOCUS_GAIN): App 會停止播放音樂,再取得 focus 後音樂不會繼續播放。
  • GAIN_TRANSIENT (AUDIOFOCUS_GAIN_TRANSIENT): App 會停止播放音樂,再取得 focus 後音樂會繼續播放。
  • GAIN_TRANSIENT_MAY_DUCK (AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK): App 不會停止音樂播放,但是音樂聲音會變小,等再取得 focus 後,聲音大小會回復正常。

操作方式如下,要先讓音樂 App 播歌,選擇 GAIN 這個選項,再點擊 GAIN,觀察音樂 App 的反應:

https://i.imgur.com/Zpgrdwa.gif

再來測試播放來源的支援性,這邊有三種選擇:

  • onPrepareFromMediaId: 播放手機內部的音檔使用,傳入 id 後,去找手機內部找到對應的檔案。為此音樂 App 實作的方式。
  • onPrepareFromSearch: 傳入一個關鍵字(歌取名稱、歌手名稱、專輯名稱),收到後看實作方式,可以在手機內部音檔或是傳給 Server 服務來尋找,找到對應可以播放的音樂。這個方法在透過 Google assistant 播歌時會使用到,舉例來說:使用者對著 Google assistant 說 “用 KKBOX 播放周杰倫的歌”,這時候 Android 系統會先判斷是要用哪個 App,將關鍵字(周杰倫)透過這個 方法傳入。這個功能因為篇幅的關係,沒有實作到,覺得有點可惜 QQ
  • onPrepareFromUri: 傳入可以播放的音檔的網址,音樂 App 就可以用線上串流的方式播放此音樂,這個沒有實作到。

https://i.imgur.com/r7wuQ3t.gif

往右滑可以測試 TransportControl,可以測試上下一首、播放、暫停、往前/往後快轉、Repeat mode、Shuffle mode。
https://ithelp.ithome.com.tw/upload/images/20200928/201297286iEfuavCtX.png

看完 control 裡面的內容,接著來看 test 按鈕點開的頁面,可以看到目前的播放狀態是暫停,還有一些支援播放的行為。
https://ithelp.ithome.com.tw/upload/images/20200928/20129728qdPyuGtbUA.png

往下滑可以看到正在播放歌曲的相關資訊,就是在程式內所設定的播放位置、歌曲名稱、歌手名稱、長度、專輯封面的位置,拿來當作開發時 debug 的用途也是不錯,就不用特別用 log 的方式印出來。
https://ithelp.ithome.com.tw/upload/images/20200928/20129728VZcn1z21Jo.png

Queue 就是目前要播放的歌曲,可以看到裡面有十首歌,開啟 Shuffle 時,就可以看到 Shuffle 後的順序會變動,在要實作目前播放歌曲頁面的功能時,就可以拿來使用。

https://i.imgur.com/I3TYTkI.gif

再來的功能比較像 auto test,點擊測項的按鈕,綠燈就代表通過,點擊 Play From Search Test,因為沒有實作,就是紅燈的。

https://i.imgur.com/NnFgujo.gif

關於這個測試的 App 功能也介紹的差不多了,從一開始的能連線上播音樂服務(MediaBrowserService),確認播放基本功能,AudioFocus 的處理,PlayBack State 和 MetaData 的資料內容、Repeat mode 和 Shuffle mode 的內容,還有目前正在播放整個歌單的歌曲,都可以透過這個 App 來測試。


上一篇
播放器測試(1)
下一篇
總結
系列文
Android 音樂播放器自己來30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言