1

我試圖讓基於二進制代碼的android手機的LED手電筒閃爍,如果char = 1將LED指示燈亮起,否則如果char = 0將LED關閉。如何讓android手機閃光燈閃爍?

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

所以我得到從String str ="101010101"炭得1,0,1等的價值,這是應該做手電筒閃爍的字符,但它閃爍的人,就是這樣。我應該如何解決這個問題? 感謝

+0

後多一點... –

+0

http://stackoverflow.com/questions/16348418/android-how-to -blink-led-flashlight-quickly – Sourabh

+0

您應該閱讀並理解爲什麼不能使用'=='來比較字符串值。 – Simon

回答

5

試試這個:

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(); 
    } 
} 

沒有「主題。睡眠()「你的代碼可能太快了。

+0

同一問題http://stackoverflow.com/questions/16348418/android-how-to-blink-led-flashlight-rapidly – Sourabh

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); 
      } 

     } 

可能是你的問題就解決了 但我認爲這一個是太快閃爍......

+0

如何無限閃光? –

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; 
     } 
    }