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

时间:2014-02-10 10:16:15

标签: java android flash parameters flashlight

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

提前致谢!!

       if (!isFlashOn) {
           if (camera == null || params == null) {
               return;
             }     
           List<String> 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;

       }

   }

P.S我还应该添加类似的内容:

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

适用于Motorola g和galaxy S4(支持火炬)

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

public List<String> 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);
    }
}