J'ai écrit une application simple pour pouvoir écrire sur une caractéristique spécifique. J'ai basé mon application sur google example - https://github.com/googlesamples/android-BluetoothLeGatt. J'ai ajouté des boutons qui lors de la connexion donne la possibilité d'écrire sur une caractéristique spécifique un octet.Android - le module BLE est plus occupé après quelques secondes de connexion
Maintenant, ce que j'ai remarqué, c'est qu'après une connexion de quelques secondes (toujours moins de 5) cela fonctionne très bien, mais alors la fonction writeCharacteristic (https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html#writeCharacteristic(android.bluetooth.BluetoothGattCharacteristic)) commence à retourner false. J'ai débogué et il s'avère que l'appareil est occupé. Je suis en mesure d'appeler avec succès writeCharacteristic toutes les 1,5 seconde qui, par rapport à aucun retard dans les premières secondes de connexion est très lent.
Voici mon extrait avec fonction onClick:
public void onClick(View v) {
byte value[] = {0};
switch (v.getId()) {
case R.id.button1:
value[0] = 1;
mBulbCharacteristic.setValue(value);
mBluetoothLeService.writeCharacteristic(mBulbCharacteristic);
break;
case R.id.button2:
value[0] = 2;
mBulbCharacteristic.setValue(value);
mBluetoothLeService.writeCharacteristic(mBulbCharacteristic);
break;
case R.id.button3:
value[0] = 3;
mBulbCharacteristic.setValue(value);
mBluetoothLeService.writeCharacteristic(mBulbCharacteristic);
break;
default:
break;
}
}
En fait, je me suis trouvé que l'intervalle de connexion était élevé. Probablement pour les premières secondes, il était inférieur à cause du processus de négociation. +1 encore –