當前位置:首頁 » 安卓系統 » android藍牙斷開

android藍牙斷開

發布時間: 2025-03-03 07:39:47

❶ Android BLE藍牙連接異常處理

藍牙通信過程中異常很常見,大致有以下幾種:

1,連接

2,發現服務

3,讀寫

4,通知

連接失敗可能是設備端原因,也可能是手機端原因。不同的手機來自不同的廠家,用的不同的晶元和藍牙協議棧都會導致藍牙功能的表現不一致,這都會導致各式各樣的兼容性問題,可能有的手機連接成功率高,有的成功率低。設備端原因可能有些時候出現異常導致死機無響應,或某些參數設置得有問題。但對於Android應用層開發來說,能做的很有限,藍牙通信是在系統服務進程中處理的,我們無法跨進程改變系統的行為,如果是在一個進程我們還可能通過Hook等手段來調整其內在邏輯。另外應用層的介面只是將請求封裝傳遞給系統服務進程,並未做一些實質性的通信,所以應用層雖然是同一個進程的,但是Hook意義也不大。所以我們能做的僅僅是看怎樣調整介面的調用,使得整體穩定性更好一點而已。

連接失敗分兩種,一種是超時,一種是提前返回失敗。

關於超時,一般是設備不在周圍,或設備斷電未發廣播,或設備當前被其他人連接。系統默認超時為30s,通常返回133,我們也可以自己設置更短的超時時間,超時則closeGatt,然後重新連接。

關於提前返回失敗,一般是有明確的異常,可能是手機藍牙的異常或者設備異常。

這兩種情況建議closeGatt,延時500ms,然後重試。如果重試三次仍然失敗,則可以考慮提示用戶重啟手機藍牙,或者檢查設備是否正常工作。

還有一種情況,連接成功後沒過多久連接又斷開了,這有可能是設備主動斷開,連接成功後有的設備會等待鑒權,如果一定時間內手機端還未發起鑒權則設備端主動斷開。也可能連接信道不夠穩定導致斷開的,此時closeGatt並重新連接即可。

當連接斷開時,會收到onConnectionStateChanged回調,這個回調可能會有一定延時,甚至有5s以上。解決的辦法是輪詢,如每隔1s發起一次讀請求,如果連接斷了會立即返回失敗。

如果藍牙連接不穩定,可以考慮關掉WIFI,因為WIFI通常和藍牙共用一個天線。

有的手機上discoverService可能會回調不止一次onServiceDiscover,這個要注意防禦。

當連接建立後,可以由設備端發起更改連接間隔,這樣能加快後續發現服務以及數據讀寫的速度。有的手機discover service很慢,原因是connect interval太大了,有的手機會主動向設備發起更改connect interval,而有的手機卻不會。這樣的話connect interval相差就會很大,實踐中發現有的手機是7ms,有的手機是默認的50ms,所以發現service都要8s,甚至20s的都很尋常,這對用戶來說是無法忍受的。所以比較好的辦法是設備主動發起更改connect interval,而Android系統是沒有提供對應API的。

如果發現服務失敗,通常來說不用closeGatt,重試一下就好了。如果重試三次還失敗,建議清一下緩存,再closeGatt,重新連接。

讀寫失敗要看失敗的原因是什麼,如果是許可權問題,則需要和設備端確認是否開放了相應的讀寫許可權。也可能是要讀寫的character不存在,可能是設備端修改了固件,手機端需要刷新一下藍牙緩存,closeGatt再重新連接。如果是其它未知錯誤,則重試三次,仍然失敗則closeGatt。不過通常來說如果是因為連接出了問題導致讀寫失敗的,會收到onConnectionStateChanged回調,此時就不用再無謂的重試了,直接closeGatt,重新連接。

打開/關閉character的notify,必須等收到onDescriptorWrite回調之後才算結束,才能開始下一個任務。

如果打開notify失敗,則可以改成周期性輪詢的方式去查詢character的值。

可參考該文章

Android-BLE-Issues

❷ 如何讓android 藍牙連接之後斷開,再自動嘗試連接

手機連接藍牙設備後會自動斷開連接,建議檢查:
1.查看藍牙設備是否遠離機器。
2.手機是否開啟了飛行模式或超級省電模式。若開啟,手機將會關閉藍牙功能。如需使用藍牙,需要重新開啟。
3.將手機關機重啟。
4.若依然自動斷開藍牙連接,建議更換其他藍牙設備嘗試。
5.若無效,請檢查手機是否有系統更新推送通知。若有,將手機升級到最新版本。
6.若問題依然存在,請備份手機數據,將機器恢復出廠設置嘗試。
若上述操作後手機仍然自動斷開藍牙連接,請您攜帶購機發票、包修卡和機器送到三星服務中心檢測。

❸ Android手機藍牙不能用怎麼辦

Android手機藍牙不能用,可重啟一次手機,藍牙硬體會在重啟過程中會自動被重置。重啟後藍牙功能就可以正常啟動了。

熱點內容
丹姿水密碼上的日期是什麼 發布:2025-03-03 20:12:36 瀏覽:438
linuxroot給用戶許可權 發布:2025-03-03 19:50:34 瀏覽:679
android社招 發布:2025-03-03 19:42:01 瀏覽:917
列印mybatissql 發布:2025-03-03 19:33:51 瀏覽:7
c語言中的浮點數 發布:2025-03-03 19:28:25 瀏覽:780
python時間戳格式 發布:2025-03-03 19:28:24 瀏覽:239
腳本管道語法軟體 發布:2025-03-03 19:19:14 瀏覽:184
wps怎麼給表格設置密碼 發布:2025-03-03 19:16:57 瀏覽:504
androidjaraar 發布:2025-03-03 19:14:43 瀏覽:278
支票密碼在哪裡寫 發布:2025-03-03 19:08:18 瀏覽:49