5

关于使用新的 android BLE 4.3 启用特性的问题:

尽管我使用队列异步启用了有关特性的通知,但我没有从 BLE 设备收到任何通知。

我还使用 ENABLE_NOTIFICATION_VALUE 编写了 UUID“00002902-0000-1000-8000-00805f9b34fb”的描述符。

我遵循了 Google sdk doc 的建议以及各种论坛的建议。

顺便说一句,我在“onDescriptorWrite”上得到状态 = 128。知道这种状态意味着什么吗?

我通过谷歌代码并没有看到任何关于此的信息。甚至源代码也没有说明如何设置此状态。

让我知道你们中的任何人在为身体媒体设备启用通知时是否遇到过这种情况。有时我会在描述符写入时获得状态 133。我使用最新的 Nexus 7 进行测试。

4

4 回答 4

3

我有同样的问题,并通过禁用和重新启用蓝牙接口来解决它。

Android BLE 堆栈似乎仍然不成熟,并且存在不稳定问题。

于 2013-10-31T13:26:58.420 回答
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

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

于 2015-01-29T02:32:07.723 回答
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。

于 2017-05-27T02:27:18.330 回答
-1

writeCharacteristic使用该WriteNoResponse属性执行时收到此错误。当我为 指定WriteWithoutResponse参数时writeCharacteristic,问题就消失了。

于 2016-03-05T13:01:13.477 回答