如果我的最低API级别是<棉花糖(21)?

时间:2016-09-01 02:41:33

标签: android android-camera android-6.0-marshmallow deprecated

我正在尝试使用相机类在Android应用程序中以编程方式拍照。目标API是最新的(编写时为N),但最小API为15.

在API级别21之前,这是标准:

android.hardware.Camera camera = Camera.open();
camera.takePicture(foos, ro, da);

现在,它已被弃用,他们建议你使用这个

CameraManager manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
manager.openCamera(foos, ro, da);
//A few more steps, but the key one here is the getSystemService call as it gives the warning

但问题是,如果我在我的应用程序中使用第二个API,其最小API为15,它会警告我它不起作用。 (Screenshot Here),如果在API为<的设备上使用它,它似乎会引起问题。 21

在这种情况下我是否应该使用第3个其他类来使用相机功能?我错过了什么吗?或者我应该真的只运行if检查他们的构建和是否< 21,运行已弃用的代码,如果> = 21,请使用新代码?

谢谢!

-PGMac

编辑1:为了进一步澄清,每当Android弃用某些内容时,我都会看到他们制作新的,不推荐使用的代码,向后兼容,这样您就不再需要使用它了。例如:getColorsetBackgroundDrawable等等。我知道here in this answer它们表示我已经提到的内容,我可以使用if检查和比较,但我担心的是弃用的类最终将无法使用并导致代码中断。这真的是这个问题的本质,这种恐惧是否合理?我应该只使用if检查吗?或者通过完全使用不同的类有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

如果您想要定位21岁以下的旧设备,那么您已经使用了正确的相机类,即使它已被弃用。如果您将使用Android推荐的新课程,您将无法定位21 API级别以下的设备,因此如果您想要在应用程序中定位最大设备,则应使用旧的相机类。