美好的一天。我正在开发一个连接到BLE设备的Android应用程序,并读取Gatt服务和Gatt特性。我使用Android Development Site的BluetoothLeGatt示例项目作为参考。到目前为止,我能够以编程方式连接到设备(我注意到我的设备地址能够做到这一点),并通过记录UUID过滤出我想要阅读的特定Gatt服务以及该服务的特定特征服务和特征。 Google提供的样本也会在我的BLE设备发送到我的Android应用程序时更新。总的来说,我在这方面没有问题。Android BLE - 一次连接多个设备
但是,在进一步阅读关于GATT的文章后,我发现可以使用单个Android应用程序(作为主或客户端)连接到多个BLE设备(所有从设备或服务器 - 即发送数据的设备)作为接收所述数据的人)。所以我试图做的是拥有2个BLE设备(不同的地址),记下他们的地址,然后当应用程序看到这两个地址已启动并运行时,我的应用程序尝试连接到它们。
在代码中,我调用这个函数,当我看到我的2个BLE装置:
private void connectToDevice(){
mDeviceName = deviceList.get(currentIndex).getName();
mDeviceAddress = deviceList.get(currentIndex).getAddress();
Log.e(TAG, "connecting to device name = " + mDeviceName);
mBluetoothLeService.connect(mDeviceAddress);
}
凡currentIndex
最初设置为零。然后,一旦我得到一个成功的连接,我做的:
private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (BluetoothLeService.ACTION_GATT_CONNECTED.equals(action)) {
Log.e(TAG, "connected");
mConnected = true;
if(currentIndex < deviceList.size()-1) currentIndex ++;
connectToDevice();
}
}
};
我在哪里检查,如果我仍然有设备连接到我的deviceList
,如果是的话,增加我的柜台,然后连接,直到我用尽我的列表中的一切。
但是,我似乎没有成功使用这种方法。
请注意,我的设备之间的切换连接(循环)不是选项。这将是一个问题,因为我有很多设备,并且无延迟地实时传送消息非常重要。这就是说,我必须与我的设备进行实时连接。
有没有人试图连接到Android中的多个BLE设备?截至目前,我不确定如何进行这项工作,任何帮助或线索都非常感谢。
是的,你可以和我做这使用一个简单的循环。我所做的是,首先我扫描设备,一旦发现我把它放在一个数组列表中并调用这个连接方法。要成功建立连接,您还需要锁定和等待机制,因为您想尝试在第一个连接之后建立第二个连接。 – Gautam
@Gautam你会介意发布你的代码,使其工作?我很感谢这个话题的任何线索。 – Razgriz