Android CameraAccessException与较旧的Apis生成lint错误

时间:2016-08-19 19:34:27

标签: android camera lint camera2

我正在尝试创建一个支持Camera和Camera2的Android应用程序,我已经通过使用if语句来检查API级别以获取适当的代码段。但是,我在处理CameraAccessException方面遇到了麻烦,因为我得到了一个lint错误,但我不知道如何摆脱它。如果我使用检查API级别的if语句包围try / catch,则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 require API level 21”。

1 个答案:

答案 0 :(得分:0)

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