gpt4 book ai didi

Android SoundPool.stop 似乎不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 11:29:05 25 4
gpt4 key购买 nike

我已经创建了一个 MySoundPool 类(我将这个类用作 sigelton,但不要认为这与其他所有工作相关)。我正在初始化 SoundPool,一个 HashMap,并获取 AudioManager 的上下文。此后,我正在加载两种声音。MySoundpool 由方法 MySoundPool.playSound(int index, float rate) 使用playSound clips rate to 0.5 <= rate >= 2.0 an executes statements

float streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 
streamVolume = streamVolume / mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
mSoundPool.play(mSoundPoolMap.get(index), streamVolume, streamVolume, index, 0, rate);

到目前为止一切顺利。一切正常。不,当之前的声音仍在播放时调用 playSound 是碰巧的,我想在播放新声音之前停止它。在上面的代码 fragment 之前我尝试过

mSoundPool.stop(mSoundPoolMap.get(index));

mSoundPool.autoPause();

没有成功。声音只是继续播放到最后。任何意见将不胜感激

最佳答案

我假设您在 MySoundPool 类的构造函数中创建了一个新的 SoundPool 对象?

如果是这样,那么 SoundPool 的构造函数采用的第一个参数是同时允许的流数。例如……

mSoundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);

这将允许同时播放 10 种声音,因此只需将 10 更改为 1 即可。

编辑:stop() 方法将流 ID 作为参数,它应该是从 play() 方法返回的数字。您可以尝试将变量设置为等于 play() 返回的值,然后在停止声音时使用该变量。

关于Android SoundPool.stop 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6849159/

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