对此问题提出了类似的问题,并且我已经查看了其他答案。他们所说的是,为了播放声音(在本例中为“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();
}
}
这有道理吗?这似乎是一个很好的方法。问题在于,除非用户在彼此之后非常快速地按下按钮,否则这是有效的。然后在某个时刻,声音停止播放。如果您等待几分钟再试一次,它会再次播放。当然这不是我想要的。按钮点击声音应始终有效,而不仅仅是用户没有点击太快。
那么有没有人知道造成这种情况的原因是什么?
答案 0 :(得分:1)
尝试使用此
MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1);
mediaPlayer.start(); // no need to call prepare(); create() does that for you