簡體   English   中英

關閉藍牙並重新打開后,Android 6.0將無法再連接到BLE設備

[英]Android 6.0 won't connect to BLE device anymore after turning bluetooth off and back on again

我編寫了一個掃描藍牙智能設備的應用程序,您可以從列表中選擇一個,連接到它並交換一些數據。 一切順利,直到Android 6.0。

首先,我修復了新的權限系統,以便應用程序在運行時請求位置權限,以便能夠掃描設備。 有了這個應用程序就像以前一樣工作,但在關閉藍牙並重新打開之后,應用程序將不再連接,但總是返回斷開連接狀態,並在gatt回調中顯示狀態碼133。

然后我嘗試了幾件事:

  • 重啟設備
  • 重新安裝了應用程序
  • 關閉wifi,啟用/禁用飛行模式
  • 使用NRF主控制面板檢查,相同狀態碼的相同問題

這一切都沒有解決問題。 我能夠讓它再次工作的唯一方法是從“備份和重置”菜單中選擇“網絡設置重置”。 這兩款開發手機(Moto G3和三星S6)均采用此選項,在Android 6.0之前尚未見過。

我的問題是:是否有其他人遇到此問題,是否有修復或解決方法? 這可能會造成很多麻煩,關閉/開啟藍牙這種情況很常見,並且在飛行模式后也會出現問題。

好吧,過了一會兒我就解決了這個問題。 我正在使用NRF ble設備並且無法連接,但我仍然能夠連接到TI sensorTag設備。

設備的廣告之間存在一些差異,NRF設備未啟用某些標志,並且NRF設備也未設置設備名稱。 更改后,我能夠再次連接。 原來,必須啟用devicename,但可以留空。

似乎在Android 6.0 ble堆棧中,與設備的連接方式發生了變化,如果在藍牙關閉再打開后沒有使用正確的廣告設置,則設備不再可連接。

記住藍牙有4種狀態,確保檢查它何時已經開啟而不是TURNING_ON:

if (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1) == BluetoothAdapter.STATE_ON) {

...

}

否則你無法連接到gatt服務器......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM