连续播放声音,直到用户停止

mas*_*mic 0 android media-player

我正在开发一个测试应用程序,当自动测试过程结束时,播放警报声以通知操作员.

这个声音是一个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();
    }
Run Code Online (Sandbox Code Playgroud)

我已经定义了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);
}
Run Code Online (Sandbox Code Playgroud)

所以,如果mp.setLooping不能正常工作,我应该如何连续播放声音呢?

Mik*_* M. 5

当您使用实例化MediaPlayer时create(),它将以准备好的状态返回,您不能对其进行调用prepare().在你的情况下,这是抛出异常,因此mp.setLooping(true)没有被调用.