微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在 Camera2 API 中对焦距离

如何解决无法在 Camera2 API 中对焦距离

我正在尝试在 Android camera2 API 中设置焦距,但得到 Attempt to invoke virtual method 'float java.lang.Float.floatValue()' on a null object reference。我在三星 android 10 上试过这个,效果很好。当我尝试使用 redmi photo 时出现此错误,有人知道如何解决此问题吗?

这是我的代码

 public void focus(float distance) {
        CameraManager cameraManager = (CameraManager) app.getSystemService(Context.CAMERA_SERVICE);
        Cameracharacteristics characteristics = null;
        try {
            characteristics = cameraManager.getCameracharacteristics(cameraID);
        } catch (CameraAccessException e) {
            e.printstacktrace();
        }

        float minimumLens = characteristics.get(Cameracharacteristics.LENS_INFO_MINIMUM_FOCUS_disTANCE);

        float num = (distance * minimumLens / 100);
        captureRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE,CaptureRequest.CONTROL_AF_MODE_OFF);
        captureRequestBuilder.set(CaptureRequest.LENS_FOCUS_disTANCE,num);
        refreshCamera();
    }

解决方法

好吧,那是小米……您不能确定相机模块是否支持某些功能,例如对焦。一个几乎总是正常工作的功能是拍摄照片/位图。相机模块可能不支持所有其他功能 - 即使设备上的应用程序可以使用某些功能(例如对焦),也不能保证制造商在 Camera2 API(或任何其他 API)中实现了此功能

考虑使用 CameraX 库,它试图以非常不同的方式来解决访问某些功能/分辨率/参数的问题。仍然可能会失败(但很少)或返回相机不支持此类功能的信息

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。