在Android上,使用BLE技术,你能够扫描设备并连接/保持与设备的连接吗?

3

简述:你能同时连接设备和扫描其他设备吗?

我正在制作一个使用BLE与设备通信的应用程序。一个刚完成BLE项目的同事警告我,不能同时连接设备和扫描其他设备,否则会出现问题。基于这个假设,我目前在每个屏幕上都进行连接和断开。

连接时间有时需要 ~3 秒以上,因此如果我深入应用程序(也是您可以扫描更多设备的地方),我希望通过不断开连接来加快连接速度。我尝试过一些操作,似乎两者同时进行没有问题。

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

我的同事描述了以下一些症状:

  • 无法关闭系统蓝牙(开关会自动打开)
  • 蓝牙会崩溃(不确定是蓝牙共享还是其他什么东西)
  • 其他使用蓝牙的应用程序也会崩溃

理论上我相信这是可能的,但我已经看到你的同事随着时间的推移报告了所有的错误,现在等待扫描停止后再尝试打开设备。我也只尝试并且一次只有一个设备有未完成的请求,这有助于稳定性,但对于快速启动和代码结构来说非常糟糕。我只以测试版的形式发布我的BLE代码,这在Google终于添加支持2年后是愚蠢的。 - Ifor
1个回答

1
你可以同时连接并扫描...尽管这些症状确实存在于一些手机/Android版本中。(个人在一些三星设备上的经验)
蓝牙可以管理多个连接,因此您应该能够同时扫描和连接。(多个蓝牙连接)
在旧的API(18-20)中,您需要使用BluetoothAdapter中的startLeScan搜索BLE设备。根据我的经验,这有时会导致您描述的问题。
但是,如果您使用的是API 21+,则使用BluetoothLeScanner.startScan相当轻松,并且不需要您处理定时器以重新启动扫描。您只需为您要查找的蓝牙设备提供一个过滤器和一个回调,它就会在找到符合您条件的设备时通知您的应用程序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接