当我点击我的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);
}
答案 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);
然后玩。