1

I’m building an Android app which should run on every device with Bluetooth Low Energy, which means a minSDK of 18. I’m not sure as to which targetSDK I should use however. I read online that it is good practice to always use the latest version for this (API 22). Is this the case, or should I build my application with every targetSDK that I support, i.e. build with the SDK 18 for applications that run API 18, build with SDK 19 for devices with API 19, …?

I’m confused since to start a BLE discovery I can use either startScan() or startLeScan(). The Android documentation tells me: "startLeScan() was deprecated in API level 21, use startScan() instead". I’m unsure what impact this has on which targetSDK I should use to compile my app with. Will devices running API 18 will be able to run my app if I compile with SDK 22 and use startScan(), and will devices running API 22 be able to run my app if I compile with API 18 and use startLeScan()? Or should I really just build my application with every targetSDK that I support like mentioned above?

4

2 回答 2

5

让我为你回答这个问题。

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, else startScan。ii) Android 5.0 和 5.1 也存在差异,因此请相应地使用这些方法。

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

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

于 2015-03-27T04:04:53.617 回答
1

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

于 2015-03-30T06:43:35.423 回答