0

我正在尝试创建一个同时支持 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 错误“类需要 API 级别 21”。

4

1 回答 1

0

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

于 2016-08-19T21:42:26.120 回答