用不同的模式在android中打开手电筒

以下代码是否适用于不支持火炬的摩托罗拉剃刀等Android设备? 有人可以请你测试是否有这样的手机,请告诉我。

提前致谢!!

if (!isFlashOn) { if (camera == null || params == null) { return; } List flashModes = params.getSupportedFlashModes(); if(flashModes.contains(Parameters.FLASH_MODE_TORCH)){ try { params = camera.getParameters(); params.setFlashMode(Parameters.FLASH_MODE_TORCH); camera.setParameters(params); camera.startPreview(); toggleButtonImage(); isFlashOn = true; }catch (RuntimeException e) { } } else { params = camera.getParameters(); params.setFlashMode(Parameters.FLASH_MODE_ON); camera.setParameters(params); camera.startPreview(); toggleButtonImage(); isFlashOn = true; } toggleButtonImage(); isFlashOn = true; } } 

PS我应该另外添加如下内容:

 if (flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_AUTO)) { params.setFlashMode(Parameters.FLASH_MODE_AUTO); camera.setParameters(params); camera.startPreview(); } 

它适用于摩托罗拉g和galaxy S4(支持火炬)

如果设备支持不同的闪光模式,则可以在不同模式下打开手电筒。 您可以从此开源摄像头代码中获取代码。 开放式摄像头

是的,如果您检查该设备是否支持火炬。 但是您可能会遇到Android中非常普遍的特定于设备的问题。 您可以在这篇文章中找到更多信息。

你应该检查支持的闪存模式没有exception,setFlashMode方法检查支持的模式,但用这种方法检查有助于在UI上设置闪存模式按钮或视图

 public List getSupportedFlashModes() { return params.getSupportedFlashModes(); } 

所有Flash模式的总和是:

 Camera.Parameters.FLASH_MODE_AUTO, Camera.Parameters.FLASH_MODE_OFF, Camera.Parameters.FLASH_MODE_ON, Camera.Parameters.FLASH_MODE_RED_EYE, Camera.Parameters.FLASH_MODE_TORCH 

但是您的设备中可能无法使用某些或任何这些闪光模式,请在使用前进行检查。 从闪光模式中选择后,您可以使用此方法设置闪光模式

 public synchronized void setFlashMode(String flashMode) { Camera.Parameters params = mCamera.getParameters(); if (cameraId == Camera.CameraInfo.CAMERA_FACING_BACK && params.getSupportedFlashModes() != null && params.getSupportedFlashModes().contains(flashMode)) { params.setFlashMode(flashMode); mCamera.setParameters(params); } }