iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
1

經過上一篇的介紹,相信大家對音樂播放器的整體架構都有基本的了解了,再來就是到了實作的部分了,要實作出一個有完整體驗的 App,具體需要實作些什麼項目呢?
可以分成兩個部分(UI 和 Player):
UI:

  • 歌曲列表顯示:
    1.線上串流歌曲: 歌曲資訊從 Server 來的,之後播放時會透過串流的方式播,ex: Spotify、KKBOX。
    2.手機內部的音檔: 顯示系統的媒體資料夾內的音樂檔案,比較常見的是,使用者下載的音檔或是購買的音檔,或是原本在電腦的音檔匯入到手機內。

  • 播放器界面: 在使用線上串流音樂 App 或是本地端播放器時,找到想聽音樂後,點擊音樂,除了音樂開始播放外,通常會多了一個播放介面來顯示歌曲的相關資訊(歌名、歌手、總時間、目前播放進度),使用者除了可以瞭解之外,還可以控制(快轉、暫停),除了對目前這首的控制之外,還可以下一首或是上一首歌切換,並且可以調整播放模式 Repeat mode 和 shuffle mode 。

  • Notification: 當點擊播放後,系統的 Status bar 就會顯示 Notification,Notification 上可以使用的功能類似播放器介面,只是 Notification 出現的位置是固定的,提供了一個音樂 App 沒有在前景或是鎖屏時,也可以控制和了解音樂播放的方式。

  • Widget: 功能也類似 Notification,只是出現的位置是在桌面上,有預設的大小,或是可以讓使用者自由調整大小,依據大小來顯示對應的資訊。

Player 的部分:

  • 音樂播放器: 一般來說要播放音樂,第一個想到的播放器元件,就是原生的 MediaPlayer 啦,但除了這個之外 ExoPlayer 也是一個好的選擇,是一個 Google 官方開發的開源的套件,因為是套件,可以跟著 App 版本更新來做更新,就不會受限原生的 MediaPlayer,可能在不同版本的 Android 上有不同的行為,最低支援版本 4.1 ,以現在 Android 的使用版本來說是很夠了,這次參考的音樂播放器 UAMP 的播放器也是 ExoPlayer,因此這個專案也會使用 ExoPlayer 來進行開發。

  • 播放控制: 接收由使用者操作的控制事件(上/下一首, 播放, 暫停, 快轉 和切換播放模式),來做相對應的操作。

  • 監聽各種事件,ex:換歌、音量變化、有電話打進來: 控制事件除了會由使用者操作外,也有可能是自然發生的一首歌播放會播放下一首歌,這時候就要更新播放介面;又或者是突然有電話打進來,這時候就要將音樂播放暫停;有訊息傳來時,音樂就會變小聲。

  • 播放 Playlist: 通常播放時,點擊一首歌就開始播了,但一首播放完後,不會音樂就停了,還會繼續播下一首,代表著其實播放時會載入整個歌單,可能有好幾十首,這首播放了就換下一首,UI 介面上可以按下一首或是上一首,或是切換播放模式都會影響,這些歌曲的順序。

  • Shuffle / repeat 播放: 播放 Playlist 時,可以選擇照著順序播放,或著是使用隨機播放(Shuffle)。當播放完一輪時是否要繼續播。

  • 藍芽控制: 可以用耳機控制音樂播放,播放暫停,上/下一首,App 要能接收這些事件,作出對應的處理。

今天就介紹到這邊,明天由歌曲列表顯示開始介紹,準備開始寫 code 囉!


上一篇
播放器架構介紹
下一篇
歌曲列表實作 (1) - ContentProvider 觀念介紹
系列文
Android 音樂播放器自己來30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言