我正在尝试获取相机支持的所有缩放值,并为用户提供滑块以在它们之间移动。问题是我只从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中的说明进行操作。
该设备上的原生相机应用程序支持许多缩放值。关于这里可能出现什么问题的任何想法?
答案 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
电话周围试一试。