2013-08-26 24 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.