无法在 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相机不支持此类功能的信息
我试图在 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相机不支持此类功能的信息