Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法在Camera2 API中对焦距离_Android_Android Camera2 - Fatal编程技术网

Android 无法在Camera2 API中对焦距离

Android 无法在Camera2 API中对焦距离,android,android-camera2,Android,Android Camera2,我试图在Android camera2 API中设置焦距,但get试图在空对象引用上调用虚拟方法“float java.lang.float.floatValue()”。我在三星安卓10上试用过,效果很好。当我尝试使用redmi photo时,我发现了这个错误,有人知道如何解决这个问题吗 这是我的密码: public void focus(float distance) { CameraManager cameraManager = (CameraManager) app.ge

我试图在Android camera2 API中设置焦距,但get
试图在空对象引用上调用虚拟方法“float java.lang.float.floatValue()”。我在三星安卓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)中实现此功能


考虑使用lib,它尝试使用非常不同的方法来访问某些功能/分辨率/参数来解决问题。尽管如此,它也可能会失败(但很少)或返回相机不支持该功能的信息

谢谢您的回复,您是否可以知道该功能是否以某种方式存在?这很重要。遗憾的是,不,这就是问题所在。。。Android API提供了打开/关闭某些功能的可能性,但处理API调用必须由设备制造商实施,有时制造商为用户制作自己的摄像头应用程序,为该应用程序提供更高的权限和/或访问隐藏API的权限,而所有其他摄像头应用程序都不能使用这些功能。。。这在所有制造商的设备上都会发生,更常见的是在“更便宜”的型号和“本质上是中国的”制造商(例如,较旧的小米设备、一些Oppo、realme等)尝试使用CameraX lib链接作为回答,它可以绕过一些限制,并为此类情况提供大量的解决方法。如果在任何解决方案中无法使用某些功能,CameraX可能会返回一些错误代码,而不是崩溃,在这种情况下,它能做的最好的事情是确定谢谢,我理解更新/接受答案如果有帮助,祝您好运!