新的Camera2 API把我弄糊涂了.我想开发一个应用程序(for Android APIs 10 - 21),它使用设备的摄像头.正如前面提到的here,我应该使用"Camera"API.

然而,当我试图将"摄像头"API (android.hardware.Camera)添加到 list 的用户特性it is marked as deprecated中时.另一方面,我不能将其更改为"camera2"API (android.hardware.camera2),因为它只与Android API 21+兼容(Android 5-棒棒糖)-也会链接它,但我只能添加2个链接.

我不仅希望我的应用程序能在旧版本的安卓系统上运行,也希望最新版本的安卓系统上运行...

推荐答案

尽管旧的相机API被标记为不推荐使用,但它仍然功能齐全,并将在相当长的一段时间内保持这种状态(正如Play Store上几乎所有使用相机的应用程序目前都在使用它一样).

你将不得不忽略Android Studio对它被弃用的抱怨,但如果你想支持早于21的Android版本,你必须使用旧的API.

在API级别21上,您当然可以使用新的API及其新功能,但目前如果您在API之间切换,则必须在您的应用程序中维护一个完全独立的流.不幸的是,这两个API的世界观大不相同,以至于很难编写一个支持库,让您也可以在旧设备上使用类似新API的东西(如果不是在API21+上,库就会从新API映射到旧API).

Android相关问答推荐

渠道与共享流有什么区别

Android意图过滤器不限制应用程序仅处理YouTube链接

OutlinedTextField仅显示一次

Play Google上发布的一款应用的房间数据库迁移

Jetpack Compose中尺寸不断增加的动画

如何在使用带有底部导航组件的片段管理器时更改片段工具栏的标签

数据绑定在Android中等待填充值时显示未填充的值

如何使用react native下载android中/data/data/[应用程序包名称文件夹]/files中的文件

如何在我的sqlite数据库中获取某个玩家的分数

在单元测试下断言协程未完成

使用 Kotlin 在 Android 中导航时如何防止 ViewModel 被杀死?

如何以编程方式通过 whatsapp android 共享图像和文本

Android CompanionDeviceManager 永远找不到任何附近的蓝牙设备

android xml底部空间大

协程中的 Job.Cancel 与 Scope.Cancel 有什么区别?

删除一对多关系室 Kotlin 中的所有值

Jetpack Compose:如何绘制这样的路径/线

对话框中的内容不可见

如何使用 Kotlin 在 Android Wear(Galaxy watch 4)中继续在后台运行应用程序

如何在 flow.stateIn() 之后从流中的另一个函数发出emits ?