如何使用camera2 api在android中自动捕捉照片?api 21 及更高版本没有像 onAutoFocused() 这样的回调。
1 回答
1
您必须手动触发 AF 和 AE。标准管道是:
- 设置
CONTROL_AF_TRIGGER为您CONTROL_AF_TRIGGER_START用于预览并通过方法CaptureRequest.Builder提交到会话的。CameraCaptureSession capture调用 capture 后,请记住在 CaptureRequest.Builder 中重置CONTROL_AF_TRIGGER以CONTROL_AF_TRIGGER_IDLE进行预览; - 等待 AF 完成检查
CaptureResult.CONTROL_AF_STATE of TotalCaptureResult预览回调中是否为CONTROL_AF_STATE_FOCUSED_LOCKED || CONTROL_AF_STATE_NOT_FOCUSED_LOCKED || CONTROL_AF_STATE_PASSIVE_FOCUSED || CONTROL_AF_STATE_PASSIVE_UNFOCUSED - 当 AF 完成时,触发 AE 设置
CONTROL_AE_PRECAPTURE_TRIGGER到您用于预览并通过方法提交到会话中。调用 capture 后,请记住在 CaptureRequest.Builder 中重置以进行预览;CONTROL_AE_PRECAPTURE_TRIGGER_STARTCaptureRequest.BuilderCameraCaptureSession captureCONTROL_AE_PRECAPTURE_TRIGGERCONTROL_AE_PRECAPTURE_TRIGGER_IDLE - 等待 AE 完成检查
CaptureResult.CONTROL_AE_STATE of TotalCaptureResult预览回调中是否为CONTROL_AE_STATE_CONVERGED || CONTROL_AE_STATE_FLASH_REQUIRED || CONTROL_AE_STATE_LOCKED - 现在您可以拍照,对焦且曝光良好
我也经历过可以同时触发 AF e AE(步骤 1-3)并同时等待它们(步骤 2-4)。
于 2016-10-05T13:48:47.123 回答