[問題] Android BLE 連線問題

作者: blueblueChen (藍藍欠)   2017-05-31 19:36:14
最近發現自己的程式好像怪怪的
apk中有一個activity和service, service 中就寫關於和裝置連線的 code,例如用安卓
開發網站提供的範例code, gatt = device.connectGatt(xx,xx,mGattcallback);
當獲得 gatt後,activity 就可以 bind 到此 service,透過 gatt 來做連線或斷線。
service 中,有實作此裝置支援的 custom service 和 characteristic(notify) ,
activity 獲得裝置的 command 都是透過此 characteristic改變,然後廣播到
activity,現在,我從 activity disconnect裝置,偶爾會出現斷線後,又
自動連線上,斷線後不應該自動連線阿阿阿,因為這樣
mGattCallback的onConnectStateChange()竟然被呼叫兩次(一次斷線一次又自動連線),
我確定不是我去 call gatt.connect(),而是由底層 callback 呼叫,這比較可能
是上層問題還是韌體那邊? 有人有遇過嗎?? 謝謝
作者: blueblueChen (藍藍欠)   2017-06-01 10:39:00
我先用work around方式,再 gatt.disconnect()後收到 onConnectStateChange(),再下 gatt.close()釋放資源https://goo.gl/JEhrnO 這是我在 nordic 官方po的問題討論串
作者: johnpaladin (小弟)   2017-06-01 20:03:00
會不會是service被bind兩次?
作者: blueblueChen (藍藍欠)   2017-06-02 11:43:00
埋了log,上層apk沒有再一次 bindService也沒有做任何 gatt.connect()的動作,是由底層通知我又再連線成功,和FW工程師討論,SDK有裝置接受斷線後不要作重連的動作,不過預設是有做重連。這問題反映給 Nordic 官方,他們也覺得很困惑..
作者: paulku (蒼木浩介.改)   2017-06-02 17:09:00
你可以去GITHUB找BORDIC官方的APP來測nRF UART這軟體試看看 可以的話就拿他們的SOURCE來改上面打錯 nordic
作者: blueblueChen (藍藍欠)   2017-06-03 10:45:00
我自己改的APK就是從他們官方APK來改的,也用沒改的來測,沒改的也是出現同樣的問題,我在討論串有PO我在討論串說我注釋掉 mService.close()是因為他會自己重連,而導致null point operation官方說要我複製這樣的問題要朝這問題修正,但導致null pointer operation的 root cause就是它會自動重連...下禮拜我再去做確認..身邊沒有裝置
作者: OrmazdAtur (明文笙)   2017-06-08 22:41:00
推,同是nRF晶片開發者,期待您的分享。
作者: codehard   2017-06-12 22:30:00
我也是用Nordic 但我沒這問題 叫fw在onConnected裡面埋log看看是不是真的有reconnection的問題

Links booklink

Contact Us: admin [ a t ] ucptt.com