2011-12-27 40 views
3

我使用的是Nexus S Android 2.3的股票版本。無論何時我試圖將閃光燈設置爲手電筒模式:Nexus S閃光燈火炬模式不起作用

if (camera == null) { 
    mCamera = camera = Camera.open(); 
} 
final Parameters params = camera.getParameters(); 
params.setFlashMode(MODE_TORCH); 
camera.setParameters(params); 

沒有任何反應,閃光燈根本不起作用。這段代碼在nexus上完美工作。

我發現了這個 - How to use camera flash/led as torch on a Samsung Galaxy Tab?也是這一個 - http://forum.xda-developers.com/showthread.php?t=923786他們都沒有似乎幫助。

任何想法我錯過了什麼?

+0

我可以證實,火炬在nexus S.工作。我的應用程序發佈在這裏:https://market.android.com/details?id=droid.pr.coolflashlightfree是那個教授。另外我有一個聯繫S和工作。如果您需要幫助,請與我聯繫,我會向您發送一份樣品 – 2012-03-01 11:15:12

+0

佩德羅,這聽起來不錯,您可以將它張貼在這裏供其他人看嗎? – 2012-03-04 21:54:46

回答

1
private Camera _camera; 
protected static final String MODE_TORCH = Camera.Parameters.FLASH_MODE_TORCH; 
protected static final String MODE_OFF = Camera.Parameters.FLASH_MODE_OFF; 

private void initCamera(){ 
      if(this._camera == null){ 
      this._camera = Camera.open(); 
      this._camera.startPreview(); 
      } 
    } 

private void releaseCamera(){ 
     if(this._camera != null) 
     { 
      this._camera.stopPreview(); 
      this._camera.release(); 
     } 

     this._camera = null; 
    } 

private void setCameraParameter(String value){ 
     if(this._camera != null){ 
      Camera.Parameters params = this._camera.getParameters(); 
      params.setFlashMode(value); 
      this._camera.setParameters(params); 
     } 
    } 

//To turn on just use: 
private void turnOn(){ 
    initCamera(); 
    setCameraParameter(MODE_TORCH); 
} 

//to turn off just use: 
private void turnOff(){ 
    setCameraParameter(MODE_OFF); 
} 

//To release resorces use: 
private void releaseResources(){ 
    releaseCamera(); 
} 

這將工作在android 2.3。要在android 2.3和4.0.3上工作,你必須使用surfaceView和surfaceHolder。

+1

你能解釋更多關於surfaceView和holder的信息嗎? – Guy 2012-08-23 07:08:48