【发布时间】:2010-03-15 08:32:10
【问题描述】:
我有一个在其点击监听器上播放音频文件的按钮。如果在播放音频文件时一次又一次地单击按钮,则应用程序崩溃。解决办法是什么?
这里有一些代码供参考:
private OnClickListener btnMercyListener = new OnClickListener()
{
public void onClick(View v)
{
// Toast.makeText(getBaseContext(),
// "Mercy audio file is being played",
// Toast.LENGTH_LONG).show();
if (status==true)
{
mp.stop();
mp.release();
status = false;
}
else
{
mp = MediaPlayer.create(iMEvil.this,R.raw.mercy);
//mp.start();
try{
mp.start();
status= true;
//mp.release();
}catch(NullPointerException e)
{
Log.v("MP error",e.toString());
}
}
mp.setOnCompletionListener(new OnCompletionListener(){
// @Override
public void onCompletion(MediaPlayer arg0) {
mp.release();
status = false;
}
}
);
}
};
【问题讨论】:
-
为什么不尝试捕获一个异常?
-
它永远不会在模拟器上显示我。我必须在设备上测试它。当按钮连续点击 8 次或更多次时,应用程序就会崩溃。我使用了一个名为 status 的公共布尔变量,并尝试将其值设置为仅在未播放现有声音时播放。想知道 isPlaying() 布尔方法是否可以帮助我?我现在卡住了。有什么线索吗?
-
如果应用程序崩溃我很确定它会抛出异常,所以尝试捕获异常并将其写入日志然后调试异常。
标签: java android audio android-mediaplayer