因此,我设法以旧方式创建了旧相机想要的功能。

使用mCamera.autoFocus(autoFocusCallback);我在预览模式下检测到何时有焦点并运行所需的代码。

现在,我很难掌握如何在camera2 API中执行相同的操作。
我的第一个想法是我会用

        private void process(CaptureResult result) {
        switch (mState) {
            case STATE_PREVIEW: {
                // We have nothing to do when the camera preview is working normally.
                int afState = result.get(CaptureResult.CONTROL_AF_STATE);
                //if (CaptureResult.CONTROL_AF_STATE == afState) {
                    Log.d("SOME KIND OF FOCUS", "WE HAVE");
                //}

                break;
            }
}

但我无法找到某种状态告诉我我们已经集中注意力了。有人知道如何使用Camera2 API做到这一点吗?

最佳答案

您基本上已经掌握了。您可以检查的状态列表及其转换可以在here中找到。

这取决于您使用的是哪种CONTROL_AF_MODE,但是通常您会检查FOCUSED_LOCKEDPASSIVE_FOCUSED,尽管您可能希望针对NOT_FOCUSED_LOCKEDPASSIVE_UNFOCUSED设置保护套,以防相机无法聚焦在场景上。

关于android - Android Camera2 API-检测何时有焦点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29947961/

10-11 11:02