从Android应用程序连接到多个可编程外围设备

从Android应用程序连接到多个可编程外围设备,android,service,bluetooth-lowenergy,Android,Service,Bluetooth Lowenergy,我的目标是连接到多个BLE传感器设备(如),并订阅各种特性的通知(如温度或光度传感器),以便我可以在我的应用程序上显示多个附近位置的读数 到目前为止,我已经将应用程序和BLE服务连接到一台设备上。我已经创建了一个BleService类,它通过绑定器和意图对象连接到我的应用程序活动。BleService类处理与单个设备的GATT连接,并包含BluetoothGattCallback,然后使用sendBroadcast(Intent)将更新的信息从设备中继回MainActivity中应用程序的Bro

我的目标是连接到多个BLE传感器设备(如),并订阅各种特性的通知(如温度或光度传感器),以便我可以在我的应用程序上显示多个附近位置的读数

到目前为止,我已经将应用程序和BLE服务连接到一台设备上。我已经创建了一个BleService类,它通过绑定器和意图对象连接到我的应用程序活动。BleService类处理与单个设备的GATT连接,并包含BluetoothGattCallback,然后使用sendBroadcast(Intent)将更新的信息从设备中继回MainActivity中应用程序的BroadcastReceiver回调

下一步。让它与多个设备一起工作。我根据硬件地址扫描要连接的设备,并从ScanCallback中获取BluetoothDevice对象。然后,我尝试创建多个BleService实例(每个设备一个)来处理每个设备的connections/GattCharacteristicRead和所有重要的BluetoothGattCallback

问题:我不知道如何通过创建一个Intent并使用bindService/startService调用来创建BleService类的多个实例(每个BLE设备一个实例),以便BLE操作与活动分开进行。使用bindService/startService似乎不会创建服务类的多个实例,这只会导致与上一个服务相关联的Bluetooth设备开始进行任何可恢复的调用和连接

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


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

谢谢。这有点帮助,尽管创建映射以管理ble连接实例的建议仍然会导致onCharacteristicRead的129状态。因为我是一个新手,所以,发布后续问题并提供更详细的来源来解释的正确方式是什么?我是否应该创建一个新问题,并按照回答解决此问题?谢谢。这有点帮助,尽管创建映射以管理ble连接实例的建议仍然会导致onCharacteristicRead的129状态。因为我是一个新手,所以,发布后续问题并提供更详细的来源来解释的正确方式是什么?我是否应该创建一个新问题,并按照回答解决此问题?