我正在开发一个安卓应用程序,我使用安卓BLE api连接到传感器devices.Things运行得很好,但是我用我的安卓应用程序连接了4个BLE h/w设备,但是当我试图同时在所有4个BLe设备上写入一些数据时,它只在一个设备上写入数据,我不能同时在所有设备上写入数据。
下面是我在单个BLE设备上写入数据的代码:
if(btWriteGattChar == null)
return;
btWriteGattChar.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE);
btWriteGattChar.setValue(dat);
mBluetoothGatt[tabIndex].writeCharacteristic(btWriteGattChar);上面的代码适用于单个BLE设备,但它不允许我在所有其他设备上写入相同的数据。
请告诉我在多个BLE设备上写入相同数据的错误步骤在哪里。
发布于 2014-12-16 19:55:17
不,你不能这么做。文档中没有说明,但是所有的BLE操作实际上都是同步的。
api本身是异步的,但BLE堆栈只能逐个执行。例如,在调用writeCharacteristic之后,您必须等待onCharacteristicWrite,然后才能将其写入另一个设备/特征,否则您将获得未定义的行为。如果您不等待回调,则可以编写后续特征,也可以不编写。
至少在4.4.4版本中是这样的。不过,我没有检查这是不是在5.0以后的版本中修复的。无论如何,如果你的应用程序支持5.0之前的操作系统版本,你必须考虑到这一点。
https://stackoverflow.com/questions/27356668
复制相似问题