0

Camera と Camera2 の両方をサポートする Android アプリを作成しようとしています。コードの適切なセクションの API レベルをチェックする if ステートメントを使用してそれを行いました。ただし、lint エラーが発生するという点で CameraAccessException に対処するのに問題がありますが、それを取り除く方法がわかりません。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