首页 > 解决方案 > 从 Android 应用程序连接到多个 BLE 外围设备

问题描述

我的目标是连接到多个 BLE 传感器设备(如http://www.blehome.com/sensorbug-PC.html)并订阅有关各种特性(如温度或光度传感器)的通知,以便我可以显示来自附近多个的读数我的应用程序上的位置。

到目前为止,我已经让应用程序和 BLE 服务连接到单个设备。我创建了一个 BleService 类,该类使用 Binder 和 Intent 对象连接到我的应用程序 Activity。BleService 类处理与单个设备的 GATT 连接并包含 BluetoothGattCallback,然后使用 sendBroadcast(Intent) 将更新的信息从设备传递回 MainActivity 中应用程序的 BroadcastReceiver 回调。

下一步。使其适用于多种设备。我根据硬件地址扫描要连接的设备,并从 ScanCallback 获取 BluetoothDevice 对象。然后我尝试创建多个 BleService 实例(每个设备一个)来处理每个设备的连接/GattCharacteristicRead 和所有重要的 BluetoothGattCallback。

问题:我不知道如何通过创建 Intent 并使用 bindService / startService 调用来创建 BleService 类的多个实例(每个 BLE 设备一个),以便 BLE 操作与 Activity 分开发生。似乎使用 bindService / startService 不会创建 Service 类的多个实例,这只会导致与最后一个服务关联的 BluetoothDevice 开始进行任何 Ble 调用和连接。

在这种情况下,也许我不应该使用 Intent/bindService/startService 范例,但是在查看 BLE 文档/示例时,我发现这似乎是应用程序 Activity 与 BLE 层交互的首选方式。任何有关如何从 Android 连接多个 BLE 设备的建议/示例将不胜感激。

我已经看到 Android 可以连接的 BLE 设备的数量是有限制的,我计划连接到 4 个设备,而且大多数 Android 手机或平板电脑的最大连接数似乎是 7,所以我应该是在那个限度之下。

标签: androidservicebluetooth-lowenergy

解决方案


推荐阅读