0

ボタンを押したときに、カメラのフラッシュがゆっくりと点滅するようにしたいので、これらの変数を作成しました。

int counter = 1;
int deloy = 2000;
int poriod = 2000;
int deloy1 = 1000;
int poriod1 = 2000;

これはコード付きのボタンです:

case R.id.btlento:

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

                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    cameraOff();
                    counter = counter+1;
                }
            },deloy1,poriod1);

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

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

                }while(counter>=60);
        break;

もう 1 つのボタンはより速く点滅する必要があるため、次の変数を作成しました。

int j = 1;
int delay = 600;
int period = 600;
int delay1 = 300;
int period1 = 600;

そして、これらはメソッドを持つボタンです:

case R.id.btrapid:

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

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

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

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

                }while(j>=5);

        break;

今、彼らは止まらないで点滅している、なぜ???? メソッド cameraOn は次のとおりです。

private void cameraOn() {
            // TODO Auto-generated method stub
             camera = Camera.open();
             parameters = camera.getParameters();
             parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
             camera.setParameters(parameters);
        }

cameraOff は次のとおりです。

private void cameraOff() {
            // TODO Auto-generated method stub
             parameters.setFlashMode(Parameters.FLASH_MODE_OFF);
             camera.setParameters(parameters);
             camera.release();
             camera = null;
        }
4

1 に答える 1

0

andが他の場所で変更されていないと仮定するcounterと、while ブロックに入ることはありません。おそらく次のようになります。j

while(counter<=60)

と:

while(j<60)
于 2012-12-27T22:55:27.540 に答える