2017-02-09 8 views
0

J'utilise l'application BLE sur un téléphone Android communiquant avec une carte de capteur BLE personnalisée. Il y a deux caractéristiques fournies par le conseil, accélération et ecg. Au téléphone, j'aimerais recevoir les notifications de deux caractéristiques du tableau des capteurs. Mon code pour définir les notifications:Bluetooth LE écouter plusieurs notifications de caractéristiques

mGatt.setCharacteristicNotification(ecgChar, true); 
      BluetoothGattDescriptor descriptor = ecgChar.getDescriptor(
        UUID.fromString("00002902-0000-1000-8000-00805f9b34fb")); 
      descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE); 
      mGatt.writeDescriptor(descriptor); 
      mGatt.setCharacteristicNotification(accelChar, true); 
      descriptor = ecgChar.getDescriptor(
        UUID.fromString("00002902-0000-1000-8000-00805f9b34fb")); 
      descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE); 
      mGatt.writeDescriptor(descriptor); 

Cependant, je ne peux recevoir des notifications que pour les premières caractéristiques. Lorsque je n'enregistre la notification que pour une caractéristique, cela a bien fonctionné. La fréquence d'échantillonnage est de 100 Hz pour l'ECG et l'accélération. Alors, comment puis-je recevoir des notifications à partir des deux caractéristiques? Merci.

Répondre

2

Vous ne pouvez avoir qu'une seule opération en cours à la fois. Dans ce cas, vous devez effectuer deux appels writeDescriptor avant d'attendre la fin du premier. Vous devez attendre https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback.html#onDescriptorWrite(android.bluetooth.BluetoothGatt, android.bluetooth.BluetoothGattDescriptor, int) jusqu'à ce que vous puissiez envoyer le suivant.

+0

En fait, je sais que l'opération gatt est sérialisée, j'ai donc essayé d'ajouter un délai entre deux écritures mais cela n'a pas fonctionné. Maintenant, j'utilise les callbacks pour gérer la sérialisation, ce qui est la bonne façon, et ça marche bien! Merci! – Sentimental