我正在尝试创建一个同时支持 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”。