相机 2 CaptureResult.CONTROL_AF_STATE - 不活动
Camera2 CaptureResult.CONTROL_AF_STATE - INACTIVE
我正在使用 camera2
api,基于 Google 示例。
在我的设备上工作正常,但在模拟器(可能还有其他一些设备)上不起作用。
原因 CaptureResult.CONTROL_AF_STATE
处于状态 CaptureResult.CONTROL_AF_STATE_INACTIVE
。
部分代码(与Google示例相同)
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
拍照也不安全?怎么办?
在模拟器中,自动对焦模式可能不可用。
所以除了空检查之外,也尝试将条件更改为非活动状态。
if (afState == null || CaptureResult.CONTROL_AF_STATE_INACTIVE == afState) {
captureStillPicture();
}
我正在使用 camera2
api,基于 Google 示例。
在我的设备上工作正常,但在模拟器(可能还有其他一些设备)上不起作用。
原因 CaptureResult.CONTROL_AF_STATE
处于状态 CaptureResult.CONTROL_AF_STATE_INACTIVE
。
部分代码(与Google示例相同)
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
拍照也不安全?怎么办?
在模拟器中,自动对焦模式可能不可用。
所以除了空检查之外,也尝试将条件更改为非活动状态。
if (afState == null || CaptureResult.CONTROL_AF_STATE_INACTIVE == afState) {
captureStillPicture();
}