【问题标题】:Is there a way to get the users current Flash settings (for the camera) in Android?有没有办法让用户在 Android 中获得当前的 Flash 设置(用于相机)?
【发布时间】:2013-12-02 04:17:15
【问题描述】:

我们可以通过编程方式从本机相机应用程序获取闪光灯设置吗?

我的意思是说,例如,如果用户在默认相机应用程序中干预闪光灯模式,我想读取他设置的闪光灯模式我的应用,在后台运行。这可能吗?

【问题讨论】:

    标签: android android-camera android-camera-intent


    【解决方案1】:

    为了获得当前的闪光模式,正如 Harshit 先生所建议的,您需要 getFlashMode()。为了获得相同,您可以使用以下代码

    Parameters params;
    Camera cam;
    cam=Camera.open();
    params=cam.getParameters();
    System.out.println(params.getFlashMode()); 
    

    试试这个,看看是否可行...

    【讨论】:

    • 您好 Niko,我已经尝试过这种方法。但是由于我试图从我的应用程序中检查从本机相机应用程序中选择了哪种闪光模式,所以出现了一个异常,因为在我的应用程序中声明的相机对象试图访问已经从本机相机应用程序访问的相机。所以这种方法不适用于我的要求。还有其他方法吗?
    【解决方案2】:
    private boolean hasFlash(){
        Parameters params = mCamera.getParameters();
        List<String> flashModes = params.getSupportedFlashModes();
        if(flashModes == null) {
            return false;
        }
    
        for(String flashMode : flashModes) {
            if(Parameters.FLASH_MODE_ON.equals(flashMode)) {
                return true;
            }
        }
    
        return false;
    }
    

    【讨论】:

    • 如果我创建了自己的自定义相机应用程序,这将起作用。但是,我正在监视现有的相机应用程序,以查看用户是否正在更改现有相机应用程序中的相机设置。让我使用getflashmode(),我不是必须先创建一个相机对象并打开它吗?从我到现在为止的尝试,它会产生一个异常,因为现有的相机应用程序还需要访问我的相机对象访问的同一个相机。
    • 我不需要为此打开相机对象?
    【解决方案3】:

    首先检查是否支持闪光灯

    context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
    

    如果闪存可用则返回 true,否则返回 false。

    检查闪光灯是AUTO、ON还是OFF:

     List<String> flashModes = cameraParams.getSupportedFlashModes();
    
        if(flashModes!=null && flashModes.size()>0)
        {
            if(cameraParams.getFlashMode().equals(android.hardware.Camera.Parameters.FLASH_MODE_ON))
            {
             //DO STUFF...
            }
            else if(cameraParams.getFlashMode().equals(android.hardware.Camera.Parameters.FLASH_MODE_OFF))
            {
            //DO STUFF......
            }
            else if(cameraParams.getFlashMode().equals(android.hardware.Camera.Parameters.FLASH_MODE_TORCH))
            {
            //DO STUFF......
            }
            else if(cameraParams.getFlashMode().equals(android.hardware.Camera.Parameters.FLASH_MODE_AUTO))
            {
            //DO STUFF......
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      相关资源
      最近更新 更多