我有几个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);
}发布于 2016-05-20 15:21:15
最后,我转而使用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每次都管用。
发布于 2016-05-19 02:06:00
您不应该尝试在加载后立即播放它,因为加载可能需要时间。相反,您应该使用SoundPool.OnLoadCompleteListener()并在回调中播放它。在这里,您可以确保声音池已成功加载。
https://stackoverflow.com/questions/37311614
复制相似问题