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()设置播放位置的时候回调。