无法在 Camera2 中对焦距离 API

Unable to focus distance in Camera2 API

我试图在 Android camera2 API 中设置焦距,但得到 Attempt to invoke virtual method 'float java.lang.Float.floatValue()' on a null object reference。我在 Samsung 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();
    }

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

考虑使用 CameraX 库,它试图通过非常不同的方式来访问某些 features/resolutions/params 来解决问题。它也可能会失败(但很少)或return相机不支持此类功能的信息