使用SoundPool Android播放相同声音的声音

时间:2015-01-21 13:09:51

标签: java android soundpool

当我点击我的ImageButton时,它会完美地通过SoundPool播放声音,但是当我播放该声音时再次点击它时,它会再次播放该声音,但会播放它。< / p>

有没有办法让它不能播放声音?换句话说,它与其他声音不重叠?

这是我正在调用的方法

public void playSound(String sound)
{
    int path = getResources().getIdentifier(sound, "raw", getPackageName());


    int MAX_STREAMS = 1;
    SoundPool soundPool = new SoundPool(MAX_STREAMS, AudioManager.STREAM_MUSIC, 0);
    soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
        @Override
        public void onLoadComplete(SoundPool soundPool, int soundId, int status) {
            int loop = 0;
            int priority = 0;
            float rate = 1.f;
            soundPool.play(soundId, 1, 1, priority, loop, rate);
        }
    });
    soundPool.load(this, path, 1);

    AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

    int currentVolume = audio.getStreamVolume(AudioManager.STREAM_MUSIC);
}

1 个答案:

答案 0 :(得分:0)

private static SoundPool pool;之前创建onCreate

然后在您的函数中,检查not null并释放该实例。基本上有一个soundpool实例,而不是每次playSound()都创建一个

if(pool!=null)
pool.release()
else
pool = new SoundPool(MAX_STREAMS, AudioManager.STREAM_MUSIC, 0);

然后玩。