如何使用camera2 api在android中自动捕捉照片?api 21 及更高版本没有像 onAutoFocused() 这样的回调。
问问题
271 次
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_START
CaptureRequest.Builder
CameraCaptureSession capture
CONTROL_AE_PRECAPTURE_TRIGGER
CONTROL_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 回答