2

我正在尝试获取相机支持的所有缩放值,并为用户提供一个滑块以在它们之间移动。问题是我只能从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 中的说明进行操作。

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

4

1 回答 1

2

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

您的滑块可以改为从 0 转到从getMaxZoom. 与 android 上的许多相机参数一样,缩放比例可能并不总是对每个不同的供应商都如此值得信赖。

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

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

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

如果您从最大缩放查询返回 100,似乎缩放在您的设备上完全不可靠。setParameters如果是这种情况,我建议在你的电话周围抛出一个 try-catch以防止制造商错误。

于 2013-03-17T00:48:10.483 回答