我正在开发一个测试应用程序,当自动测试过程结束时,会播放警报声以通知操作员。
此声音为3秒持续时间闹钟铃声,我需要循环播放,直到用户触摸手机屏幕。
这是我实施媒体播放器的方式:
mp = MediaPlayer.create(MainActivity.this, R.raw.alarm);
try {
mp.prepare();
mp.setLooping(true);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mp.start();
}
我已经定义了应该让声音连续播放的mp.setLooping
,但它并没有。
然后,停止触摸屏幕的声音:
@Override
public boolean onTouchEvent (MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
/*If sound is playing, stops*/
if (mp.isPlaying()) {
mp.stop();
}
return true;
}
return super.onTouchEvent(event);
}
因此,如果mp.setLooping
不起作用,我应该如何连续播放声音?
答案 0 :(得分:5)
当您使用create()
实例化MediaPlayer时,它会以准备状态返回,您不能在其上调用prepare()
。在您的情况下,这会抛出异常,因此不会调用mp.setLooping(true)
。
答案 1 :(得分:-1)
mp = MediaPlayer.create(MainActivity.this, R.raw.alarm);
mp.start();
mp.setLooping(true);