2011-09-06 68 views
2

我正在开发一个使用Camera预览,拍照和缩放功能的应用程序。Android API 7下的相机字符串参数(2.1 Eclair)

我试图保持与Android API级别7(2.1埃克莱尔),它没有实现兼容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. 
} 

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

通过检查(见doc)对HTC通过Camera.Parameters.flatten()返回的值,我能找到"zoom-supported""taking-picture-zoom-min""taking-picture-zoom-max""max-zoom"。令人惊讶的是,我发现没有"min-zoom"

但参数"taking-picture-zoom-min"不会对三星Galaxy S存在,例如,这导致null要返回并getInt()抛出一个NumberFormatException: 'null' cannot be parsed as an integer

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

回答

1

我知道这是一个老话题,但对于那些正在寻找相机变焦...我有同样的问题,现在我有2个Android设备工作不同,都有一些东西在commmon。 Camera.Parameters.setZoom(int值)在两者上都不起作用,所以我开始测试。一台设备具有“拍照 - 缩放 - ...;”但是这两个设备都有“缩放= ...;”在Camera.Parameters中。在具有“拍照 - 缩放-...;”的设备上,如果我使用Camera.Parameters.set(“zoom”,int值),它会崩溃,而另一方面它会工作得很好。所以,我的解决方案是,当初始化相机时,我存储一个布尔值,该值适用于Camera.Parameters.get(“taking-picture-zoom”)!= null,否则为false。从那时起,当设置缩放时,只需检查布尔值并使用适当的缩放命令即可......就是这样,就像一个魅力!当然,你也可以让一个String保存适当的命令并在设置缩放时使用它。