新的camera2应用程序接口把我搞糊涂了。我想开发一个应用程序(为安卓API10- 21),使用设备的摄像头。正如here所说的,我应该使用"Camera“接口。
但是,当我尝试向清单的用户特性it is marked as deprecated添加"Camera“接口(android.hardware.Camera)时。另一方面,我不能将它更改为"camera2“接口(android.hardware.camera2),因为它只与Android API 21+ (Android 5-棒棒糖)兼容-我也会链接它,但我只能添加2个链接。
我不仅希望我的应用程序能在老版本的Android上运行,也希望能在最新版本的Android上运行。
发布于 2015-02-10 03:12:29
即使旧的相机API被标记为弃用,它仍然是完全有效的,并将在相当长的一段时间内保持这种状态(因为目前Play Store上几乎所有使用相机的应用程序都在使用它)。
你必须忽略Android Studio关于它被弃用的抱怨,但如果你想支持早于21世纪的Android版本,你必须使用旧的API。
在API level 21上,你当然可以使用新的API及其新功能,但目前如果你在API之间切换,你必须在你的应用程序中维护一个完全独立的流程。不幸的是,这两个API在世界观上有很大的不同,以至于很难编写一个支持库,让你在旧设备上也能使用类似新API的东西(如果不是在API 21+上,这个库就会从新API映射到旧API)。
发布于 2015-09-11 16:54:14
将您需要的来自camera的所有方法放在一个接口中,然后创建一个camera实例,如下所示
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Log.d(TAG, "camera2 selected");
this.camera = new Camera2(getContext());
} else {
Log.d(TAG, "camera1 selected");
this.camera = new Camera1(getContext());
}
这样你就可以把所有的东西分开,这会让你的生活变得更容易。
建议一句--与camera2的生活并不是那么美好。供应商仍然做垃圾实现,因此您将不得不添加许多条件和变通方法。
示例1- S6报告它不支持闪存:)示例2- LG设备报告了支持的图像大小列表-但并不是所有的图像大小实际上都受支持!
发布于 2014-12-26 21:42:56
要支持您想要的api,请使用以下代码。只需确定与api级别对应的适当名称即可。例如,API21是棒棒糖,API15是ICE_CREAM_SANDWICH_MR1。
if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1)
&& ((Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP))) {
// your code here - is between 15-21
} else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// your code here - is api 21
}
https://stackoverflow.com/questions/27272845
复制相似问题