android - 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
?该怎么办?
解决方案
在模拟器中,自动对焦模式可能不可用。
因此,除了空检查之外,还请尝试将条件更改为非活动状态。
if (afState == null || CaptureResult.CONTROL_AF_STATE_INACTIVE == afState) {
captureStillPicture();
}
推荐阅读
- c# - MissingReferenceException 没有意义
- c# - Umbraco 成员属性
- flutter - 带有嵌套自定义 FormFields 的 Flutter Form onSaved 执行顺序
- javascript - 单击带有Vue JS的复选框时如何显示正确的作业名称?
- fail2ban - 在 Centos 7 中将 fail2ban 行为与 firewallD 混淆
- javascript - ReferenceError:找不到变量:onPlayerReady(使用回调时)
- batch-file - 如何使用命令提示符或批处理文件检查用户是否存在?
- keycloak - Get authorization from remote API
- python - 如何使用 API 和 Python 提取数据?
- java - Kotlin 中的每个类都扩展任何类吗