我在stackoverflow,nordicsemi devzone,在线教程等几乎每一个关于BLE的线程都读过,但仍然无法解决连接10>的问题。 BLE设备与android并行通信。我知道理论上android的限制是7,所以当我写10时我的意思是10个最小的时间。
设置是标准的。服务,GATT为每个设备,广播听众,leScanCallbacks等。
当少数设备与Android通信时出现问题,并且它发生在不同的通信步骤上。
案件是这样的:
一个设备已连接并正在通信,其次,第三个设备正在尝试连接但它仍然失败。成功连接第三个之后,两个新设备正在尝试连接但仍然失败。
当少数设备正在通信但处于不同步骤时,也会出现问题。一个是发现,第二个是读取电池电量,第三个是无法连接,直到这两个完成并断开/关闭。
有时响应没有来,在以编程方式设置超时请求后重试没有任何反应等等
我可以编写xy失败的案例,但不会有模式可以指出明显的错误,这是主要问题。唯一可以肯定的是存在某种碰撞并且"阻止"设备对我的广播接收器的响应但是这种冲突非常奇怪,因为Android设备当时支持7个连接,有时即使< 7设备同时通信,我也不会得到响应。
当我将通信设置为一个接一个(当前一个断开连接开始)时,一切顺利,但这需要时间和时间是我尝试异步同步最大设备数的主要原因。
我的问题是通过蓝牙进行多次通信是否可行,如果可以在Android上实现它?我看到iOS通过多个线程处理它的例子,但我不知道如何在android中使用广播接收器实现这一点,所以我将通信步骤放在不同的线程中,但它没有改变任何内容。
答案 0 :(得分:1)
这是我如何使用BLE线程的示例: 从主Java启动它:
for user_group_detail in UserGroupHeader.objects.get(pk=9).usergroupdetail_set.all():
category = user_group_detail.category
print(category. description)
这是线程代码:
uartBluetoothLaser = new UartBluetooth(this, mHandler);
uartBluetoothRF = new UartBluetooth(this, mHandler);
btAdapter = bluetoothManager.getAdapter();
btAdapter.startLeScan(scanCallback);
uartBluetoothLaser.connect(mainActivity,btAdapter,bluetoothDevice);