在soundPool之后清理(应用程序被杀后循环声仍然播放)

时间:2013-01-30 02:27:34

标签: java android soundpool

如何在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);

1 个答案:

答案 0 :(得分:0)

致电playSound时,您永远不会停止旧声音。如果多次调用playSound,则会播放两个声音,当您退出时,您只会取消其中一个声音。一种解决方案是保留您开始的所有声音ID。或者,如果您一次只需要一个声音,请在开始下一个声音之前更改代码以取消当前声音。

if (curs != sound)
{
  soundPool.stop(curs); 
  curs = sound;   
  // ... 
}