Android中的音頻播放主要藉助於MediaPlayer類來實現的,貌似他很神祕,但其實很簡單,咱們一塊兒來看看他的廬山真面目吧。
java
一:MediaPalyer的生命週期
網絡
下面的這幅圖,是在網上找的,這裏咱們只針對其中的幾個特殊的方法,進行說明:
ide
1:當一個MediaPlayer建立或者調用reset()方法以後,他處於空閒IDLE狀態,在調用release以後,纔會處於結束end狀態
oop
2:任何一個MediaPlayer都必須處於準備狀態,而後纔開始播放。要開始播放必須調用start方法。
this
3:當MediaPlayer對象正在播放時,能夠進行暫停與中止等操做,pause方法暫停,stop方法中止。處於暫停態的MediaPlayer能夠經過start方法恢復播放,即從暫停的位置處繼續播放;而處於中止態的必須經過prepare使之處於準備狀態後,而後調用start方法開始播放
spa
二:經常使用方法
3d
1:構造方法
視頻
(1)static MediaPlayer create(Context context,Uri uri):經過URI指定的音頻建立一個多媒體播放器
對象
(2)static MediaPlayer create(Context context,int resId):經過資源ID建立一個多媒體播放器blog
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(); } |