Android中的音頻播放主要藉助於MediaPlayer類來實現的,貌似他很神祕,但其實很簡單,我們一起來看看他的廬山真面目吧。
一:MediaPalyer的生命週期
下面的這幅圖,是在網上找的,這裏我們只針對其中的幾個特殊的方法,進行說明:
1:當一個MediaPlayer創建或者調用reset()方法之後,他處於空閒IDLE狀態,在調用release之後,纔會處於結束end狀態
2:任何一個MediaPlayer都必須處於準備狀態,然後纔開始播放。要開始播放必須調用start方法。
3:當MediaPlayer對象正在播放時,可以進行暫停與停止等操作,pause方法暫停,stop方法停止。處於暫停態的MediaPlayer可以通過start方法恢復播放,即從暫停的位置處繼續播放;而處於停止態的必須通過prepare使之處於準備狀態後,然後調用start方法開始播放
二:常用方法
1:構造方法
(1)static MediaPlayer create(Context context,Uri uri):通過URI指定的音頻創建一個多媒體播放器
(2)static MediaPlayer create(Context context,int resId):通過資源ID創建一個多媒體播放器
2:獲得屬性
(1)int getCurrentPosition():得到當前的播放位置
(2)int getDuration():獲得播放文件的總時長
(3)int getVideoheight():獲得視頻的高度
(4)int getVideoWidth():獲得視頻的寬度
3:判斷狀態
(1)boolean isLooping():是否循環播放
(2)boolean isPlaying():是否正在播放
4:設置屬性
(1)void seekTo(int mesc):設置指定的播放位置(以毫秒爲單位)
(2)void setDateSourece(String path):根據路徑設置多媒體數據的來源
(3)void setDateSourece(FileDescriptor file):根據FileDescriptor設置多媒體數據的來源
(4)void setDateSourece(Uri uri):根據URI設置多媒體數據的來源
5:常用事件
(1)void prepare():準備資源
(2)void start():開始播放
(3)void pause():暫停播放
(4)void stop():停止播放
三:音頻的播放
根據音頻的來源,可以分爲三種,分別爲本地資源(應用程序內部)、內部的URL指向的資源(SDcard中)和外部的URL指向的資源(網絡中)。這裏我們只說明其中的第一種方式
◆本地資源
(1)在res文件夾下創建文件名必須爲raw的文件,來存放音頻等。根據資源創建MediaPlayer
MediaPlayer mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.shijian); |
(2)調用MediaPlayer的start方法播放音樂
mediaPlayer.start(); |
(3)結果:單擊start按鈕之後,播放音樂。(這裏沒有做停止操作,所以不要輕易嘗試哦)
四:簡單的音樂播放器的製作
◆功能:在頁面上放置三個按鈕,實現單擊start開始播放,單擊pause後暫停播放,在單擊start後從停止的地方開始播放,單擊stop後停止播放。
◆具體實現:
(1)根據本地資源,創建MediaPlayer對象
mediaPlayer = MediaPlayer.create(this, R.raw.shijian); |
(2)爲三個按鈕添加監聽事件
@Override public void onClick(View arg0) { switch (arg0.getId()) { case R.id.start: mediaPlayer.start();//播放音樂 break; case R.id.pause: mediaPlayer.pause();//暫停播放 break; case R.id.stop://停止播放的實現 mediaPlayer.pause();//先暫停 mediaPlayer.seekTo(0);//然後設置文件的播放其實位置 break; } } @Override protected void onDestroy() { mediaPlayer.stop();//實現的是當應用程序退出之後,音樂的全部停止播放 super.onDestroy(); } |
◆結果:真正的實現了Mediaplayer的生命週期中比較重要的幾個時期。可以自運行試一下。