いくつかのイベントに反応するプロセスがあります。playFromList()
が呼び出されると、soundpool からサウンドが再生されます。次に、スレッドでフラグを設定すると、3,5秒間サウンドが再生されません。
私が得たのは、音を鳴らし、3.5秒待つことです。playFromList()
が 3.5 秒で 5 回呼び出された場合でもSoundManager.playSound(listNr)
に到達し、17.5 秒で完了します。そして、それはまさに私が望んでいたものではありません。SoundManager.playSound(listNr)
一度だけ呼び出されるメソッドが欲しかった。
public class Settings{
public static boolean flag = false;
}
public class Main{
public void playFromList(int listNr,int g){
if(!Settings.flag){
SoundManager.playSound(listNr);
if(g ==0){
mpVolume((float) 0.3);
t5sec.run();
}else{pauseMus();}
}
}
private Handler vijfSeconden = new Handler(){
public void handleMessage(Message msg){
mpVolume((float)0.8);
}
};
Thread t5sec = new Thread(){
public void run(){
if(Settings.flag == false){
Settings.flag = true;
try {
Thread.sleep(3500);
} catch (InterruptedException e) {
Settings.flag = false;
e.printStackTrace();
}
vijfSeconden.sendEmptyMessage(0);
Settings.flag = false;
}
}
};
}