由于某些原因,在onCharacteristicChanged中收到的BLE通知订单错误。在Windows上,相同设备和特性的数据包顺序是正确的。请帮我找出问题所在。
@Override
public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
if (characteristic.getUuid().equals(BleConstants.MY_CHARACTERISTIC_UUID)) {
MyData data = MyDataConverter.convertData(characteristic.getValue());
Log.i("Data", String.valueOf(data.timeStamp));
}
}
日志
06-07 18:25:39.931 13488-14238/com.package.package I/Data﹕ 15942
06-07 18:25:39.936 13488-14238/com.package.package I/Data﹕ 15962
06-07 18:25:39.981 13488-13498/com.package.package I/Data﹕ 15746
06-07 18:25:39.986 13488-13498/com.package.package I/Data﹕ 15766
06-07 18:25:40.031 13488-13500/com.package.package I/Data﹕ 15786
06-07 18:25:40.031 13488-13500/com.package.package I/Data﹕ 15806
06-07 18:25:40.076 13488-14060/com.package.package I/Data﹕ 15827
06-07 18:25:40.081 13488-14060/com.package.package I/Data﹕ 15847
答案 0 :(得分:0)
我会假设onCharacteristicChanged
在不同的线程中同时被调用,因为Notifications变得如此之快,并且由于线程之间的时间差异很小,因此哪个线程设法获得锁定成为一个偶然的机会首先在Log
函数上发布数据。
因此,可能是随机的内部延迟会导致数据在日志屏幕上以不同的顺序出现。