CameraCharacteristics中的get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES)以OS版本的形式返回

时间:2016-07-14 09:31:39

标签: android android-camera2

经过测试的操作系统版本。 &安培;设备:Android 5.0.2 / 6.0.1两个设备都是Galaxy Tab S2

当我尝试通过Camera2 API访问摄像头以获得支持的设备的fps范围时,我从get得到一个奇怪的结果(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES)。

如果我在Android 5.0.2上尝试此操作,我会获得如下所示的fps范围, [[15000,15000],[24000,24000],[15000,30000],[30000,30000]]。

但是,如果我在同一设备上尝试此代码但操作系统版本不同(6.0.1),我会得到不同的结果,如下所示。 [[15,15],[24,24],[15,30],[30,30]]

为什么这些结果有所不同?我认为这是由不同的操作系统版本引起的。

为了更好地理解,我在这里编写了一些代码为this的代码。

CameraManager manager = (CameraManager)activity.getSystemService(Context.CAMERA_SERVICE);
...
String cameraId = manager.getCameraIdList()[0];
CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);
Range<Integer>[] fpsRanges = characteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES);

1 个答案:

答案 0 :(得分:3)

不幸的是,早期Android版本中存在一个错误,其中某些设备上可用FPS范围的值不正确;正如您在6.0.1上看到的那样,这在以后的版本中已得到修复。

这些值应该只是每秒帧数;他们无意中1000 *帧速率。

这确实意味着您必须小心地在较旧的OS版本上解释此值,尤其是在LEGACY设备上。