【问题标题】:Android CameraAccessException with older Apis generating lint error带有较旧 API 的 Android CameraAccessException 生成 lint 错误
【发布时间】:2016-08-20 05:42:26
【问题描述】:

我正在尝试创建一个同时支持 Camera 和 Camera2 的 Android 应用程序,我已经通过使用 if 语句检查 API 级别的适当代码部分来做到这一点。但是,我在处理 CameraAccessException 时遇到了麻烦,因为我遇到了一个 lint 错误,但我不确定如何摆脱它。如果我用检查 API 级别的 if 语句包围 try/catch,则 lint 错误不会消失。有没有其他方法可以消除 lint 错误?我宁愿不压制检查。这是我所说的一个例子:

private String getFrontCamera2() {
    if (Build.VERSION.SDK_INT >= 21) {
        CameraManager cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
        String[] cameraIdList;
        try {
            cameraIdList = cameraManager.getCameraIdList();
        } catch (CameraAccessException e) {
            return null;
        }
        for (String cameraId : cameraIdList) {
            CameraCharacteristics cameraCharacteristics = null;
            try {
                cameraCharacteristics = cameraManager.getCameraCharacteristics(cameraId);
            } catch (CameraAccessException e) {
                return null;
            }
            Integer lensFacing = cameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
            if (lensFacing != null && lensFacing == CameraCharacteristics.LENS_FACING_FRONT) {
                return cameraId;
            }
        }
    }
    return null;
}

那段代码中的两个 catch 语句都生成 lint 错误“Class requires API level 21”。

【问题讨论】:

    标签: android camera lint camera2


    【解决方案1】:

    我刚刚了解了@TargetApi注解,它解决了我的问题。

    【讨论】:

      猜你喜欢
      • 2012-12-25
      • 2015-11-01
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多