关于MediaPlay播放,是调用底层的播放器,只需要按照Mediaplay的状态图一步步写就没问题了。
eclipse里选择MediaPlayer这个类名,在下面的javadoc中会显示这个图。
1、先把play对象new 出来。
MediaPlayer play=new MediaPlayer();
2、现在达到了Idle状态,调用setDataSource到达Initialized。
play.setDataSource("/mnt/sdcard/abc.mp3");//String path
3、prepare达到准备态。
play.prepare();
4、现在就可以调用start、pause、stop方法了。
play.start();//pause、stop
在这里可以看得到,start和pause是可以互相转换的,而一旦stop以后便不能start,需
要重新prepare才可以执行start。
重点来了!
其实这个是比较规矩的一种,很多时候我们是将背景音乐放入资源res中的,这里需要在res创建新的folder,起名raw。
将资源放入里面即可。
之前所有的操作都可以不用管,直接一步到位。
play=MediaPlayer.create(this, R.raw.gaobaiqiqiu);
对象都可以不创建,之后的start那些一样可以调用。
注意:
因为MediaPlay是调用底层设备,所有是脱离于Activity的,app关闭以后还会继续执行播放,要想同步app,需要在Activity的ondestroy方法中关闭play。
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if(play!=null)
{
play.reset();
play.release();
}
}
一般最好先reset之后再释放该对象。
还有一些设置,
play.seekTo 跳到某个时间点
play.setOnCompletionListener 设置单曲播放结束后的监听
play.setOnErrorListener 设置播放错误后的监听,例如直接播放下一首
play.setLooping 是否设置循环