[英]how can i turn on both torch light(flash light) and back camera at the same time in android code
[英]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_FLASH
、 ON_ALWAYS_FLASH
或ON_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.