MediaPlayer详解
1.创建
static MediaPlayer create(Context context,Uri uri);
从指定的Uri来装载音频文件并返回创建的MediaPlayer对象(本地文件和网络资源均可)
static MediaPlayer create(Context context,int resid);
从resid资源Id对应的资源文件中装载音频文件,并返回新创建的MediaPlayer对象。(资源文件一般放在res/raw文件中,R.raw.xx)
上述对于只播放一次的音频文件是有效的,但由于是静态方法,所以不建议对多个音频文件多次使用上述方法,可使用new构造一个对象再进行下面步骤的配置。
2.加载音频文件
setDataSource(String Path);
指定装载path路径所代表的文件
setDataSource(FileDescriptor fd,long offset,long length);
指定装载fd所代表的文件中从offset开始,长度为lenth的文件内容
setDataSource(FileDescriptor fd);
指定装载fd所代表的文件
setDataSource(Context context,Uri uri);
指定装载uri所代表的文件
以上只是装载了播放内容,并未真正开始播放,还需调用prepare();方法准备。
3.播放音频文件
player.reset(); //重设装载配置
player.setDataSource(…); //指定装载内容
player.prepare(); //装载内容
player.start(); //播放
4.监听事件
setOnCompleteListener(MediaPlayer.OnCompeleteListener listener);
interface MediaPlayer.OnCompeleteListener{
void onCompletion(MediaPlayer mp);
}
为MediaPlayer的播放完成时间绑定事件监听器。
setOnErrorListener(MediaPlayer.OnErrorListner listener);
interface MediaPlayer.OnErrorListner {
void onError(MediaPlayer mp,int what,int extra);
}
为MeidaPlayer的播放错误事件提供事件监听器。
what是错误类型
MEDIA_ERROR_UNKNOWN 未指明的错误类型
MEDIA_ERROR_SERVER_DIED 媒体服务关闭
extra是特别的错误代码
MEDIA_ERROR_IO 文件或者网络出现操作错误
MEDIA_ERROR_MALFORMED 比特流不符合编码标准或者文件规格
MEDIA_ERROR_UNSUPPORTED 比特流符合编码标准或者文件规格,但是媒体框架不支持
MEDIA_ERROR_TIMED_OUT 一些操作超时,一般超过3-5秒
setOnPreparedListener(MediaPlayer.OnPreparedListener listener);
interface MediaPlayer.OnPreparedListener {
void OnPrepared(MediaPlayer mp);
}
为MediaPlayer调用prepare()方法时触法该监听器。
setOnSeekCompleteListener(MediaPlayer.OnSeekCompleteListener listener);
interface