【问题标题】:There is no callback like onAutoFocused() from api 21 and aboveapi 21 及以上版本没有像 onAutoFocused() 这样的回调
【发布时间】:2016-10-05 13:16:30
【问题描述】:

如何使用 camera2 api 在 android 中自动捕捉照片? api 21 及以上版本没有像 onAutoFocused() 这样的回调。

【问题讨论】:

  • 请提供一些代码说明

标签: android camera2


【解决方案1】:

您必须手动触发 AF 和 AE。 标准管道是:

  1. 在您用于预览的CaptureRequest.Builder 中将CONTROL_AF_TRIGGER 设置为CONTROL_AF_TRIGGER_START,并通过CameraCaptureSession capture 方法提交到会话。调用 capture 后,请记住在 CaptureRequest.Builder 中将 CONTROL_AF_TRIGGER 重置为 CONTROL_AF_TRIGGER_IDLE 以进行预览;
  2. 等待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
  3. AF 完成后,在您用于预览的CaptureRequest.Builder 中将CONTROL_AE_PRECAPTURE_TRIGGER 设置为CONTROL_AE_PRECAPTURE_TRIGGER_START,并通过CameraCaptureSession capture 方法提交到会话。调用 capture 后,请记住在 CaptureRequest.Builder 中将 CONTROL_AE_PRECAPTURE_TRIGGER 重置为 CONTROL_AE_PRECAPTURE_TRIGGER_IDLE 以进行预览;
  4. 等待AE完成检查预览回调中的CaptureResult.CONTROL_AE_STATE of TotalCaptureResult是否为CONTROL_AE_STATE_CONVERGED || CONTROL_AE_STATE_FLASH_REQUIRED || CONTROL_AE_STATE_LOCKED
  5. 现在您可以拍照了,对焦清晰且曝光良好

我也体验过可以同时触发 AF e AE(步骤 1-3)并同时等待它们(步骤 2-4)。

【讨论】:

    猜你喜欢
    • 2012-06-10
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    相关资源
    最近更新 更多