如何在 API 21 时使用 camera2 class 并使应用程序在较低 API 时仍保持 运行?
How to use the camera2 class for API 21 and make the app still running for lower APIs?
我是 android 开发的初学者,我在使用 android.hardware.camera2 时遇到问题,因为我的最小 sdk 是 API 16。所以我想现在可以使用那个 class 但同时我仍然可以确保使用较低 SDK 的人仍然可以使用它。
是否应该将SDK的最低版本设为API21,然后为低版本的用户创建一个if else语句?或者有别的办法吗?
更新:我无法导入 android.hardware.camera,那么我将如何在我的 if else 语句中使用它(如果它是唯一的选项)?
您不需要 minSdkVersion ≥ 21 即可使用 camera2 API。您甚至不需要设置 targetSdkVersion。您只需要 compileSdkVersion ≥ 21(最好使用开发时可用的最新 API)。
由于您的最小 API 大于 4,您可以简单地在 if (Build.VERSION.SDK_INT >= 21)
下的块中使用新的 camera2 API。这是 Android 普遍接受的做法,尽管一些软件纯粹主义者会坚持 运行 时间检查是否存在 android.hardware.camera2.CameraManager
class.
您应该隔离使用已弃用相机API的代码,并用注释@TargetApi(16)
或@SuppressWarnings("deprecation")
标记这些方法。
我是 android 开发的初学者,我在使用 android.hardware.camera2 时遇到问题,因为我的最小 sdk 是 API 16。所以我想现在可以使用那个 class 但同时我仍然可以确保使用较低 SDK 的人仍然可以使用它。
是否应该将SDK的最低版本设为API21,然后为低版本的用户创建一个if else语句?或者有别的办法吗?
更新:我无法导入 android.hardware.camera,那么我将如何在我的 if else 语句中使用它(如果它是唯一的选项)?
您不需要 minSdkVersion ≥ 21 即可使用 camera2 API。您甚至不需要设置 targetSdkVersion。您只需要 compileSdkVersion ≥ 21(最好使用开发时可用的最新 API)。
由于您的最小 API 大于 4,您可以简单地在 if (Build.VERSION.SDK_INT >= 21)
下的块中使用新的 camera2 API。这是 Android 普遍接受的做法,尽管一些软件纯粹主义者会坚持 运行 时间检查是否存在 android.hardware.camera2.CameraManager
class.
您应该隔离使用已弃用相机API的代码,并用注释@TargetApi(16)
或@SuppressWarnings("deprecation")
标记这些方法。