如何在soundPool之后清理?应用程序被杀后,我的循环声音仍在播放
//我的onStop()onPause()是相同的 声音一直持续到重启。
public void onStop(){
soundPool.stop(curs);
}
public int playSound(int sound, int loop) {
if (curs != sound)
{
curs = sound;
AudioManager mgr = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
float streamVolumeCurrent = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
float streamVolumeMax = mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = streamVolumeCurrent / streamVolumeMax;
return soundPool.play(soundsMap.get(sound), volume, volume, 1, loop, 1);
}
return curs;
}
// is how I call it in a runnable class
curs=playSound(cur,-1);
答案 0 :(得分:0)
致电playSound
时,您永远不会停止旧声音。如果多次调用playSound
,则会播放两个声音,当您退出时,您只会取消其中一个声音。一种解决方案是保留您开始的所有声音ID。或者,如果您一次只需要一个声音,请在开始下一个声音之前更改代码以取消当前声音。
if (curs != sound)
{
soundPool.stop(curs);
curs = sound;
// ...
}