Android 无法在Camera2 API中对焦距离
我试图在Android camera2 API中设置焦距,但getAndroid 无法在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
试图在空对象引用上调用虚拟方法“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可能会返回一些错误代码,而不是崩溃,在这种情况下,它能做的最好的事情是确定谢谢,我理解更新/接受答案如果有帮助,祝您好运!