2013-08-26 2 views
5

Eine Frage Merkmale zur Aktivierung des neuen Android-BLE mit 4.3:Android BLE 4.3 onDescriptorWrite Status 128 auf Freigabeeigenschaften liefert Benachrichtigung

Ich bin keine Benachrichtigung von der BLE Gerät bekommen, obwohl ich Benachrichtigung über die Merkmale einer nach dem anderen ermöglichen asynchron Verwenden einer Warteschlange.

Ich schreibe auch den Deskriptor mit UUID "00002902-0000-1000-8000-00805f9b34fb" mit ENABLE_NOTIFICATION_VALUE.

Ich habe die Empfehlung von Google SDK Doc und auch Anregungen aus verschiedenen Foren gefolgt.

Übrigens bekomme ich Status = 128 auf "onDescriptorWrite". Irgendeine Idee, was dieser Status bedeutet?

Ich ging durch Google-Code und habe keine Informationen zu diesem Thema. Selbst der Quellcode wirft kein Licht, wie dieser Status gesetzt wird.

Lassen Sie mich wissen, wenn einer von Ihnen dies erfahren hat, als Sie Benachrichtigungen für das Body-Media-Gerät aktiviert haben. Außerdem bekomme ich manchmal den Status 133 beim Deskriptorschreiben. Ich verwende das neueste Nexus 7 für meine Tests.

+1

Denken Sie nicht, dass es Ihr Problem lösen wird, aber 128 ist GATT_NO_RESOURCES. https://android.googlesource.com/platform/external/bluetooth/bluedroid/+/android-4.3_r1.1/stack/include/gatt_api.h – reTs

+0

Nach meiner Erfahrung ist der Statuscode nicht zuverlässig, es sei denn, der Status ist in angegeben die Entwickler-Website. – reTs

Antwort

3

Ich hatte das gleiche Problem, und löste es durch Deaktivieren und erneutes Aktivieren der Bluetooth-Schnittstelle.

Der Android BLE-Stack scheint noch unausgereift zu sein und leidet unter Instabilitätsproblemen.

2

Dieser Fehler könnte mit der maximalen Schwelle zusammenhängen, die von Android OS auferlegt wird.

#define BTA_GATTC_NOTIF_REG_MAX  15 

- for 4.3 max number of notification/indication is 4 
- for 4.4 max number of notification/indication is 7 
- for 5.0 max number of notification/indication is 15 

https://groups.google.com/forum/#!topic/android-platform/FNHO5KB4sKI

https://android.googlesource.com/platform/external/bluetooth/bluedroid/+/android-5.0.2_r1/bta/gatt/bta_gattc_int.h

-1

erhielt ich diesen Fehler, wenn writeCharacteristic mit der WriteNoResponse Eigenschaft durchgeführt wird. Wenn ich das Argument WriteWithoutResponse für writeCharacteristic angeben, verschwindet das Problem.

0

Eine sehr späte Antwort, aber dies könnte sich für jeden, der auf den Status 128 (GATT_NO_RESOURCES) auf einem gatt.writedescriptor() Anruf stößt, als wertvoll erweisen.

In meinem Fall erschien 128 beim Versuch, einen Deskriptor mit einem Wert von ENABLE_NOTIFICATION_VALUE für ein Merkmal zu schreiben, das eine Subskription für eine Anzeige über ENABLE_INDICATION_VALUE erforderte.

Also statt

BluetoothGattDescriptor descriptor = bluetoothGattCharacteristic.getDescriptor(DESCRIPTOR_UUID); 
descriptor.setValue(ENABLE_NOTIFICATION_VALUE); 
mGatt.writeDescriptor(descriptor); 

für den Gang

BluetoothGattDescriptor descriptor = bluetoothGattCharacteristic.getDescriptor(DESCRIPTOR_UUID); 
descriptor.setValue(ENABLE_INDICATION_VALUE); 
mGatt.writeDescriptor(descriptor); 

Das Problem wurde behoben. Ich nehme an, andersherum wird der gleiche Fehlerstatus 128 erzeugen.

Verwandte Themen