作者blueblueChen (藍藍欠)
看板AndroidDev
標題[問題] Android BLE 連線問題
時間Wed May 31 19:36:14 2017
最近發現自己的程式好像怪怪的
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 呼叫,這比較可能
是上層問題還是韌體那邊? 有人有遇過嗎?? 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.220.69.181
※ 文章網址: https://webptt.com/m.aspx?n=bbs/AndroidDev/M.1496230577.A.41E.html
1F:→ blueblueChen: 我先用work around方式,再 gatt.disconnect()後 06/01 10:39
2F:→ blueblueChen: 收到 onConnectStateChange(),再下 gatt.close() 06/01 10:40
3F:→ blueblueChen: 釋放資源 06/01 10:40
5F:→ blueblueChen: 問題討論串 06/01 15:38
※ 編輯: blueblueChen (61.220.69.181), 06/01/2017 15:40:27
6F:推 johnpaladin: 會不會是service被bind兩次? 06/01 20:03
7F:→ blueblueChen: 埋了log,上層apk沒有再一次 bindService也沒有 06/02 11:43
8F:→ blueblueChen: 做任何 gatt.connect()的動作,是由底層通知我又再 06/02 11:44
9F:→ blueblueChen: 連線成功,和FW工程師討論,SDK有裝置接受斷線後 06/02 11:45
10F:→ blueblueChen: 不要作重連的動作,不過預設是有做重連。這問題反映 06/02 11:46
11F:→ blueblueChen: 給 Nordic 官方,他們也覺得很困惑.. 06/02 11:46
12F:推 paulku: 你可以去GITHUB找BORDIC官方的APP來測 06/02 17:09
13F:→ paulku: nRF UART這軟體試看看 可以的話就拿他們的SOURCE來改 06/02 17:10
14F:→ paulku: 上面打錯 nordic 06/02 17:10
15F:→ blueblueChen: 我自己改的APK就是從他們官方APK來改的,也用沒改的 06/03 10:45
16F:→ blueblueChen: 來測,沒改的也是出現同樣的問題,我在討論串有PO 06/03 10:45
17F:→ blueblueChen: 我在討論串說我注釋掉 mService.close()是因為他會 06/03 10:47
18F:→ blueblueChen: 自己重連,而導致null point operation 06/03 10:48
19F:→ blueblueChen: 官方說要我複製這樣的問題要朝這問題修正,但導致 06/03 10:48
20F:→ blueblueChen: null pointer operation的 root cause就是它會自動 06/03 10:49
21F:→ blueblueChen: 重連...下禮拜我再去做確認..身邊沒有裝置 06/03 10:51
22F:推 OrmazdAtur: 推,同是nRF晶片開發者,期待您的分享。 06/08 22:41
23F:→ codehard: 我也是用Nordic 但我沒這問題 叫fw在onConnected裡面埋l 06/12 22:30
24F:→ codehard: og看看是不是真的有reconnection的問題 06/12 22:30