使用Android 4.3/Samsung BLE 2.0 SDK,觀察到外設關閉時,SDK將立即或延遲約20秒後收到onConnectionStateChange(DEVICE_DISCONNECTED)。根據我的經驗,這取決於外設的實現,其中一些會試圖報告它們正在關閉,有些則不會,所以SDK需要等待20秒才能超時。關閉引起意外行爲的外設
要消除這種行爲,我嘗試使用計時器來檢查是否可以讀取某個特徵。如果讀取超時,我會調用disconnect(Android 4.3)/ cancelConnection(Samsung)來終止連接。該調用本身是成功的,並且onConnectionStateChange回調函數返回狀態GATT_SUCCESS。然後,我打開外圍設備並立即連接,發現服務,並在嘗試讀取/寫入/通知任何通知時遇到問題。通過在iOS中使用LightBlue,我可以確認外設沒有連接。
在關閉外圍設備20秒後,我將收到一個DEVICE_DISCONNECTED回調。我之後再次連接,一切正常。
有兩個問題: 1.我們是否應該在20秒延遲期間連接到外設? 2.當外設關閉時,有什麼方法可以得到通知嗎?
在此先感謝。
您能詳細說明20秒延遲期間發生了什麼嗎?在這段時間內我可以調用斷開連接而沒有收到錯誤似乎是不合邏輯的。 – reTs