2012-12-21 70 views
2

如何我做閃爍閃光燈照相燈開/關?我嘗試這與循環,但沒有工作... ...凍結爲什麼 ?需​​要報警的經理嗎?線程可運行後延遲?如何使閃爍閃光燈照相燈開/關在android系統?

for(int i=0;i<5;i++){ 
    flashon(); 
    try { 
     Thread.sleep(1000); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    flashoff(); 
    }  
} 

    public void flashon(){ 
    camera = Camera.open(); 
    Parameters p = camera.getParameters(); 
    p.setFlashMode(Parameters.FLASH_MODE_TORCH); 
    camera.setParameters(p); 
    camera.startPreview(); 
} 

回答

0

1.打開上

camera = Camera.open(); 
Parameters p = camera.getParameters(); 
p.setFlashMode(Parameters.FLASH_MODE_TORCH); 
camera.setParameters(p); 
camera.startPreview(); 

2.關閉

camera = Camera.open(); 
Parameters p = camera.getParameters(); 
p.setFlashMode(Parameters.FLASH_MODE_OFF); 
camera.setParameters(p); 
camera.stopPreview(); 

而且,把下面的AndroidManifest.xml中的權限。

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-feature android:name="android.hardware.camera" /> 

看到這樣一個http://www.mkyong.com/android/how-to-turn-onoff-camera-ledflashlight-in-android/

+0

我的問題是循環開/關...使用buttom ... – user1909897

2

你需要使用Handler

Handler handler; 
boolean isFlashon=false; 
handler = new Handler(); 
    handler.removeCallbacks(toggleFlash); 
    handler.postDelayed(toggleFlash, 1000 * 60); 

private Runnable toggleFlash = new Runnable() { 
    public void run() { 
     if(isFlashon) 
     { 
      //do Flash off 
      isFlashon=false; 
     } 
     else 
     { 
      //do Flash on 
      isFlashon=true; 
     } 
     handler.postDelayed(this, 1000 * 60); 
    } 
}; 
+0

第一個是在創建和第二個? – user1909897

+0

秒件作品是在你的'class' –

+0

ok.If閃爍?需要什麼?不好意思,我正在新開發 – user1909897

0

嘗試以下code.It會工作,我也遇到了類似的情況,繼續代碼爲我工作。

private boolean isFlashOn; 
private Camera camera; 
Parameters params; 

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; 

    } 
} 

public void flash_effect() throws InterruptedException 
{ 

    Thread a = new Thread() 
    { 
     public void run() 
     { 
      for(int i =0; i < 50; i++) 
      { 

       turnOnFlash(); 
       try { 
        Thread.sleep(50); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
       turnOffFlash(); 
       try { 
        Thread.sleep(50); 
       } catch (InterruptedException e) { 

        e.printStackTrace(); 
       } 

      } 
     } 
    }; 

    a.start(); 
}