1

バイナリコードに基づいてAndroid携帯のLED懐中電灯を点滅させようとしています。たとえば、char = 1の場合はLEDライトをオンにし、char=0の場合はLEDをオフにします。

if ( char == '1'){ params.setFlashMode(Parameters.FLASH_MODE_ON); }              
if ( char == '0'){ params.setFlashMode(Parameters.FLASH_MODE_OFF);}

したがって、charからString str ="101010101"charを取得します。charは値1、0、1などを取得します。これにより、懐中電灯が点滅するはずですが、点滅するのはそれだけです。この問題をどのように修正すればよいですか?ありがとう

4

3 に答える 3

8

これを試して :

String myString = "0101010101";
long blinkDelay = 50; //Delay in ms
for (int i = 0; i < myString.length(); i++) {
   if (myString.charAt(i) == '0') {
      params.setFlashMode(Parameters.FLASH_MODE_ON);
   } else {
      params.setFlashMode(Parameters.FLASH_MODE_OFF);
   }
   try {
      Thread.sleep(blinkDelay);
   } catch (InterruptedException e) {
      e.printStackTrace();
   }
}

「Thread.sleep()」がないと、コードが速すぎる可能性があります。

于 2012-05-15T07:31:46.633 に答える
2

私のアプリで使用しているこの方法を使用してください

private void blink(final int delay, final int times) {
        Thread t = new Thread() {
            public void run() {
                try {

                    for (int i=0; i < times*2; i++) {
                        if (isFlashOn) {
                            turnOffFlash();
                        } else {
                            turnOnFlash();
                        }
                        sleep(delay);
                    }

                } catch (Exception e){ 
                    e.printStackTrace(); 
                }
            }
        };
        t.start();
        }

     private void turnOnFlash() {
        if (!isFlashOn) {
            if (camera == null || params == null) {
                return;
            }

            params = camera.getParameters();
            params.setFlashMode(Parameters.FLASH_MODE_TORCH);
            camera.setParameters(params);
            camera.startPreview();
            isFlashOn = true;
        }

    }

    private void turnOffFlash() {
        if (isFlashOn) {
            if (camera == null || params == null) {
                return;
            }
            params = camera.getParameters();
            params.setFlashMode(Parameters.FLASH_MODE_OFF);
            camera.setParameters(params);
            camera.stopPreview();
            isFlashOn = false;
        }
    }
于 2014-09-18T06:31:47.590 に答える
1
String[] list1 = { "1", "0", "1", "0", "1", "0", "1", "0", "1", "0" };
        for (int i = 0; i < list1.length; i++) {
            if (list1[i].equals("0")) {
                params.setFlashMode(Parameters.FLASH_MODE_ON);
            } else {
                params.setFlashMode(Parameters.FLASH_MODE_OFF);
            }

        }

あなたの問題は解決したかもしれませんが、これは速すぎて点滅できないと思います......

于 2012-05-15T06:31:10.420 に答える