写入BLE char_write_req

时间:2018-02-08 16:06:18

标签: android notifications bluetooth-lowenergy descriptor

我想更改通知,所以我这样做了:

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中做同样的事情?

1 个答案:

答案 0 :(得分:0)

问题在于 Android不处理句柄。我痴迷于试图获得一个句柄,但我解决了启用通知的问题。我构建了一个状态机,在其中我逐步启用每个描述符通知,它现在可以正常工作。所以我的代码通常是正确的,但是当我获得一个成功的启用标志时我不得不重复它。

This video非常了解你必须如何处理它。