Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android错误的通知包顺序_Android_Bluetooth Lowenergy - Fatal编程技术网

Android错误的通知包顺序

Android错误的通知包顺序,android,bluetooth-lowenergy,Android,Bluetooth Lowenergy,由于某些原因,在onCharacteristicChanged中接收到的可撤销通知的顺序错误。在windows上,相同设备和特征的数据包顺序是正确的。请帮我找出问题所在 @Override public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { if (characteristic.getUuid().equals(BleConstants.

由于某些原因,在onCharacteristicChanged中接收到的可撤销通知的顺序错误。在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

我假设在不同的线程中并发调用
onCharacteristicChanged
,因为通知来得如此之快,而且由于线程之间的时间差如此之小,所以哪个线程首先设法获得
Log
函数的锁并发布数据就成了一个机会问题


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

我假设在不同的线程中同时调用
onCharacteristicChanged
,因为通知来得如此之快,而且线程之间的时间差如此之小,至于哪个线程首先设法获得
Log
函数的锁并发布数据,这就成了一个机会问题

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