如何通过Camera2 API获取自动对焦模式下相机的当前焦距?
解决自动对焦模式下获取当前焦距的问题
你调用的LENS_INFO_MINIMUM_FOCUS_DISTANCE是相机硬件的固定参数,代表镜头支持的最小对焦距离,所以无论怎么调整焦平面,它的值都不会改变,这就是你一直得到0.22的原因。
要获取相机当前的实时对焦距离,需要使用CaptureResult.LENS_FOCUS_DISTANCE参数(Camera2 API),或者对应旧版Camera1 API的Camera.getParameters().getFocusDistance()方法。
Camera2 API 实现示例
在Camera2的回调中获取实时对焦距离:
// 初始化相机时设置CaptureCallback mCaptureSession.setRepeatingRequest(mPreviewRequest, new CameraCaptureSession.CaptureCallback() { @Override public void onCaptureCompleted(@NonNull CameraCaptureSession session, @NonNull CaptureRequest request, @NonNull TotalCaptureResult result) { super.onCaptureCompleted(session, request, result); // 获取当前对焦距离,单位为米 float currentFocusDistance = result.get(CaptureResult.LENS_FOCUS_DISTANCE); Log.e("FocusDistance", String.valueOf(currentFocusDistance)); } }, mBackgroundHandler);
注意事项
LENS_FOCUS_DISTANCE的值单位是米,自动对焦过程中会实时更新。- 如果使用的是旧版Camera1 API,直接调用
camera.getParameters().getFocusDistance()即可获取当前对焦距离。 - 确保相机处于预览或拍摄状态,才能获取到有效的实时对焦数据。
内容的提问来源于stack exchange,提问作者ZhenzheHe
相关产品推荐
相关产品推荐

