使用新的Android BLE 4.3启用特征的问题:
我没有收到来自BLE设备的任何通知,尽管我使用队列异步地逐个启用特征通知。
我还使用ENABLE_NOTIFICATION_VALUE用UUID“00002902-0000-1000-8000-00805f9b34fb”编写描述符。
我遵循了Google sdk doc的建议以及各种论坛的建议。
顺便说一句,我在“onDescriptorWrite”上得到status = 128。这个状态意味着什么?
我通过谷歌代码,没有看到任何关于此的信息。即使是源代码也不会像设置此状态那样轻松。
如果您为身体媒体设备启用了通知,请告诉我们是否有人遇到此问题。有时我在描述符写入时获得状态133。我使用最新的Nexus 7进行测试。
答案 0 :(得分:3)
我遇到了同样的问题,并通过禁用和重新启用蓝牙接口解决了这个问题。
Android BLE堆栈似乎仍然不成熟,并且存在不稳定性问题。
答案 1 :(得分:2)
此错误可能与Android操作系统强加的最大阈值有关。
#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
答案 2 :(得分:0)
答案非常晚,但对于在GATT_NO_RESOURCES
电话中遇到状态128(gatt.writedescriptor()
)的任何人来说,这可能都很有价值。
在我的情况下,当尝试为ENABLE_NOTIFICATION_VALUE
编写描述符时,状态128显示为需要通过ENABLE_INDICATION_VALUE
订阅指示的特征。
所以而不是
BluetoothGattDescriptor descriptor = bluetoothGattCharacteristic.getDescriptor(DESCRIPTOR_UUID);
descriptor.setValue(ENABLE_NOTIFICATION_VALUE);
mGatt.writeDescriptor(descriptor);
前往
BluetoothGattDescriptor descriptor = bluetoothGattCharacteristic.getDescriptor(DESCRIPTOR_UUID);
descriptor.setValue(ENABLE_INDICATION_VALUE);
mGatt.writeDescriptor(descriptor);
修正了问题。我假设反过来会产生相同的错误状态128.
答案 3 :(得分:-1)
使用writeCharacteristic
属性执行WriteNoResponse
时收到此错误。当我为WriteWithoutResponse
指定writeCharacteristic
参数时,问题就会消失。