BLE 使用哪个 targetSDK?
Which targetSDK to use for BLE?
我正在构建一个 Android 应用程序,它应该 运行 在每台具有蓝牙低功耗的设备上,这意味着 minSDK 为 18。我不确定我应该使用哪个 targetSDK然而。我在网上看到,最好始终为此使用最新版本 (API 22)。是这种情况,还是我应该使用我支持的每个 targetSDK 构建我的应用程序,即使用 SDK 18 构建 运行 API 18 的应用程序,使用 SDK 19 构建 [=17= 的设备] 19, …?
我很困惑,因为要开始 BLE 发现,我可以使用 startScan() 或 startLeScan()。 Android 文档告诉我:"startLeScan() was deprecated in API level 21, use startScan() instead"。我不确定这对我应该使用哪个 targetSDK 来编译我的应用程序有什么影响。如果我使用 SDK 22 编译并使用 startScan(),设备 运行ning API 18 将能够 运行 我的应用程序,并且设备 运行ning API 22 如果我使用 API 18 编译并使用 startLeScan(),我的应用程序是否能够 运行?或者我真的应该像上面提到的那样使用我支持的每个 targetSDK 构建我的应用程序吗?
让我为您解答。
1) 你已经知道 minSDK
应该是 18(很酷)。因为 LE 支持在那个时候或之后。
2) 如果您使用目标 sdk 18 构建您的应用程序,它也可以在支持 Android 5.0/5.1 的设备上运行。
3) 如果您使用 target >sdk 21 构建您的应用程序,并使用 startLeScan
而不是 startScan
(startScan
是在 5.0/sdk21 中引入的),它将在所有设备 运行 都在 >18 api 级别。
4) 现在是棘手的部分,还有其他 apis 在 5.0+ 上可用,但在较低版本中缺失。我会建议使用最新 sdk 的目标(当前为 23)构建应用程序。
i) 使用不同的 apis 在不同的版本中实现相同的结果。如果 phone 运行ning 低于 Android 5.0,则使用 startLeScan
,否则 startScan
。
ii) Android 5.0 和 5.1 也有差异,因此请相应地使用这些方法。
5) startLeScan
等 api 已 弃用 ,但我知道,它们仍在工作,因为它们已将它们与新的 apis。所以在他们删除旧的 api 之前,它们将在所有平台上工作。这正是弃用的意思:)
所以你的问题的答案 "Which target sdk should be use",答案是最新的 sdk :),并调用相应的 apis 基于 SDK 版本。您可以通过 android.os.Build.VERSION.SDK_INT
在 运行 时间获取 SDK 版本
我建议使用 Android 5.0 及更高版本。为什么? This video 很清楚地说明了 "BLE in Android below 5.0 is crappy".
我正在构建一个 Android 应用程序,它应该 运行 在每台具有蓝牙低功耗的设备上,这意味着 minSDK 为 18。我不确定我应该使用哪个 targetSDK然而。我在网上看到,最好始终为此使用最新版本 (API 22)。是这种情况,还是我应该使用我支持的每个 targetSDK 构建我的应用程序,即使用 SDK 18 构建 运行 API 18 的应用程序,使用 SDK 19 构建 [=17= 的设备] 19, …?
我很困惑,因为要开始 BLE 发现,我可以使用 startScan() 或 startLeScan()。 Android 文档告诉我:"startLeScan() was deprecated in API level 21, use startScan() instead"。我不确定这对我应该使用哪个 targetSDK 来编译我的应用程序有什么影响。如果我使用 SDK 22 编译并使用 startScan(),设备 运行ning API 18 将能够 运行 我的应用程序,并且设备 运行ning API 22 如果我使用 API 18 编译并使用 startLeScan(),我的应用程序是否能够 运行?或者我真的应该像上面提到的那样使用我支持的每个 targetSDK 构建我的应用程序吗?
让我为您解答。
1) 你已经知道 minSDK
应该是 18(很酷)。因为 LE 支持在那个时候或之后。
2) 如果您使用目标 sdk 18 构建您的应用程序,它也可以在支持 Android 5.0/5.1 的设备上运行。
3) 如果您使用 target >sdk 21 构建您的应用程序,并使用 startLeScan
而不是 startScan
(startScan
是在 5.0/sdk21 中引入的),它将在所有设备 运行 都在 >18 api 级别。
4) 现在是棘手的部分,还有其他 apis 在 5.0+ 上可用,但在较低版本中缺失。我会建议使用最新 sdk 的目标(当前为 23)构建应用程序。
i) 使用不同的 apis 在不同的版本中实现相同的结果。如果 phone 运行ning 低于 Android 5.0,则使用 startLeScan
,否则 startScan
。
ii) Android 5.0 和 5.1 也有差异,因此请相应地使用这些方法。
5) startLeScan
等 api 已 弃用 ,但我知道,它们仍在工作,因为它们已将它们与新的 apis。所以在他们删除旧的 api 之前,它们将在所有平台上工作。这正是弃用的意思:)
所以你的问题的答案 "Which target sdk should be use",答案是最新的 sdk :),并调用相应的 apis 基于 SDK 版本。您可以通过 android.os.Build.VERSION.SDK_INT
我建议使用 Android 5.0 及更高版本。为什么? This video 很清楚地说明了 "BLE in Android below 5.0 is crappy".