2016-08-19 47 views
0

我想创建一个支持Camera和Camera2的Android应用程序,并且我已经通过使用if语句来检查适当的代码段的API级别。然而,我遇到了CameraAccessException的问题,因为我得到了一个lint错误,但我不知道如何摆脱它。如果我使用检查API级别的if语句来围绕try/catch,则lint错误不会消失。有没有其他方式来摆脱皮棉错误?我宁愿不压制检查。以下是我在谈论的一个例子:Android CameraAccessException与旧的Apis生成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语句正在生成的皮棉错误“类需要API级别21”。

回答

0

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