2011-12-27 45 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