2013-08-26 23 views
5

上采用全新Android BLE 4.3启用特性的问题:的Android BLE 4.3 onDescriptorWrite扶持特色返回状态128通知

我没有得到从BLE装置的任何通知,但我通过一个启用的特性之一通知异步使用队列。

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

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

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

我去了谷歌代码,并没有看到任何信息。即使源代码不会告诉我们如何设置这个状态。

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

+1

不要认为它会解决您的问题,但128是GATT_NO_RESOURCES。 https://android.googlesource.com/platform/external/bluetooth/bluedroid/+/android-4.3_r1.1/stack/include/gatt_api.h – reTs

+0

根据我的经验,状态码是不可靠的,除非状态是在开发者网站。 – reTs

回答

3

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

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

-1

我与WriteNoResponse财产进行writeCharacteristic时收到此错误。当我为writeCharacteristic指定WriteWithoutResponse参数时,问题消失。

0

答案很晚,但这对于拨打gatt.writedescriptor()时遇到状态128(GATT_NO_RESOURCES)的任何人都有价值。

在我的情况下,当试图写一个值为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.