如何从Android设备获取LENS_FOCUS_DISTANCE

时间:2017-02-27 19:24:43

标签: android android-camera2 autofocus

从android camera api2,我们可以设置LENS_FOCUS_DISTANCE(从0到10)。我的问题是如何获得LENS_FOCUS_DISTANCE?例如,在自动对焦后,我想知道当前的焦距。我应该打电话给哪个功能?感谢。

1 个答案:

答案 0 :(得分:0)

您需要创建一个CameraCaptureSession.CaptureCallback并将其提供给您的CaptureRequest.Builder。

mPreviewSession.capture(mPreviewBuilder.build(), captureCallbackHandler, mBackgroundHandler);

然后覆盖CaptureCallback中的onCaptureCompleted方法,您应该能够从TotalCaptureResult中读取LENS_FOCUS_DISTANCE。

private CameraCaptureSession.CaptureCallback captureCallbackHandler = new CameraCaptureSession.CaptureCallback() {
    @Override
    public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) {
        super.onCaptureCompleted(session, request, result);
        float focusDistance = result.get(CaptureResult.LENS_FOCUS_DISTANCE);
    }
}

我可以在自动对焦于我的nexus5后读取此内容,但不能在s8上进行读取。也许三星限制了这种能力,以促进他们自己的相机sdk的使用。