2015-06-07 32 views
1

由於某些原因,在onCharacteristicChanged中收到的BLE通知的順序錯誤。在Windows上,同一設備和特徵的數據包順序是正確的。請幫助我找到問題所在。Android BLE通知數據包錯誤訂單

@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

我會假設,onCharacteristicChanged是同時在不同的線程,因爲通知來得如此之快調用,因爲線程之間的時間差是如此之小,就成了偶然的事至於哪個線程設法首先獲得Log函數的鎖定併發布數據。

所以它可能是隨機的內部延遲,導致數據在日誌屏幕上以不同的順序出現。