按钮单击声音MediaPlayer如果按钮按下过快则崩溃

时间:2013-12-14 09:52:01

标签: android button audio android-mediaplayer assets

对此问题提出了类似的问题,并且我已经查看了其他答案。他们所说的是,为了播放声音(在本例中为“tock.wav”,它位于assets文件夹中),只要单击一个按钮,就应该执行以下操作:

public void onClick(View button) {
    playButtonClickSound();
}

private void playButtonClickSound() {
    if (mMediaPlayer.isPlaying()) {  
        mMediaPlayer.stop();
        mMediaPlayer.reset();
    }

    try {
        AssetFileDescriptor afd;
        afd = getAssets().openFd("tock.wav");
        mMediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
        mMediaPlayer.prepare();
        mMediaPlayer.start();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

这有道理吗?这似乎是一个很好的方法。问题在于,除非用户在彼此之后非常快速地按下按钮,否则这是有效的。然后在某个时刻,声音停止播放。如果您等待几分钟再试一次,它会再次播放。当然这不是我想要的。按钮点击声音应始终有效,而不仅仅是用户没有点击太快。

那么有没有人知道造成这种情况的原因是什么?

1 个答案:

答案 0 :(得分:1)

尝试使用此

MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1);
mediaPlayer.start(); // no need to call prepare(); create() does that for you