web-dev-qa-db-fra.com

Android BLE, caractéristiques de lecture et d'écriture

Je développe actuellement Android BLE, et rencontre beaucoup de problèmes avec les piles Android BLE ..

Mon outil de développement est Samsung Galaxy J avec Android 4.3.

Je veux savoir comment lire une caractéristique du BLE et écrire les caractéristiques (c'est comme si je vérifiais les données que j'avais reçues, puis j'envoyais d'autres données en utilisant le BLE)

et j'ai de sérieux problèmes à comprendre comment les callbacks Android BLE fonctionnent, je ne comprends pas ces 5 fonctions ... et le manuel n'est pas clair, quelqu'un de bon âme peut-il l'expliquer sous une forme simple ???

onCharacteristicWrite
onCharacteristicRead
onCharacteristicChanged
onDescriptorRead
onDescriptorWrite

Ma situation actuelle est, j'ai réussi à lire les données dans le rappel onCharacteristicChanged () puis j'ai vérifié les données reçues, j'essaie d'envoyer les données en utilisant

characteristics.setValue(data)
gatt.writeCharacteristic(characteristics)

Mais, la pile Android BLE n'appelle pas onCharacteristicsWrite () et en fait, Android se bloque juste là ..).

J'essaie de google sur Android BLE, il n'y a pas beaucoup d'informations et seulement un tas de plaintes sur l'instabilité des piles BLE ......

27
Tim

Chacun des rappels du Android BLE a ses fonctions;

onDescriptorRead et onDescriptorWrite

Ceci est utilisé pour écrire/lire les paramètres de configuration pour le périphérique BLE, certains fabricants peuvent avoir besoin d'envoyer certaines données au périphérique BLE et de les accuser réception en les lisant, avant de pouvoir vous connecter au périphérique BLE

onCharacteristicWrite

Il est utilisé pour envoyer des données au périphérique BLE, généralement en mode données pour le périphérique BLE. Ce rappel est appelé lorsque vous tapez

gatt.writeCharacteristic(characteristics);

onCharacteristicRead

Ceci est utilisé pour lire les données du périphérique BLE Le rappel est appelé lorsque vous écrivez ce code

gatt.readCharacteristic(characteristics);

onCharacteristicChanged

Ce rappel est appelé lorsque vous essayez d'envoyer des données à l'aide de writeCharacteristic (caractéristiques) et le périphérique BLE répond avec une certaine valeur.

Habituellement, un appareil BLE a peu de caractéristiques, pour simplifier, je nomme quelques caractéristiques

  • ÉCRIRE - écrire les caractéristiques
  • LIRE - lire les caractéristiques

Pour être clair, lorsque vous envoyez des données, vous devrez utiliser les caractéristiques ÉCRIRE , puis lorsque l'appareil BLE répond Android = l'application appellera LIRE caractéristiques

Un point très important à noter est Android La pile BLE vous permet d'écrire les caractéristiques une à la fois uniquement !!

Exemple: SI vous essayez d'appeler les caractéristiques d'écriture deux fois en même temps

gatt.writeCharacteristic(characteristics);
gatt.writeCharacteristic(characteristics);

La pile Android BLE n'émettra pas les 2e caractéristiques d'écriture!

48
user2094060