在 Android 中实现与多个设备的蓝牙连接的最佳方法是啥?

Posted

技术标签:

【中文标题】在 Android 中实现与多个设备的蓝牙连接的最佳方法是啥?【英文标题】:What is the best approach to implement bluetooth connectivity with multiple devices in Android?在 Android 中实现与多个设备的蓝牙连接的最佳方法是什么? 【发布时间】:2015-11-18 05:49:46 【问题描述】:

我必须从我的 android java 应用程序中实现与多个设备(4 个设备)的蓝牙连接。应用程序将连续接收来自 2 个连接的 BT(蓝牙)设备的数据,其他 2 个 BT 设备可以根据需要连接,无需保持连续连接。根据要求,应用程序必须连续运行 24 到 48 小时。安装了该应用程序的设备将专用于该应用程序,该应用程序将不断将蓝牙接收到的数据推送到远程服务器。连接的 BT 设备可以随时从应用程序断开连接并重新连接。此外,如果 BT 连接丢失,应该会自动重新连接。实现这一点的最佳方法是什么?

【问题讨论】:

看看这个arissa34.github.io/Android-Multi-Bluetooth-Library 【参考方案1】:

您好,我为 BLE 心率带 (Polar H7) 开发了一个类似的应用程序

我所做的(可能不是最好的方法,但它对我来说很顺利,因为我可以一次处理 5-7 条皮带)是我提供了一项服务来管理与多个 BLE 设备的连接 在服务中,我记录了所有 GATT 回调。

所以我在 backgorund 中使用一项服务来保持和管理连接,并为列表或 Hashmap 中的每个设备分离 GATT 回调。

如果设备断开连接或需要建立新连接,我会相应地连接/断开连接并更新我的 GATT 回调记录。

看看Android BLE sample类似的东西

【讨论】:

你能用这种方法运行应用程序超过 24 小时吗? 是的,因为即使服务被破坏,我也会重新启动它并立即连接到以前的设备。这种情况很少发生,因为这个电话仅用于应用程序目的 您是否为所有 BT 设备使用单一的专用服务? thn 你是如何管理连接丢失错误的?如果 BT 设备自动断开连接,你是在重启服务吗? 是的 1 项服务适用于所有这些,我的服务中有 broadcastReceiver 以获取设备上的连接和断开更新。从那里我管理一切,我不会为此重新启动我的服务

以上是关于在 Android 中实现与多个设备的蓝牙连接的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

android蓝牙:在多个连接的设备上读取远程RSSI

Android 蓝牙 API 连接到多个设备

Android开发之蓝牙(Bluetooth)

多个蓝牙连接

如何使用Android蓝牙开发

如何使用Android蓝牙开发