最近在寫一款內置簡單的音頻播放器的應用,寫一點關於音頻播放器一些要注意的事項
1、關於按鍵KeyEvent.KEYCODE_BACK的處理,一定要對MediaPlayer對象是否正在播放以及是否爲空(null&&isplay()),進行判斷,並對其進行釋放
2、關於播放按鈕的處理,一般情況下,點擊播放按鈕後,音頻開始播放,播放按鈕的狀態應該會變成暫停圖標或文字,建議可以寫幾個常量作控制狀態,點擊暫停按鈕後,按鈕狀態變爲暫停狀態(pause),圖標又變爲播放按鈕的圖標
3、因爲播放按鈕的特殊性,建議設置成static靜態的,以確定在播放類的對播放進度監聽時,如果播放完,按鈕圖標要重新回到播放圖標(因爲點擊播放按鈕後,圖標已經變成暫停圖標了)
4、上一首、下一首的處理,要改變點擊播放按鈕時,重新加載的音頻文件
5、建議最好對音頻播放的各個狀態進行監聽,MediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener()——音頻是否出錯,MediaPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener()——音頻是否開始緩衝,
MediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener()——音頻是否開始準備,
MediaPlayer.setOnCompletionListener(new OnCompletionListener()——音頻是否播放完成,這幾個監聽也可以利於我們進行對程序進行排錯。
6、音頻播放最好單獨開一個線程,否則你不想自己的應該因爲只有一個線程被阻塞吧,而不能進行其他操作吧
7、因爲MediaPlayer本身的原因,你調用start()播放方法的時候,他總是會延遲那麼1-2秒,所以你可以用seekTo()方法跳過1000ms
8、有時候,如果不處理,播放音樂默認是正在播放的時候,才能對其音量的大小,作用音量鍵調整,那麼我們可以用下面這句話,獲取音頻服務,直接去控制,音樂沒有播放的時候,也可以調整好音量的大小
AudioManager am = (AudioManager)Context.getSystemService(Context.AUDIO_SERVICE);
/ /獲取音頻服務然後強轉成一個音頻管理器,後面方便用來控制音量大小用
Activity.setVolumeControlStream(AudioManager.STREAM_MUSIC);
// 設定調整音量爲媒體音量,當暫停播放的時候調整音量就不會再默認調整鈴聲音量了
9、針對音樂播放的方法,一定要注意一點,就是在對MediaPlayer對象初始化過,之後,一定要執行一下reset(),重置MediaPlayer對象爲初始化狀態