首页 > 解决方案 > 如何为在cameraX中完成的焦点添加监听器

问题描述

我正在尝试在 CameraX 上实现手动对焦。但我不知道如何检查 startFocusAndMetering 是否完成。

我尝试过这样的事情

 val focusListenableFuture = camera?.cameraControl?.startFocusAndMetering(action)

我发现有一个方法isDone()可以检查天气聚焦是否完成

如何将它与focusListenableFuture?.addListener()一起使用来监听天气聚焦是否完成

标签: androidandroid-camerax

解决方案


您可以使用FocusMeteringResult#isFocusSuccessful()

如果自动对焦成功则返回。

如果在 FocusMeteringAction 中请求 AF 但当前相机不支持 AF,则返回 true。如果没有请求 AF,它将返回 false。

val focusListenableFuture  = camera?.cameraControl?.startFocusAndMetering(action)
focusListenableFuture.addListener( {
    val result = focusListenableFuture.get()
    val isSuccessful = result.isFocusSuccessful
}, ContextCompat.getMainExecutor(context))

推荐阅读