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