Android API 7下的Camera的字符串参数(2.1 Eclair)

时间:2011-09-06 16:38:42

标签: android android-camera

我正在开发一个使用Camera预览,拍照和缩放功能的应用程序。

我正在尝试与Android API级别7(2.1 Eclair)保持兼容,后者未实现Camera.Parameters.getMaxZoom()Camera.Parameters.setZoom()等,因此我必须使用String参数由硬件返回。例如:

final String zoomSupportedString = parameters.get("zoom-supported"); // parameters is a Camera.Parameters 
final boolean zoomSupported = (zoomSupportedString != null ? Boolean.parseBoolean(zoomSupportedString) : false);

if (zoomSupported) {
    // Computes the min an max zoom levels for taking a picture:
    final int minTake = parameters.getInt("taking-picture-zoom-min");
    final int maxTake = parameters.getInt("taking-picture-zoom-max"); 

    // etc.
}

但并非所有设备都使用相同的参数,我在互联网上找不到任何有效的摄像机参数列表。

通过检查HTC上Camera.Parameters.flatten()(请参阅doc)返回的值,我可以找到"zoom-supported""taking-picture-zoom-min""taking-picture-zoom-max"和{{1} }。令人惊讶的是,我没有找到"max-zoom"

但是,例如,三星Galaxy S上不存在参数"min-zoom",这会导致"taking-picture-zoom-min"返回,null会抛出getInt()

知道我正在尝试与Android-7保持兼容,有没有比使用硬件返回的字符串值更好的方法来处理缩放?如果是这样,是否有可能在某处找到所有有效缩放参数的列表(甚至是按供应商列出的列表)?

1 个答案:

答案 0 :(得分:1)

我知道这是一个古老的主题,但对于那些正在寻找相机缩放的人...我有同样的问题,现在我有2个不同的工作的Android设备,两者都有一些共同点。

Camera.Parameters.setZoom(int value)对它们都不起作用,所以我开始测试了。一台设备有“拍照缩放-...;”但两台设备都有“zoom = ...;”在Camera.Parameters中。在具有“拍照缩放-...;”的设备上,如果我使用Camera.Parameters.set("zoom", int value)它会崩溃,而另一方面它会工作得很好。所以,我的解决方案是,在初始化相机时,我存储一个对Camera.Parameters.get("taking-picture-zoom")!=null保持为true的布尔值,否则为false。从那一刻起,当设置缩放时,只需检查布尔值并使用适当的缩放命令......就是这样,就像一个魅力!当然,你也可以让String保持适当的命令并在设置缩放时使用它。