我正在尝试连续播放beeb声音,直到用户按下按钮。我将alarm.mp3文件添加到raw folder
。但是这个媒体文件没有执行。我得到了IllegalStateException
。
这是我的代码:
MediaPlayer mp = new MediaPlayer();
try{
mp.release();
mp = MediaPlayer.create(this,R.raw.alarm);
mp.prepare();
mp.setVolume(1f, 1f);
mp.setLooping(true);
mp.start();
}catch(IllegalStateException e){
System.out.println("Test Exception "+e);
}catch (IOException e) {
// TODO: handle exception
System.out.println("Test Exception "+e);
}
我将这个mp3文件添加到asset folder
并尝试播放它,但我仍然得到相同的异常。
这是我使用的代码:
MediaPlayer mp = new MediaPlayer();
try{
mp.release();
AssetFileDescriptor afd=context.getAssets().openFd("alarm.mp3s");
mp.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
mp.prepare();
mp.setVolume(1f, 1f);
mp.setLooping(true);
mp.start();
}catch(IllegalStateException e){
System.out.println("Test Exception "+e);
}catch (IOException e) {
// TODO: handle exception
System.out.println("Test Exception "+e);
}
任何帮助都会得到满足。如果您需要更多信息,请告诉我。
更新
try{
mp = MediaPlayer.create(context,R.raw.alarm);
mp.setVolume(1f, 1f);
mp.setLooping(true);
mp.start();
}catch(IllegalStateException e){
System.out.println("Test Exception "+e);
}
当用户点击按钮时:
mp.stop();
if(!mp.isPlaying()){
mp.release();
}
这是一个例外:
10-04 12:50:06.105: I/System.out(14074): Test Exception java.lang.IllegalStateException
答案 0 :(得分:1)
没有看到堆栈跟踪,这只是一个假设。但是你直接打电话
mp.release();
创建一个之后。第二个是您使用mediaPlayer
创建new MediaPlayer()
和create()
。如果您使用new MediaPlayer()
和create()
方法,则不需要mp.create()
,您无需致电prepare()
。我会这样试试:
mp = MediaPlayer.create(this,R.raw.alarm);
mp.setVolume(1f, 1f);
mp.setLooping(true);
mp.start();
如果mediaPlayer完成,只需致电release
即可。与API中描述的release()
之后的MediaPlayer
一样,MediaPlayer
处于最终状态:
一旦MediaPlayer对象处于End状态,它就不再是 使用过,没有办法把它带回任何其他州。
您应该遵循API,我知道这很难阅读,但了解$(".vv div:first-child").click(function(){
$("tr").append("<td></td><td></td><td></td><td></td><td></td><td></td><td></td>");
});
的所有内容非常重要。