Android SoundPool声音播放间歇性

时间:2016-05-18 23:23:59

标签: android soundpool

我有几个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);
    }

2 个答案:

答案 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已成功加载。