0
我想要一個閃爍的小手電筒。我的問題是:計時器不想停止。要麼沒有反應,要麼應用程序崩潰。我搜索了幾個小時,所有我發現的是「timer.cancel()」 - 但它沒有幫助。計時器不會停止
我的代碼:
import java.util.Timer;
import java.util.TimerTask;
.
.
.
public void btn_slow(View view){
final Camera.Parameters p = camera.getParameters();
p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
Timer timer = new Timer();
switch(flashon) {
case 1 : timer.cancel();
flashon = 0;
p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
break;
case 0: timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
timer2.schedule(new TimerTask() {
public void run() {
p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
}
}, 2*1000);
timer3.schedule(new TimerTask() {
public void run() {
p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
}
}, 1*1000);
}
}, 1*1000, 2*1000);
flashon = 1;
break;
}
}
希望你能幫助我。
03-02 22:12:51.379 25515-25616/com.example.app E/AndroidRuntime﹕ FATAL EXCEPTION: Timer-2
java.lang.IllegalStateException: Timer was canceled
at java.util.Timer.scheduleImpl(Timer.java:561)
at java.util.Timer.schedule(Timer.java:459)
at com.example.app.Flashlight$2.run(Flashlight.java:245)
at java.util.Timer$TimerImpl.run(Timer.java:284)
我不得不在此之前,沒有任何改變。所以我想我可以嘗試'timer.cancel',因爲「大」的計時器。但是是的..仍然是同樣的問題 – QNikE
@ QNIKE工作比你的switch語句更好嗎? – AbstractChaos
我試了一下,現在的問題是:我可以啓動手電筒,閃爍等等,但是當我按下按鈕停止閃爍時,它開始眨眼非常「瘋狂」。如:半秒開,1秒關,1/4秒開,0.5秒關 - 如果你知道我的意思。所以事實上:並沒有幫助..... – QNikE