我创建了一个类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.stop似乎不起作用全部内容,希望文章能够帮你解决Android SoundPool.stop似乎不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)