android - CameraCharacteristics 中的 get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES) 因操作系统版本而异

标签 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);

最佳答案

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

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

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

关于android - CameraCharacteristics 中的 get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES) 因操作系统版本而异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38370583/

相关文章:

android - 如何在家庭服务器(可能是 Android 手机)上托管 Django REST API?

android - 如何使用数字用户 ID 在 Android 应用程序中打开 Facebook 个人资料

android - 我怎样才能获得相机 2 中 TextureView 预览大小的图像

android - 使用 Camera2 API 在服务中拍照

android - 是否可以在 android 中同时从两个后置摄像头获取信息?

Android - 改变可 ScrollView 顶部和底部的橙色渐变?

java - 尝试重构得更好

java - Android - 单击按钮更改通知的 ContentText

Android camera-2 API 录制预览在三星 Galaxy S8 的人像录制中被压缩

android - 使用 RenderScript 旋转肖像模式的 YUV 图像数据