其他分享
首页 > 其他分享> > Android SoundPool.stop似乎不起作用

Android SoundPool.stop似乎不起作用

作者:互联网

我创建了一个类MySoundPool(我使用这个类作为sigelton,但不认为这是相关的,因为其他所有工作).我正在初始化SoundPool,一个HashMap,并获取AudioManager的上下文.此后我正在加载两个声音.
MySoundpool由MySoundPool.playSound方法使用(int index,float rate)
playSound剪辑率为0.5< = rate> = 2.0执行语句

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,我想在播放新声音之前停止播放.在上面的代码片段之前,我试过了

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

mSoundPool.autoPause();

没有成功.声音继续发挥到底.
任何意见将不胜感激

解决方法:

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

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

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

这将允许一次播放10个声音,所以只需将10改为1即可.

编辑:
stop()方法将stream id作为参数,该参数应该是play()方法返回的数字.您可以尝试设置一个等于play()返回的变量,然后在停止声音时使用该变量.

标签:android,soundpool
来源: https://codeday.me/bug/20190712/1442498.html