我正在尝试使用相机类在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弃用某些内容时,我都会看到他们制作新的,不推荐使用的代码,向后兼容,这样您就不再需要使用它了。例如:getColor,setBackgroundDrawable等等。我知道here in this answer它们表示我已经提到的内容,我可以使用if检查和比较,但我担心的是弃用的类最终将无法使用并导致代码中断。这真的是这个问题的本质,这种恐惧是否合理?我应该只使用if检查吗?或者通过完全使用不同的类有更好的方法吗?
答案 0 :(得分:0)
如果您想要定位21岁以下的旧设备,那么您已经使用了正确的相机类,即使它已被弃用。如果您将使用Android推荐的新课程,您将无法定位21 API级别以下的设备,因此如果您想要在应用程序中定位最大设备,则应使用旧的相机类。