gpt4 book ai didi

java - 使用 SoundPool Android 通过相同的声音播放声音

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:59 25 4
gpt4 key购买 nike

当我点击我的ImageButton时,它会通过SoundPool完美地播放声音,但是当我在播放声音时再次点击它时 - 它会再次播放该声音,但会覆盖它。

有什么办法可以让它不播放声音吗?换句话说,让它不与其他声音重叠?

这是我正在调用的方法

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

最佳答案

onCreate 之前创建一个 private static SoundPool pool;

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

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

然后玩。

关于java - 使用 SoundPool Android 通过相同的声音播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28068069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com