1

私は時間のために4つのintを持っています

int delay;
int period;
int delay1;
int period1;

彼らはこれらの方法を管理しています:

cameraOn();
    Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            cameraOff();
        }
    },delay1,period1);



    Timer timer2 = new Timer();
    timer2.scheduleAtFixedRate(new TimerTask() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            cameraOn();
        }
    },delay,period);

        }

これらの方法では、フラッシュカメラを常に点滅させています。必要なのは、2つのボタンを使用して、点滅の速度を変更することです。これで、次のようになります。

case R.id.btslow:
        delay = 2400;
        period = 2400;
        delay1 = 1200;
        period1 = 2400;
        break;

    case R.id.btfast:
        delay = 600;
        period = 600;
        delay1 = 300;
        period1 = 600;
        break;

しかし、彼らは点滅の速度を変更しません、どうすればそれを行うことができますか?後で最初から勇気を出しても、ボタンを押しても変わらないからです。ありがとう!!

4

2 に答える 2

1
Handler handler = new Handler();
Runnable runnable = new Runnable{

public void run()
{
cameraOff();
handler.postDelayed(this,period);
}
};handler.postDelayed(runnable,delay);
于 2012-12-22T11:18:53.110 に答える
0

変数を変更しても、現在スケジュールされているタスクの間隔と遅延は変更されません。これを試してください:https ://stackoverflow.com/a/3871723/1333516

于 2012-12-22T11:12:11.317 に答える