android - 从 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,所以我应该是在那个限度之下。
解决方案
推荐阅读
- scheme - 返回参数平均值的方案函数
- react-native - 在 React Native 中嵌入 SQLite
- html - 如何使用jquery计算特定列的总和
- javascript - 专辑封面尺寸不统一(MVC 音乐商店)
- python - 您好,您如何获得 df 中所有值的平均值
- ignite - 点燃集群预加载
- java - 私有仓库与本机模块不兼容
- javascript - fileReadSync 不是函数
- java - #Discord JDA #clear/purge 命令,为什么我的清除先前消息的代码无法按预期工作?
- sql - Microsoft SQL Server Management Studio -> 列名无效