Android Camera.Parameters.getZoomRatios() 只返回 1 个值

标签 android zooming android-camera

我试图获取相机支持的所有缩放值,并为用户提供一个在它们之间移动的 slider 。问题是我只能从 Camera.Parameters.getZoomRatios() 获取一个值。我正在使用 Android 2.3.4 (gingerbread) 的 HTC Sensation 设备进行测试

final Parameters parameters = camera.getParameters();

if(parameters.isZoomSupported()) {
    // get all the zoom levels
    final List<Integer> zooms = parameters.getZoomRatios();

zooms 始终是 [100] 这也是我从 parameters.getMaxZoom() 返回的内容。

我已在 Android list 中请求了所有相关权限,并按照相机 API javadocs 中的说明进行操作。

我在该设备上的 native 相机应用程序支持许多缩放值。关于这里可能出现的问题有什么想法吗?

最佳答案

缩放比例可能不是您想要的。您的相机可以从 0 缩放到 getMaxZoom 返回的任何值。尝试调用setZoom 0 到 100 之间的值(您说这是从 getMaxZoom 返回的),然后看看是否有效。

您的 slider 可以从 0 变为从 getMaxZoom 返回的任何值。与 Android 上的许多相机参数一样,每个不同供应商的变焦比可能并不总是那么值得信赖。

根据文档,setZoom 的有效范围是 0 到 getMaxZoom()。我在所有设备上都得到了完美的缩放结果,但刚刚在运行 4.0.3 的 HTC Sensation 上进行了测试。对于 getMaxZoom() ,我得到 5 作为结果 int,并且将缩放设置为 0-5 可以缩放相机。您的问题可能源于设备在使用 Gingerbread 时可能遇到的一些问题,因为当我打印 Zoomratios 数组时,我得到以下信息:

[100, 114, 131, 151, 174, 200]

缩放比率数组旨在了解每个缩放级别从 1.0 倍缩放基线开始缩放图像的系数(乘以 100)。在上面的示例中,将缩放设置为 2 会将缩放设置为第三个缩放比桶:1.31 倍的放大倍数。这也说明了为什么第一个值是 100——因为第一个缩放值 0 相当于 1.0 倍缩放。

如果您从最大缩放查询返回 100,那么缩放在您的设备上似乎完全不稳定。如果是这种情况,我建议在您的 setParameters 调用周围抛出一个 try-catch 来防止制造商错误。

关于Android Camera.Parameters.getZoomRatios() 只返回 1 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15455346/

相关文章:

android sdk 管理器没有任何额外的文件夹来安装 android 支持存储库

Android build.gradle 错误 : ParseError at [row, col] :[65, 9] 消息:预期的开始或结束标记受影响的模块:应用程序

c# - 使用平移和缩放计算正确的光标位置

android - 从 Android 中的相机预览中获取较小的数据

android - 在用户不知情的情况下使用前置摄像头拍摄照片

Android 在 dialog.show() 中崩溃

android - Cordova PushPlugin - 如果应用程序未运行,则无法在 Android 上接收 GCM 通知

ios - UIWebView pich to zoom 在 iPhone 5.0 模拟器上工作但在 iPhone 4.3 和 iPad 4.3、5.0 模拟器上不起作用?

html - Chrome 不会在放大时保持一致的 rem 单位

android - 如何将 LogCat 输出到控制台?