【问题标题】:Camera's string parameters under Android API 7 (2.1 Eclair)Android API 7(2.1 Eclair)下相机的字符串参数
【发布时间】: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 保持兼容,有没有比使用硬件返回的字符串值更好的方法来处理缩放?如果是这样,是否有可能在某个地方找到所有有效缩放参数的列表(甚至是供应商的列表)?

【问题讨论】:

    标签: android android-camera


    【解决方案1】:

    我知道这是一个老话题,但对于那些正在搜索相机变焦的人来说......我遇到了同样的问题,现在我有 2 个工作方式不同的 android 设备,两者都有一些共同点。

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

    【讨论】:

      猜你喜欢
      • 2019-09-29
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      • 2012-09-18
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多