【问题标题】:Opening flashlight in android with different modes在android中以不同模式打开手电筒
【发布时间】:2014-02-10 10:16:14
【问题描述】:

下面的代码是否可以在不支持 Torch 的 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();
           }

它适用于摩托罗拉 g 和 Galaxy S4(支持手电筒)

【问题讨论】:

  • @Kevin TeslaCoil 既然你有这方面的经验,可以看看吗?

标签: java android flash parameters flashlight


【解决方案1】:

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

【讨论】:

  • 非常感谢,虽然一切都乱七八糟,功能太多,但它确实包含我正在寻找的东西!
【解决方案2】:

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

【讨论】:

  • 我希望有人能提供 4 种可能的解决方案来打开闪存 red eye, auto, on, torch 详细
【解决方案3】:

您应该检查支持的闪光模式是否有异常,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);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    相关资源
    最近更新 更多