【问题标题】:On Android, using BLE, can you scan for devices and connect/maintain a connection to devices?在 Android 上,您可以使用 BLE 扫描设备并连接/保持与设备的连接吗?
【发布时间】:2015-09-23 19:51:54
【问题描述】:

TL;DR:您可以连接到设备并同时扫描更多设备吗?

我正在开发一个与使用 BLE 的设备通信的应用。一位刚刚完成 BLE 项目的同事警告我,不能同时连接设备和扫描,否则会发生不好的事情。我已经提出了这个假设。所以目前我在每个屏幕上连接和断开连接。

连接时间有时可能需要大约 3 秒以上,所以如果我深入应用程序(这也是您可以扫描更多设备的地方),我想通过不断开连接来加快速度。我已经玩了一点,一切似乎都很好(同时做这两个)。

我在 Android 文档中看到您无法同时扫描蓝牙和 BLE,但我没有看到任何关于连接到 BLE 设备和扫描 BLE 设备的信息。

我的同事描述的一些症状是:

  • 无法关闭系统蓝牙(开关会重新打开)
  • 蓝牙会崩溃(不确定是蓝牙共享还是其他原因)
  • 其他使用蓝牙功能的应用会崩溃

【问题讨论】:

  • 理论上我相信这应该是可能的,但随着时间的推移,我已经看到了您同事报告的所有错误,现在等待扫描停止,然后再尝试打开设备。我也只尝试一次在单个设备上处理未完成的请求,这有助于提高稳定性,但对于快速启动和代码结构非常不利。我只在测试版的基础上发布我的 BLE 代码,这在 Google 最终添加支持 2 年后是愚蠢的。

标签: android bluetooth-lowenergy android-bluetooth


【解决方案1】:

您可以同时连接和扫描...尽管某些手机/Android 版本确实存在这些症状。 (一些三星设备的个人经验)

蓝牙可以管理多个连接,因此您可以同时进行扫描和连接。(Multiple bluetooth connection)。

在较旧的 API (18-20) 中,您将使用 BluetoothAdapter 中的 startLeScan 来搜索 BLE 设备。根据我的经验,这确实偶尔会导致您描述的问题。

但是,如果您使用 API 21+,则使用 BluetoothLeScanner.startScan 相当轻松,并且不需要您处理计时器来重新启动扫描。您只需给它一个您正在寻找的蓝牙设备的过滤器和一个回调,它就会在找到符合您条件的设备时通知您的应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多