只有一个 APK 带有 Camera2 和旧相机 API
Only one APK with Camera2 and old camera API
我有一个使用 camera2 API 和旧相机版本的应用程序。问题是我需要使用 minSdkVersion 16 生成单个 APK,而 camera2 不能一起编译,原因很明显。
我通过为 Camera2 制作了一个专属的照片应用程序来快速解决这个问题。我检测到用户的 Android 版本,如果大于或等于 5.0 (21),则触发此特定应用的 Intent。我找不到解决这个问题的优雅方法。
那么...在这种情况下如何只生成 APK?
选项 A:同时使用 APIs
第 1 步:将 compileSdkVersion
设置为 21 或更高。理想情况下,将其设置为 25,以获得最新版本的 Android。
第 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.hardware.Camera
从 Android SDK 中删除之前,请使用它。不过,您将无法利用 android.hardware.camera2
类 提供的任何新功能。
我有一个使用 camera2 API 和旧相机版本的应用程序。问题是我需要使用 minSdkVersion 16 生成单个 APK,而 camera2 不能一起编译,原因很明显。
我通过为 Camera2 制作了一个专属的照片应用程序来快速解决这个问题。我检测到用户的 Android 版本,如果大于或等于 5.0 (21),则触发此特定应用的 Intent。我找不到解决这个问题的优雅方法。
那么...在这种情况下如何只生成 APK?
选项 A:同时使用 APIs
第 1 步:将 compileSdkVersion
设置为 21 或更高。理想情况下,将其设置为 25,以获得最新版本的 Android。
第 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.hardware.Camera
从 Android SDK 中删除之前,请使用它。不过,您将无法利用 android.hardware.camera2
类 提供的任何新功能。