【问题标题】:Which targetSDK to use for BLE?BLE 使用哪个 targetSDK?
【发布时间】:2015-05-31 04:35:01
【问题描述】:

我正在构建一个 Android 应用程序,该应用程序应该在每台具有低功耗蓝牙的设备上运行,这意味着 minSDK 为 18。但是我不确定我应该使用哪个 targetSDK。我在网上读到,最好始终使用最新版本(API 22)。是这种情况,还是应该使用我支持的每个 targetSDK 构建我的应用程序,即使用 SDK 18 构建运行 API 18 的应用程序,使用 SDK 19 构建具有 API 19 的设备,......?

我很困惑,因为要启动 BLE 发现,我可以使用 startScan() 或 startLeScan()。 Android 文档告诉我:“startLeScan() 在 API 级别 21 中已弃用,请改用 startScan()”。我不确定这对我应该使用哪个 targetSDK 来编译我的应用程序有什么影响。如果我使用 SDK 22 编译并使用 startScan(),运行 API 18 的设备是否能够运行我的应用程序,如果我使用 API 18 编译并使用 startLeScan(),运行 API 22 的设备是否能够运行我的应用程序?或者我真的应该像上面提到的那样使用我支持的每个 targetSDK 构建我的应用程序吗?

【问题讨论】:

标签: android bluetooth-lowenergy target-sdk android-ble


【解决方案1】:

让我来回答你。

1) 你已经知道minSDK 应该是 18(酷)。因为 LE 支持在那之后或之后就在那里。

2) 如果您使用目标 sdk 18 构建应用,它也可以在支持 Android 5.0/5.1 的设备上运行。

3) 如果您使用 target >sdk 21 构建您的应用程序,并使用 startLeScan 而不是 startScanstartScan 在 5.0/sdk21 中引入),它将适用于运行在 >18 api 级别的所有设备.

4) 现在是棘手的部分,5.0+ 上还有其他可用的 api,而在较低版本中缺少这些 api。我会建议使用最新 sdk 的目标(目前是 23)来构建应用程序。 i) 使用不同的 api 在不同的版本中达到相同的结果。就像如果手机运行低于 Android 5.0,使用startLeScan,否则使用startScan。 ii) Android 5.0 和 5.1 也存在差异,因此请相应地使用这些方法。

5) 像 startLeScan 这样的一些 api 已弃用,但我知道,它们仍在工作,因为它们已将它们与新的 api 捆绑在一起。所以在他们删除旧的 api 之前,他们将在所有平台上工作。这正是弃用的意思:)

所以回答你的问题“应该使用哪个目标sdk”答案是最新的sdk :),并根据SDK版本调用相应的api。您可以通过android.os.Build.VERSION.SDK_INT在运行时获取 SDK 版本

【讨论】:

  • 感谢您的详细解答。因此,如果我理解正确,Android 应用程序始终使用同一个 targetSDK 构建,无论它们应该在哪个 API 编号上运行,但使用基于 VERSION.SDK_INT 的 if/else 子句?所以换句话说,当我从 Play 商店(例如 Dropbox)下载应用程序时,无论我运行的是 JellyBean 还是 Lollipop,我都在下载相同的 APK?
  • 不,这取决于您支持的 Android 设备版本。对于您的情况,您可以在最新的 SDK 上编译,因为最新的 sdk 也具有相同的 api(已弃用),并且它将适用于旧版本和新版本。假设最新的 SDK 没有旧版本上可用的一些 api,并且您想使用这些 api。在这种情况下,您将无法在旧版本上运行相同的应用程序,反之亦然。是的,您为所有版本下载相同的 apk(如果 apk 不支持您的手机操作系统版本,那么您将无法安装该应用程序,期间)。
  • 我在完成对更改的评论之前发布了编辑,我认为原作者混淆了不推荐使用的方法,据此:developer.android.com/reference/android/bluetooth/le/… 是 startScan 是新方法,而 startLeScan 是已弃用。
【解决方案2】:

我建议使用 Android 5.0 及更高版本。为什么? This video 非常清楚地指出“低于 5.0 的 Android 中的 BLE 很糟糕”。

【讨论】:

    猜你喜欢
    • 2017-01-20
    • 1970-01-01
    • 2023-01-30
    • 2017-03-02
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    相关资源
    最近更新 更多