1. 程式人生 > >媒體播放器-MediaPlayer

媒體播放器-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()設定播放位置的時候回撥。
參考:https://blog.csdn.net/u011558902/article/details/41013505