我有几个GridView
个项目在选中时会播放一个小的.ogg文件。它们是使用SoundPool
类播放的,但是这个类似乎非常间歇 - 有时声音播放,有时它不会播放;没有任何模式,所以我无法弄清楚它为什么这样做。
这是我的代码:
public void playSelectionSound(){
SoundPool sp = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
int soundId = sp.load(this, R.raw.char_select, 1);
sp.play(soundId, 1, 1, 0, 0, 1);
}
答案 0 :(得分:1)
我最终转而使用MediaPlayer而不是SoundPool:
MediaPlayer mp = MediaPlayer.create(this, R.raw.char_select); //open media player
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
mp.start(); //play the sound
每次都有效。
答案 1 :(得分:0)
由于负载可能需要一段时间,因此您不应该在加载后立即尝试播放它。相反,您应该使用SoundPool.OnLoadCompleteListener()并在该回调中播放它。在这里你可以确定soundpool已成功加载。