在处理Camera2 API中的相机功能时,您可能会遇到此问题。基于文档,LENS_INFO_AVAILABLE_FOCAL_LENGTHS应该返回双精度浮点数数组,其中包含相机提供的焦距长度列表。然而,在某些情况下,它可能不会返回任何东西,甚至没有错误消息。
解决此问题的一种方法是使用相机参数请求,而不是直接调用CameraCharacteristics。这是一个示例代码,其中包括请求可用焦距长度列表并将其打印到日志中的相机2 API。
private void getFocalLengths(CameraDevice cameraDevice) throws CameraAccessException {
CameraCharacteristics characteristics = cameraManager.getCameraCharacteristics(cameraDevice.getId());
Rational aspectRatio = characteristics.get(CameraCharacteristics.SENSOR_INFO_PIXEL_ARRAY_SIZE);
StreamConfigurationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
Size[] sizes = map.getOutputSizes(SurfaceTexture.class);
for (Size size : sizes) {
Log.d("CameraAPI", "Size : " + size.toString());
}
double[] focalLengths = characteristics.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS);
for (double length : focalLengths) {
Log.d("CameraAPI", "Focal Length : " + length);
}
Range range = characteristics.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE);
Log.d("CameraAPI", "Exposure Compensation Range : " + range.toString());
}
通过这种方式请求相机参数,您可能会避免LENS_INFO_AVAILABLE_FOCAL_LENGTHS未正常工作的情况。