【发布时间】:2018-04-10 23:06:45
【问题描述】:
我正在开发一个使用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" 和"max-zoom"。令人惊讶的是,我没有找到"min-zoom"。
但是例如,三星 Galaxy S 上不存在参数 "taking-picture-zoom-min",这会导致 null 被返回,getInt() 抛出 NumberFormatException: 'null' cannot be parsed as an integer。
知道我正在尝试与 Android-7 保持兼容,有没有比使用硬件返回的字符串值更好的方法来处理缩放?如果是这样,是否有可能在某个地方找到所有有效缩放参数的列表(甚至是供应商的列表)?
【问题讨论】: