iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 25
1
Mobile Development

Android 音樂播放器自己來系列 第 25

播放模式功能(1) - 介紹

  • 分享至 

  • xImage
  •  

今天就來看一下 TransportControl 有什麼其他功能吧,在之前的播放天數只用到了最基本的播放、暫停、上下一首、透過 Id 來播放歌曲。在找尋文件時發現,在 uamp 專案內所用的 MediaController 為 android.support.v4.media.session.MediaControllerCompat,從 package name 可以知道是 v4 的 support library,提供向下支援的版本,那就代表著有原本的平台的版本,MediaController 在版本 21 也就是 Android 5 被加入的,那要支援 Android 5 之前的版本就需要使用 Compat 版本。

關於 support library,因為有一些 v4, v7, v13 之類的命名,但最低支援的版本,也不一定是 package name 上的版號,因此 Google 就出了 AndroidX 的 library,來統整這些 library,之後在 package name 裡都是 androidx 了,不會出現版本號了。

有三種 MediaController XD,簡單整理一下

  • android.media.session.MediaController: 就是平台內的元件(最低支援版本 Android 21),可能會因為不同 Android 版本不同,而有支援上的問題(ex: prepare 在 Android 24 才加入),當 App 最低支援版本設定在比較低時,用平台元件寫起來就還會需要判斷版本,有不同行為,就變得比較麻煩。
  • android.support.v4.media.session.MediaControllerCompat: 功能同上面的元件,但提供向前支援的版本,這樣在 Android 21 也可以使用 prepare 了。在 uamp 專案內是使用這個方式來取得 MediaController。
  • androidx.media2.session.MediaController: Google 有提供一份升級到 AndroidX 的轉換表,哪些 Support library 要轉換到對應的 AndroidX library,還蠻多的 library 都有對應可轉換的版本,但看到 MediaController 和 MediaSession 並沒有推薦轉換到 AndroidX 的版本,兩邊都一樣 XD,有可能還在開發中?之後等這邊公布轉換,再進行更換吧。
    https://ithelp.ithome.com.tw/upload/images/20200925/201297284Y223Ncsfc.png

看完比較後,可以知道在這個時間點,用 MediaControllerCompat 是最好的選擇,英文會說是 Best practice XD

回歸正題,來看一下 TransportControl 有什麼其他的功能吧 XD。

  • fastForward: 快轉,看影片時感覺比較會用到 XD。
  • rewind: 倒回,也是看影片比較會用到。
  • seekTo: 指定秒數播放,但通常都是拖拉播放的進度條,然後再換成秒數給播放器。
  • setRating: 評分這首歌,結果會存到系統中。
  • setRepeatMode: 設定重複播放的模式。在點擊播放時,都不會只有播放一首歌,會播放一整張歌單,在這張歌單播放完時,會繼續重頭播,或是停下來,就可以透過這個模式來設定。
  • setShuffleMode: 在播歌單時,是照著歌單上面的順序播,或者時有個隨機的順序來播,可以透過這個模式設定,可以隨機播放其實還蠻重要的,不會每次都從歌單的上半部開始聽 XD。
  • skipToQueueItem: 在待播放清單中(Queue),直接播放指定的這首歌。
  • setPlaybackSpeed: 調整播放的速度,可以加速或是減速,在播放影片上大家應該有使用的經驗。不過這個 API 比較特別是在 AndroidX 版本上才有,之後升級到 AndroidX 版本上就可以用了。那現在要實作控制播放速度還是有方法,因為 ExoPlayer 本身有支援這個功能,不過需要透過 PlaybackParameters 參數來設定,但就不能透過 TransportControl,要自己串接將事件傳給 ExoPlayer 來做改動。

就先介紹這些功能吧,明天會挑幾個比較常見的功能來實作,明天應該會是實作的最後一天了,再來要講測試的部分啦!


上一篇
播放介面實作(9) - ShortCut 頁面(功能)
下一篇
播放模式功能(2) - 實作
系列文
Android 音樂播放器自己來30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言