我想更改通知,所以我这样做了:
BluetoothGattCharacteristic init_gatt=mConnectedGatt.getService(SERVICE_UUID).getCharacteristic(CHAR_2_UUID);
mConnectedGatt.setCharacteristicNotification(init_gatt,true);
BluetoothGattDescriptor descriptor = init_gatt.getDescriptor(
UUID.fromString("00002902-0000-1000-8000-00805F9B34FB"));
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
descriptor.setValue(BluetoothGattDescriptor.ENABLE_INDICATION_VALUE);
boolean success=mConnectedGatt.writeDescriptor(descriptor);
init_gatt.setValue(new byte[]{0x19});
mConnectedGatt.writeCharacteristic(init_gatt);
所以成功是正确的,但onCharacteristicChanged()永远不会被调用。 一个min的同事用馅饼完成了它 这里我得到了一个gatttool写请求的例子。
gatttool -b <MAC Address> --char-write-req --handle=0x0031 --value=0100 --listen android
参数为char-write-req 0x16 01:00
那么有没有办法在android中做同样的事情?
答案 0 :(得分:0)
问题在于 Android不处理句柄。我痴迷于试图获得一个句柄,但我解决了启用通知的问题。我构建了一个状态机,在其中我逐步启用每个描述符通知,它现在可以正常工作。所以我的代码通常是正确的,但是当我获得一个成功的启用标志时我不得不重复它。
This video非常了解你必须如何处理它。