Ich versuche, mich mit einem Bluetooth LE-Thermometer zu verbinden. Die Verbindung mit dem Gerät funktioniert gut. Der einzige Teil, der mich aufhält, ist gattCallBack und es ist onCharacteristicChanged / Read. Die 'setNotification' und der Deskriptor 'setValue' und 'writeDescriptor' geben alle wahr zurück. Der onCharacteristicChanged wird nie aufgerufen, um einen Wert zurückzugeben.
Ich habe ein hübsches kleines Programm aus dem Play Store namens BLE Scanner benutzt, um mir mehr Informationen über das Gerät und seine Dienste und Eigenschaften zu geben.
Deshalb habe ich Service 2, Merkmal 0, einfach hart programmiert. Ich kann einfach nicht herausfinden, warum ich nach dem Schreiben von Descriptor nie etwas zurückkommen sehe. Das Interessante ist, dass ich einige der anderen Merkmale (eines davon ist Temperaturintervall) verwenden kann und ich eine Antwort erhalte (obwohl die Daten verstümmelt sind).
Warum gibt es aus Neugierde auch zwei Deskriptoren für dieses Merkmal?
Dieser Code ist in meiner MainActivity-Methode enthalten. Nicht sicher, ob das hier einen Unterschied machen würde. Ich habe mehrere Methoden angeschaut und ausprobiert, ohne Erfolg.
%Vor%UPDATE: Ich entschied mich, die onDescriptorWrite-Methode zu überprüfen und einige Informationen zu protokollieren.
%Vor%Interessant ist hier, dass der Status 13 zurückgibt, was bedeutet, dass ein Schreibvorgang die maximale Länge des Attributs überschreitet.
Ich werde das weiter untersuchen.
Ich habe das Problem hier gefunden. Ich nahm an, dass das Thermometer den Standard-BLE-Dienst und die charakteristische Konfiguration verwendet hat. Es ist nicht. Sie haben ihr eigenes benutzerdefiniertes Merkmal erstellt. Sobald ich zu diesem Merkmal wechselte, begann die 'geänderte' Methode zu feuern.