首页 > 解决方案 > Camera2 CaptureResult.CONTROL_AF_STATE - INACTIVE

问题描述

我正在使用camera2基于 Google 示例的 api。在我的设备上工作正常,但在模拟器(可能还有其他一些设备)上不起作用。

原因CaptureResult.CONTROL_AF_STATE在于状态CaptureResult.CONTROL_AF_STATE_INACTIVE

部分代码(与谷歌示例相同)

case STATE_WAITING_LOCK: {

                Integer afState = result.get(CaptureResult.CONTROL_AF_STATE);

                if (afState == null) {
                    captureStillPicture();
                } else if (CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED == afState ||
                        CaptureResult.CONTROL_AF_STATE_NOT_FOCUSED_LOCKED == afState) {
                    // CONTROL_AE_STATE can be null on some devices
                    Integer aeState = result.get(CaptureResult.CONTROL_AE_STATE);
                    if (aeState == null ||
                            aeState == CaptureResult.CONTROL_AE_STATE_CONVERGED) {
                        mState = STATE_PICTURE_TAKEN;
                        captureStillPicture();
                    } else {
                        runPrecaptureSequence();
                    }
                }
                break;
            }

正如我们所看到的,如果状态是INACTIVE什么都没有发生。恐怕这不仅会发生在模拟器上,所以我的问题即使拍照也不安全AUTO FOCUS STATE INACTIVE?该怎么办?

标签: androidandroid-cameraandroid-camera2

解决方案


在模拟器中,自动对焦模式可能不可用。

因此,除了空检查之外,还请尝试将条件更改为非活动状态。

     if (afState == null || CaptureResult.CONTROL_AF_STATE_INACTIVE == afState) {
                         captureStillPicture();
     }

推荐阅读