如何解决无法在 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 举报,一经查实,本站将立刻删除。