【问题标题】:Why doesn't parameters.getFlashMode() == Camera.Parameters.FLASH_MODE_OFF return true? [duplicate]为什么 parameters.getFlashMode() == Camera.Parameters.FLASH_MODE_OFF 不返回 true? [复制]
【发布时间】:2018-03-23 11:08:09
【问题描述】:

我正在尝试确定闪光灯是打开还是关闭,以便通过一个按钮我可以打开和关闭它。这是我的代码:

Camera cam = getCameraInstance(); //A method that opens the cam
            Camera.Parameters parameters = cam.getParameters();
            System.out.println("Current flash mode " + parameters.getFlashMode());
            System.out.println("flash mode off equals to : " + Camera.Parameters.FLASH_MODE_OFF);
            System.out.println(parameters.getFlashMode() == Camera.Parameters.FLASH_MODE_OFF);

前两个 syso 的输出是 off。自然地,我假设因为它们都返回一个off 字符串,将== 运算符放在它们之间将返回true(因此允许我检查flash 是否打开)但它返回false。知道为什么吗?

我的目标是 api 16 并在 Marshmallow 设备上进行测试

【问题讨论】:

  • 你检查过parameters.getFlashMode()返回的内容吗?我的猜测是它返回null,那是因为您的设备不支持闪光模式设置。
  • System.out.println("Current flash mode " + parameters.getFlashMode()); 的输出是一个 off 字符串。我假设它为 null 它将返回一个 null 字符串
  • 在这种情况下,是因为 == 而不是 equals()
  • 哦,这就是为什么!谢谢。

标签: java android camera android-camera


【解决方案1】:

如果您检查docs,您会看到这些参数是Strings,并且您不会将Java 中的字符串与== 进行比较。你可以用equals 来做。

【讨论】:

    猜你喜欢
    • 2021-11-10
    • 2014-12-20
    • 2015-06-22
    • 2020-04-12
    • 2015-10-07
    • 2019-02-08
    • 2015-05-06
    • 2020-05-19
    • 1970-01-01
    相关资源
    最近更新 更多