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

时间:2013-03-16 22:16:38

标签: android zoom android-camera

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

final Parameters parameters = camera.getParameters();

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

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

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

该设备上的原生相机应用程序支持许多缩放值。关于这里可能出现什么问题的任何想法?

1 个答案:

答案 0 :(得分:2)

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

您的滑块可以从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.0x缩放基线(乘以100)缩放的因子。在上面的示例中,将缩放设置为2将使缩放到第三缩放比例桶:1.31倍放大率。这也说明了第一个值为100的原因 - 因为第一个缩放值0相当于1.0倍变焦。

如果您从最大缩放查询返回100,那么您的设备上的缩放似乎完全不稳定。如果出于制造商错误的原因,我建议您在setParameters电话周围试一试。