In meiner Anwendung habe ich die LESEN und WRITE auf spezifische BluetoothGattCharacteristic
Objekten zu arbeiten. Die BluetoothGattCallback
onCharacteristicWrite
und onCharacteristicRead
werden ordnungsgemäß aufgerufen. Ich habe dann versucht, die NOTIFY Option so einzurichten, dass meine Android App benachrichtigt wird, wenn sich eine bestimmte Eigenschaft auf dem Gerät ändert. Ich habe dies über den folgenden Code ein:Making Lesen, Schreiben und NOTIFY arbeitet an Android BLE (Version 21 und höher)
// Local notifications
mGatt.setCharacteristicNotification(statusTypeCharacteristic, notify);
// Remote notifications
BluetoothGattDescriptor desc = statusTypeCharacteristic.getDescriptor(UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"));
Log.d("Descriptor", desc.toString());
boolean test;
test = desc.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE); // return value = true
test = mGatt.writeDescriptor(desc); // return value = true
Wenn die charakteristischen Veränderungen der Rückruf: onCharacteristicChanged
jedoch jetzt alle LESEN und WRITE Operationen nicht arbeite mehr. Wenn ich die Zeilen kommentieren, die sich mit dem Deskriptor beschäftigen, funktionieren die READ und WRITE wieder.
Ein Teil ich bin sehr unklar ist um die UUID
verwendet, um den Deskriptor zu bekommen. Ist es richtig? Sollte ich stattdessen alle Deskriptoren aus dem Merkmal scannen und die Benachrichtigung auf einem aktivieren? Woher weiß ich, welche ich einstellen muss, wenn mehrere zurückkommen?
Sache ist, sind alle ble Operationen wirklich, asynchron in der Natur, müssen Sie, dass der Geist in halten. – t0mm13b