我在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)。
你们有没有想过为什么我不能在前置摄像头上使用自动对焦?
答案 0 :(得分:7)
我相信你的前置摄像头没有自动对焦功能。 要检查这一点,您可以执行
int[] afAvailableModes = cameraCharacteristics.get(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES);
如果唯一可用的自动对焦模式为CameraMetadata.CONTROL_AF_MODE_OFF
,则表示您的相机具有定焦镜头。根据{{3}},当android.control.afMode
为AF_MODE_OFF
或AF_MODE_EDOF
时,状态将始终为INACTIVE
。