Android BLE通知包错误顺序

时间:2015-06-07 15:52:40

标签: android bluetooth-lowenergy

由于某些原因,在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

1 个答案:

答案 0 :(得分:0)

我会假设onCharacteristicChanged在不同的线程中同时被调用,因为Notifications变得如此之快,并且由于线程之间的时间差异很小,因此哪个线程设法获得锁定成为一个偶然的机会首先在Log函数上发布数据。

因此,可能是随机的内部延迟会导致数据在日志屏幕上以不同的顺序出现。

相关问题