gpt4 book ai didi

Android Soundpool - 循环播放异常

转载 作者:行者123 更新时间:2023-12-03 00:10:40 25 4
gpt4 key购买 nike

我在使用 SoundPool 和 .OGG 文件播放循环声音时遇到问题。我设置了这个 HashMap 来查找与名称关联的声音并播放/停止它

    public void playLoopSound(String soundName){

currentSound = (Integer) soundMap.get(soundName);

if(currentSound != -1){
try{
Logger.log("Playing Loop Sound: " + currentSound);
loopingSound = soundPool.play(currentSound, 1, 1, 0, -1, 1);
} catch (Exception e) {
Logger.log("Sound Playing Error: " + e.getMessage());
}
} else {
Logger.log("Sound Not Found");
}
}

public void stopLoopSound(){
soundPool.stop(loopingSound);
loopingSound = 0;
}

这个设置工作正常,我在角色开始行走时启动循环,并在它停止行走时停止循环。

然而,声音会随机停止播放,通常在使用后一分钟左右(打开和关闭)......

有没有其他人遇到过与 SoundPool 和循环声音类似的问题?

最佳答案

阅读有关 Soundpool 的文档会清楚很多:

- 播放一个声音,你传递一个指向加载声音的 int。此方法(以及其他开始播放声音的方法)soundpool.play(int) 返回一个 int,它引用现在播放声音的 threadID。

- 当您想停止声音(或循环声音)时,您必须使用刚开始播放声音时返回的 threadID 的 int,而不是声音本身的 int!

然后在 soundpool 类中,设置一个私有(private) int threadIDInt = mSoundPool.play/setloop/whatever(int soundtobeplayed, int/float volumeleft, int/float volumeright, float speed, int loopornot); [注意:论点有点编造;看看他们]

然后停止声音(或暂停,或将其设置为循环或不循环)你传递 mSoundPool.stop(threadIDINT);

TLDR:表示您的声音的 int 与用于表示当前声音正在播放的流的内部 int soundpool 之间存在差异。

关于Android Soundpool - 循环播放异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9118531/

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