经过测试的操作系统版本。 & 设备: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);
最佳答案
不幸的是,早期 Android 版本存在一个错误,即某些设备上可用 FPS 范围的值不正确;正如您在 6.0.1 中看到的那样,这在以后的版本中得到了修复。
这些值应该只是每秒帧数;他们无意中达到了 1000* 帧速率。
这确实意味着您必须在较旧的操作系统版本上小心解释此值,尤其是在 LEGACY 设备上。
关于android - CameraCharacteristics 中的 get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES) 因操作系统版本而异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38370583/