媒體播放器-MediaPlayer
Android 的多媒體框架支援各種常見的多媒體型別,對於音訊視訊的支援均需要使用到MediaPlayer類。
一、獲取MediaPlayer物件的兩種方式:
1、MediaPlayer player=new MediaPlayer();
2、MediaPlayer player=MediaPlayer.create(Context context,int resid);//不用呼叫setDataSource()設定資源。
二、設定要播放的檔案:
1、應用中自帶的資源
例如:MediaPlayer player=MediaPlayer.create(Context context,int resid);
2、儲存在SD卡或其他檔案路徑下的資源
例如:player.setDataSource("sdcard/emulated/0/video.mp4");
3、從網路上獲取資源
player.setDataSource(http://vt1.doubanio.com/201806051925/5a95ce9e62a5473be84dfbaa1b69302b/view/movie/M/402300072.mp4);
MediaPlayer的setDataSource一共四個方法:
setDataSource (String path)
setDataSource (FileDescriptor fd)
setDataSource (Context context, Uri uri)
setDataSource (FileDescriptor fd, long offset, long length)
其中使用FileDescriptor時,需要將檔案放到與res資料夾平級的assets資料夾裡,然後使用:
AssetFileDescriptor fileDescriptor = getAssets().openFd("rain.mp3");
m_mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),fileDescriptor.getStartOffset(), fileDescriptor.getLength());
來設定datasource
三、MediaPlayer的主要方法:
- void statr():開始或恢復播放。
- void stop():停止播放。
- void pause():暫停播放。
- int getDuration():獲取流媒體的總播放時長,單位是毫秒
- int getCurrentPosition():獲取當前流媒體的播放位置,單位毫秒
- void seekTo(int msec):設定當前MediaPlayer的播放位置,單位是毫秒
- void setLooping(boolean looping):設定是否迴圈播放。
- void isPlaying():判斷是否正在播放
- void prepare():同步方式裝在流媒體檔案
- void prepareAsync():非同步方式裝在流媒體檔案
- void release():回收流媒體檔案
- void setAudioStreamType(int streamtype):設定播放流媒體型別。
- void setWakeMode(Context context,int mode):設定CPU喚醒狀態
- void setNextMediaPlayer(MeidaPlayer next):設定當前流媒體播放完畢,下一個播放的MediaPlayer
除了以上方法,MediaPlayer還提供了一下幾個事件的回撥方法setOnCompletionListener(MediaPlayer.OnCompletionListener listener):當流媒體播放完畢的時候回撥。
- setOnCompletionListener(MediaPlayer.OnCompletionListener listener):當流媒體播放完畢的時候回撥。
- setOnErrorListener(MediaPlayer.OnErrorListener listener):當播放中發生錯誤的時候回撥。
- setOnPreparedListener(MediaPlayer.OnPreparedListener listener):當裝載流媒體完畢的時候回撥。
- setOnSeekCompleteListener(MediaPlayer.OnSeekCompleteListener listener):當使用seekTo()設定播放位置的時候回撥。