Ⅰ android BLE藍牙踩坑總結
自從 Android-BLE 庫開源了一段時間以來,越來越多的小夥伴問到了各種各樣的關於BLE的奇怪問題,在這里我想跟大家分享一下本人對於Android BLE藍牙的一些看法和解決方式,避免剛接觸的小夥伴再次踩坑。
很多人曾問過我這個問題,為什麼其他手機都沒什麼問題,就華為的一些手機老是連接不穩定,經常連接的很慢,而且連接上還經常斷開。的確,在這里強調一下華為的一部分手機確實很容易出現這種問題,有時候軟體、硬體都搞不定,而且經常性收到客戶投訴關於華為手機連接穩定性問題,這個的確沒有完全解決的辦法,只能靠App和硬體的優化,並不是想甩鍋給華為,咱也不敢問到底是什麼原因,而且我們公司專門針對各個Android版本的手機做過測試,包括藍牙傳輸速率的測試,最後發現華為P20的速度竟然跟小米8的速度差了好幾倍,按理說P20手機也不便宜啊,為什麼手機搜物藍牙晶元不能做的再好一點呢?
BLE掃描濫用預防
AOSP-BLE掃描世歲液濫用說明
息屏狀態下,藍雀斗牙掃描日誌,因為掃描周期是12s,所以列印的時間戳間隔是12s,這里的日誌為系統日誌。
https://android.googlesource.com/platform/external/bluetooth/bluedroid/+/master/include/bt_target.h#1428
stackoverflow問答社區
Ⅱ 藍牙Android誤差問題,怎麼解決
1.中興手機,藍牙手動斷開後,無法再次鏈接問題。(可能別的手機也存在類似問題)
解決辦法: 在連接gatt之前,對bluetoothadapter進行一次scan 順利解決此問題。
2.Gatt鏈接不穩定(在部分手機上出現過,此問題先排除硬體問題。此處只針對自己遇到的情況,或許有別的方案,待補充)
解決辦法: 由於用到了gattserver,在啟動gattserver和連接gatt之間由於未做順序的限制,導致了此問題。經過反復調試後,發現只需要先創建gattserver,在serviceadded之後,在去進行gatt鏈接,此時的gatt連接會比較穩定。
3.小米手機遇到的,在gatt連接之後,手動調用gatt.disconnect 和 close。第二次鏈接後 自動斷開,再次連接會重新綁定。
解決辦法:也是無意中,看到一篇文章,寫的是小米手機在gatt操作的時候 ,最好要做一下sleep操作,可能是因為小米底層對藍牙的某些東西沒有來得及釋放(自己猜測)。 於是在gatt 連接上時,在gatt.discoverServices 之前,加上 sleep(500) ,發現斷開後在連接 成功率大大提高。
Ⅲ Android 7.0 WiFi和藍牙經常自動關閉是為什麼
升級一下系統試試 如果是WIFI模式一直下載 一般情況下也不會掉點很多 20到頭了 藍牙自動開 考慮是被其他程序後台開啟了 安卓一半軟體都有後台程序 用樂安全或者ROOT後用lBE安全大師禁止後台啟動 後台操作手機等等
Ⅳ 如何讓android 藍牙連接之後斷開,再自動嘗試連接
手機連接藍牙設備後會自動斷開連接,建議檢查:
1.查看藍牙設備是否遠離機器。
2.手機是否開啟了飛行模式或超級省電模式。若開啟,手機將會關閉藍牙功能。如需使用藍牙,需要重新開啟。
3.將手機關機重啟。
4.若依然自動斷開藍牙連接,建議更換其他藍牙設備嘗試。
5.若無效,請檢查手機是否有系統更新推送通知。若有,將手機升級到最新版本。
6.若問題依然存在,請備份手機數據,將機器恢復出廠設置嘗試。
若上述操作後手機仍然自動斷開藍牙連接,請您攜帶購機發票、包修卡和機器送到三星服務中心檢測。
Ⅳ 如何實現android藍牙自動配對連接
在Android設備上實現藍牙自動配對連接涉及多個步驟。首先,你需要獲取BluetoothAdapter實例,這通過BluetoothAdapter.getDefaultAdapter()實現。如果返回值為null,說明手機不支持藍牙功能。
接下來,檢查藍牙是否已經開啟,使用blueadapter.isEnabled()方法。如果返回false,需要開啟藍牙。
為了讓設備進入可配對模式,你需要啟動一個配置藍牙可見性的Intent。這一步驟通過創建Intent對象,並設置EXTRA_DISCOVERABLE_DURATION參數來實現,200秒錶示設備在200秒內保持可見。
在AndroidManifest.xml文件中,你需要聲明使用藍牙許可權,否則可能會遇到許可權拒絕的錯誤。
自動配對過程需要設置Pin值。這里提供了一個靜態方法autoBond,它接收藍牙設備類、藍牙設備實例和Pin值作為參數。通過反射調用藍牙設備的setPin方法來設置Pin值。
最後,通過createBond方法發起配對請求。這也是通過反射調用藍牙設備的createBond方法實現。這個方法返回一個布爾值,表示配對是否成功。
在進行自動配對連接時,務必確保藍牙設備支持此類操作,並在測試環境中進行充分測試。此外,處理藍牙連接時還需注意異常情況,確保程序的健壯性。
以上步驟詳細介紹了如何在Android上實現藍牙自動配對連接,適用於需要頻繁進行藍牙設備連接的應用場景。
實現自動配對連接後,你可以通過監聽BluetoothDevice的連接狀態變化來進一步優化用戶體驗,例如,在設備成功連接時觸發特定操作。
值得注意的是,自動配對連接的成功與否取決於多種因素,包括藍牙設備的兼容性、配對過程中的干擾等。
此外,確保在用戶首次使用應用時,明確提示他們啟用藍牙功能,並告知自動配對連接的具體步驟,以提高用戶體驗。