Camera2相机在暗光环境里,发现画面非常暗,而系统自带的相机渲染的画面还算不错,调了很久发现是设置了帧率的原因。
设置帧率时,建议选最大与最小都是最大的,如5~30帧,如果只选30帧,则即使在暗光环境下依旧无法自动曝光:
try {
//自动聚焦
// mPreviewBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
//自动曝光
// mPreviewBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);
//自动控制模式
mPreviewBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);
// 设置预览画面的帧率 视实际情况而定选择一个帧率范围
mPreviewBuilder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, fpsRanges[2]);
mPreviewSession.setRepeatingRequest(mPreviewBuilder.build(), previewCallback, mCameraHandler);
for (int i = 0; i < fpsRanges.length; i++) {
Log.e("setRepeatingPreview", "setRepeatingPreview,fpsRanges[" + i + "]=" + fpsRanges[i]);
}
} catch (CameraAccessException e) {
e.printStackTrace();
}
上面fpsRanges[2]选择了5~30帧的范围,这样设置即可在暗光环境下画面也依旧出色(前提需要机子硬件支持才行~)