經過多次試驗和磨難之后,這就是我最好讓Android自動連接的唯一用戶操作是首先選擇設備(如果使用設置菜單然后首先配對).
您必須將配對事件捕獲到BroadcastReceiver中并執行BluetoothDevice.connectGatt()將autoconnect設置為true.然后當設備斷開連接時,調用gatt.connect().
更新:雖然上述方法通常有效,但有時可能會因為待處理的連接使用非常保守的掃描速率而非常緩慢.另一個缺點是,對于要自動重新連接的每個設備,您必須保持BluetoothGatt對象執行掛起連接.在嵌入式世界中,這是瘋狂的.相反,人們通過檢查其廣告來連續掃描并連接到所需設備.一個只保存有關設備的最小數據量(服務,配對狀態和密鑰等).捕獲廣告時,您會看到它是否是您已知的設備之一,如果是,則連接到該廣告.
我試過Android上的等價物.一直掃描(低功率)并連接到感興趣的廣告,并維護代表已知設備的類.這種方法有一些煩人的細節(比如在連接后連接和重啟時關閉掃描)但它基本上沒有維護連接的開銷.但有一個我不明白的例外.掃描儀從未看到過一個預配對設備的廣告.但是,如果我調用此設備的掛起連接,則重新連接.我根本不明白這一點.在我的嵌入式平臺上,它可以正常工作.
如果其他人嘗試過這種方法進行自動重新連接,請分享您的經驗!
我發現Android沒有看到預配對設備的原因.如果設備響應掃描請求,Android僅報告掃描結果.配對后,此設備僅發出廣告并忽略掃描請求,因此Android系統不會在ScanCallback中傳遞其廣告.因此,為了使用掃描方法工作,我必須對這些特定設備使用掛起連接方法.看起來你似乎無法獲勝!