一、播放网络音频/SD卡上的音频
MediaPlayer mediaPlayer=new MediaPlayer();
String url="http://xxxxxxxx";
Uri uri=Uri.parse(url);
try{
mediaPlayer.setDataSource(context,uri);
//mediaPlayer.setDataSource(context,"sd/music.mp3");
mediaPlayer.prepare();
mediaPlayer.start();
}catch(Exception e){
e.printStackTrace();
}
二、本地播放
MediaPlayer mediaPlayer=MediaPlayer.create(this,R.raw.music);
监听,按钮。
启动:
try{
if(mediaPlayer!=null){
mediaPlyaer.stop();
}
mediaPlayer.prepare();
mediaPlayer.start();
}catch(Exception e){
e.printStackTrace();
}
暂停:
try{
if(mediaPlayer!=null){
mediaPlayer.pause();
}
}catch(Exception e){
e.printStackTrace();
}
停止:
try{
if(mediaPlayer!=null){
mediaPlayer.stop();
}
}catch(Exception e){
e.printStackTrace();
}
播放完成的监听:
mediaPlayer.setOnCompletionListener(new OnCompletionListener(){
@Override
public void onCompletion(MediaPlayer mp){
try{
mp.release();
}catch(Exception e){
e.printStackTrace();
}
}
});
错误时的监听:
mediaPlayer.setOnErrorListener(new OnErrorListener(){
@Override
public boolean onError(MediaPlayer mp,int arg1,int arg2){
try{
mp.release();
}catch(Exception e){
e.printStackTrace();
}
return false;
}
});
最后在Activity的onDestroy()方法里面:
@Override
protected void onDestroy(){
if(meidaPlayer !=null){
meidaPlayer.release();
}
super.onDestroy();
}
三、对播放器的主要控制方法:
seekTo()是定位方法,可以让播放器从指定位置开始播放,需要注意的是该方法是个异步方法,也就是说该方法返回时并不意味着定位完成,尤其是播放的网络文件,真正定位完成时会触发OnSeekComplete.onSeekComplete(),如果需要时可以调用setOnSeekCompleteListener(OnSeekCompleteListener)设置监听来处理。
reset()可以使播放器从Error状态中恢复过来,重新会到Idle状态。