【问题标题】:Only one APK with Camera2 and old camera API只有一个带有 Camera2 和旧相机 API 的 APK
【发布时间】:2017-04-29 22:21:29
【问题描述】:

我有一个使用 camera2 API 和旧相机版本的应用。问题是我需要使用 minSdkVersion 16 生成单个 APK,并且由于显而易见的原因,camera2 不能一起编译。

我通过为 Camera2 制作了一个独家照片应用程序来快速解决这个问题。我检测到用户的 Android 版本,如果大于或等于 5.0 (21),则触发此特定应用的 Intent。我无法为这个问题找到一个优雅的解决方案。

那么...在这种情况下我怎样才能只生成 APK?

【问题讨论】:

  • 你可以尝试向opencamera学习,按照Commonsguy所说的去做
  • @rupinderjeet 这对我来说不是一个好方法。感谢您的建议。

标签: android camera2


【解决方案1】:

选项 A:同时使用两种 API

第 1 步:将您的 compileSdkVersion 设置为 21 或更高。理想情况下,对于最新版本的 Android,将其设置为 25。

第 2 步:为这两个 API 编写代码。

第 3 步:仅在设备运行 Android 5.0+ 时调用使用 android.hardware.camera2 类的代码:

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP) {
  // use camera2
}
else {
  // use Camera
}

选项 B:仅使用经典相机 API

android.hardware.Camera 在 Android 7.1 和更早版本的设备上运行良好。在从 Android SDK 中删除 android.hardware.Camera 之前,只需使用它即可。但是,您将无法利用 android.hardware.camera2 类提供的任何新功能。

【讨论】:

  • 亲爱的,我的问题是如何使用 minSdk 16 将 camera2 放在同一个包 (APK) 中,以避免另一个 APK 的实施需要 minSdk 作为 21。 compileSdkVersion 是 25。如你所说,我已实现第 3 步。
  • @Mateus:“关于我如何使用 minSdk 16 将 camera2 放在同一个包 (APK) 中以避免另一个 APK”——这就是选项 A。我对选项 B 的看法是你是什么努力去做可能不值得。 “正如你所说,我已经实施了第 3 步”——那你为什么要问这个问题,既然你已经实施了呢?
  • @Mateus:例如,我使用this library 中的选项A 及其相关应用已经一年多了。我已经在 50 多台设备上对其进行了测试,并且该方法运行良好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-16
相关资源
最近更新 更多