关于Mediaplayer的reset()的疑问。。。。

fcj124648987 2012-12-03 05:17:23
首先很感谢CSDN论坛各位大虾对我的帮助、已经让我解决了不少问题!!

这次的问题还是在Mediaplayer上、reset()、让我不太明白、
在下面java代码的第78行。有一个被注销的reset()、我添加reset的目的是想、如果Mediaplayer在上次播放时出现了错误、我重新启动的时候能够重置一下、保证第二次不出错。

java代码:

public class MainActivity extends Activity implements MediaPlayer.OnCompletionListener {
private ImageButton play1,pause1,stop1;
MediaPlayer player=new MediaPlayer();
private String path="/sdcard/music/奔.mp3";
private Button sousuo;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
play1=(ImageButton)findViewById(R.id.play);
pause1=(ImageButton)findViewById(R.id.pause);
stop1=(ImageButton)findViewById(R.id.stop);
sousuo=(Button)findViewById(R.id.sousuo);
play1.setEnabled(true);
pause1.setEnabled(false);
stop1.setEnabled(false);

setMedia();

play1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
playing();
}
});
stop1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
play1.setEnabled(true);
stop1.setEnabled(false);
pause1.setEnabled(false);
if(player.isPlaying()){
player.stop();
//player.reset();
try {
player.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
pause1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
play1.setEnabled(true);
stop1.setEnabled(true);
pause1.setEnabled(false);
player.pause();
}
});
sousuo.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("Audio/*");
startActivityForResult(intent, 0);
}
});

}
public void setMedia(){

try {
// player.reset();
player.setDataSource(path);
player.prepare();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void onActivityResult(int i,int b,Intent intent){
if(intent!=null){
Uri uri=intent.getData();
String p=uri.toString().substring(52);
System.out.println(p);
System.out.println("path="+path);
path=p;
setMedia();
System.out.println(path+"=path");
}
}
public void playing(){

if(path!=null&& !path.equals("")){
play1.setEnabled(false);
stop1.setEnabled(true);
pause1.setEnabled(true);
player.start();
}
}
@Override
public void onCompletion(MediaPlayer arg0) {
// TODO Auto-generated method stub
player.release();
play1.setEnabled(true);
stop1.setEnabled(false);
pause1.setEnabled(false);

}
}



要是去掉第78行的双斜线会报错:

看错误信息、提示是在缓冲的时候出现了错误、
我想知道,原因。
第二就是、在什么地方使用reset()、
reset之后具体Mediaplayer处于一个什么状态、
...全文
801 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzzhenu 2012-12-04
  • 打赏
  • 举报
回复
时序问题吧,都是异步的
fcj124648987 2012-12-03
  • 打赏
  • 举报
回复
没人理吗、、、、、
fcj124648987 2012-12-03
  • 打赏
  • 举报
回复
引用 3 楼 dr8737010 的回复:
按照这个图、我的reset()应该 是没有问题的啊。。。。怎么会不行、、我刚刚试了一个网上下载的代码、他在stopbutton监听器里面使用了reset(),没用stop、、、结果还是出现了刚刚上面的错误提示信息、、、 让我很郁闷的是、在他的代码里面startbutton的监听器里面有reset()、能够正常执行、、、、
BadPattern 2012-12-03
  • 打赏
  • 举报
回复
好像能打开,你等一会图片就打开了,可能比较慢
BadPattern 2012-12-03
  • 打赏
  • 举报
回复
怎么会打不开?? 妹的啊,图片上传不了,就是谷歌的MediaPlayer类的API说明,里面有一副图,很详细的说明了MediaPlayer调用某个方法以后会经历到什么状态。
BadPattern 2012-12-03
  • 打赏
  • 举报
回复
fcj124648987 2012-12-03
  • 打赏
  • 举报
回复
引用 1 楼 dr8737010 的回复:
要看报的什么错,就要看android C++ framework层的代码了,一般应用不需要关心,除非跟踪一些很难解决的问题。 "reset之后具体Mediaplayer处于一个什么状态"请看如下链接 http://developer.android.com/intl/zh-CN/reference/android/media/MediaPlayer.html
你给的链接打不开、、、
BadPattern 2012-12-03
  • 打赏
  • 举报
回复
要看报的什么错,就要看android C++ framework层的代码了,一般应用不需要关心,除非跟踪一些很难解决的问题。 "reset之后具体Mediaplayer处于一个什么状态"请看如下链接 http://developer.android.com/intl/zh-CN/reference/android/media/MediaPlayer.html

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧