繁体   English   中英

关闭闪光灯时相机变黑

[英]Camera turns black when I turn off flash light

我使用下面的代码来打开和关闭相机闪光灯

private void toggleFlash() {
    try {
        if(!flashOn) {
            captureRequestBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_TORCH);
            captureRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON);
        } else {
            captureRequestBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF);
            captureRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_OFF);
        }
        captureSession.setRepeatingRequest(captureRequestBuilder.build(), null, handler);
        flashOn = !flashOn;
    } catch (CameraAccessException e) {
        e.printStackTrace();
    }
}

它有效,但问题是这样的。 一开始我打开相机(不带闪光灯),我可以清楚地看到相机的图像预览,但是当我打开闪光灯并关闭它时,预览变得比最初打开相机时更暗。

我还是相机 API 的新手,但我想问题来自这里

captureRequestBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF);
captureRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_OFF);

但我不知道用于使相机不暗的正确代码。 有人有解决方案吗?

它变黑是因为你关闭了自动曝光,我怀疑默认的手动曝光和灵敏度值太低以至于图像曝光不足。

OFF闪光灯时无需关闭自动曝光。 要手动控制闪光灯,您确实需要确保 AE设置为ON_AUTO_FLASHON_ALWAYS_FLASHON_AUTO_FLASH_REDEYE ,但这只是意味着如果您不需要自动闪光,您可以将其始终保持为ON

所以只需删除关于将CONTROL_AE_MODE设置为CONTROL_AE_MODE_OFF的部分

手电筒和闪光灯是 camera2 中的两种不同设置。 您可以尝试使用这些设置控制闪光灯。

在 captureRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_ALWAYS_FLASH);

关闭 captureRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM