这个简单的代码:
Camera.Parameters params = currentCamera.getParameters();
params.setPreviewFpsRange( 10000, 15000 );
currentCamera.setParameters( params );
在我的 Nexus 4(或我的摩托罗拉 Atrix)上不起作用,尽管允许的值在 5000 到 120000 的允许范围内。
当我尝试分别使用不同于 5000 和 120000 的任何最小值或最大值时,我得到:
setPreviewFpsRange(const android::QCameraParameters&): error: FPS range
value not supported
这很愚蠢。此外,我在我的旧摩托罗拉 Atrix 上尝试了此代码(它显示有效的 fps 范围在 10000 到 30000 之间)但它也不起作用。有什么可以做的吗?
通过对该主题的搜索,我发现 a) 关于该主题的 Material 很少,并且 b) 某些平台可能根本不支持此功能。谷歌目前的旗舰手机 Nexus 4 不支持它,这有点奇怪……
最佳答案
啊哈!因此,作为我寻找答案的一部分,我用我的应用程序检查了我的 Nexus 10 的操作。事实证明,getSupportedFpsRange 函数返回的值是表示可能输入到 setPreviewFpsRange 中的精确双元组的范围,并且不支持任何其他双元组(无论如何,据我所知。)
我发现这个是因为 Nexus 10 从 getSupportedFpsRange 返回了多个双元组。我在此处复制了三个设备的 getSupportedFpsRange 返回值。
支持的范围值示例
LG Nexus 4:
preview-fps-range-values=(5000,120000);
摩托罗拉 Atrix:
preview-fps-range-values=(10000,30000);
三星 Nexus 10:
preview-fps-range-values=(15000,15000),(24000,24000),(25000,25000),(15000,30000),(30000,30000);
结论
我们做不到
params.setPreviewFpsRange( 29000, 29000 );
强制预览为 29fps,除非设备已经明确支持该双帧。
当然,我研究此功能的最初原因是希望在我自己的应用程序中复制 Nexus 4 的丝般流畅的相机预览。这似乎最终证明,至少在 Nexus 4 上,setPreviewFpsRange 对此无济于事。
是时候继续搜索了。 (:
关于android - 尽管值在 getPreviewFpsRange 的范围内,但 setPreviewFpsRange 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16128271/