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

时间:2014-09-01 07:18:46

标签: 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();
    }

我已经定义了应该让声音连续播放的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不起作用,我应该如何连续播放声音?

2 个答案:

答案 0 :(得分:5)

当您使用create()实例化MediaPlayer时,它会以准备状态返回,您不能在其上调用prepare()。在您的情况下,这会抛出异常,因此不会调用mp.setLooping(true)

答案 1 :(得分:-1)

mp = MediaPlayer.create(MainActivity.this, R.raw.alarm);
mp.start();
mp.setLooping(true);