Android SoundPool声音播放时断时续

Android SoundPool sound playback intermittent

我有几个 GridView 项目在被选中时播放一个小的 .ogg 文件。它们是使用 SoundPool class 播放的,但是这个 class 似乎非常断断续续 - 有时播放声音,有时不播放;这没有模式,所以我很难弄清楚它为什么这样做。

这是我的代码:

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);
    }

您不应尝试在加载后立即播放它,因为加载可能需要一些时间。相反,您应该使用 SoundPool.OnLoadCompleteListener() 并在该回调中播放它。到这里就可以确定soundpool加载成功了。

我最终改用 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

每次都有效。