Android Camera API 2 前置摄像头自动对焦

标签 android camera autofocus front-camera camera-api

我在 Android 中使用 Camera API 2 并尝试应用自动对焦功能。自动对焦适用于后置摄像头,但不适用于前置摄像头。

(我使用的是 Android 5.1 和 6.0 设备)

详细信息:

这是启动自动对焦的触发器:

mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_START);

这是 CameraCaptureSession.CaptureCallback

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

如果我使用前置摄像头,afState 的值始终为 0(不活动)。但是对于后置摄像头,该值从 2(CONTROL_AF_STATE_PASSIVE_FOCUSED - 尝试对焦)更改为 4(对焦成功时为 CONTROL_AF_STATE_FOCUSED_LOCKED)或 5(对焦不成功时为 CONTROL_AF_STATE_NOT_FOCUSED_LOCKED)。

你们知道为什么我不能在前置摄像头上使用自动对焦吗?

最佳答案

我相信你的前置摄像头没有自动对焦功能。 要检查这一点,您可以执行

int[] afAvailableModes = cameraCharacteristics.get(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES);

如果唯一可用的自动对焦模式是 CameraMetadata.CONTROL_AF_MODE_OFF,则表示您的相机具有定焦镜头。并根据documentationandroid.control.afModeAF_MODE_OFFAF_MODE_EDOF 时,状态将始终保持为 INACTIVE

关于Android Camera API 2 前置摄像头自动对焦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38923332/

相关文章:

android - 相机参数.setFocusMode 不起作用

reactjs - 当initialValues通过\绑定(bind)到props.object时,如何使用Formik表单将焦点设置在TextField\input上?

java - 如何在 android 中处理 "record"和 "replay"触摸事件?

java - 从单例切换到应用程序对象,仍然出现空指针异常

java - 用于导入 android.net.http.RequestQueue 的包;

c++ - 相机不会移动,但坐标正在更新

c# - .Net MTP/PTP 包装器?

c# - 如何将实例化的对象传递给相机

java - 如何在 4.0.3 中更改 fontfamily?

c# - USB显微镜的自动对焦算法