因此,我设法以旧方式创建了旧相机想要的功能。
使用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_LOCKED
或PASSIVE_FOCUSED
,尽管您可能希望针对NOT_FOCUSED_LOCKED
和PASSIVE_UNFOCUSED
设置保护套,以防相机无法聚焦在场景上。
关于android - Android Camera2 API-检测何时有焦点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29947961/