Android BLE同时在多个BLE硬件上写入数据



我正在开发一个安卓应用程序,我正在使用安卓BLEapi连接到传感器设备。事情进展顺利,但我正在将 4 台 BLE 硬件设备与我的 android 应用程序连接起来,但是当我尝试同时在所有 4 台 BLe 设备上写入一些数据时,它只在单个设备上写入数据,我无法同时在所有设备上写入数据。

这是我在单个BLE设备上写入数据的代码:

if(btWriteGattChar == null)
            return;
        btWriteGattChar.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE);
        btWriteGattChar.setValue(dat);
        mBluetoothGatt[tabIndex].writeCharacteristic(btWriteGattChar);

上面的代码适用于单个BLE设备,但它不允许我在所有其他设备上写入相同的数据。

请让我知道我在多个BLE设备上写入相同数据的错误步骤。

不,你不能那样做。文档中没有说明, 但所有 BLE 操作实际上是同步的.

API 本身是异步的, 但 BLE 堆栈只能一个接一个地完成.例如,在调用 writeCharacteristic 之后,您必须等待 onCharacteristicWrite 才能将其写入另一个设备/特征,否则您将获得未定义的行为。如果您不等待回调,则可以或不编写后续特征。

至少在 4.4.4 之前是这样。不过,我没有检查这是否在 5.0 以后修复。无论如何,如果您的应用程序支持5.0之前的操作系统版本,则必须考虑到这一点。

最新更新