2016-03-10 30 views
3

我已經編寫了一個掃描藍牙智能設備的應用程序,您可以從列表中選擇一個,連接到它並交換一些數據。一切都很順利,直到Android 6.0。關閉藍牙並重新開機後,Android 6.0將不再連接到BLE設備

首先,我修復了新的權限系統,以便應用程序在運行時請求位置權限以掃描設備。由於該應用程序像以前一樣工作,但在關閉藍牙並重新開啓後,應用程序將不再連接,但始終在gatt回調中返回狀態碼爲133的斷開狀態。

我然後試圖幾件事情:

  • 重新啓動該裝置
  • 重新安裝該應用
  • 關閉WiFi,啓用/禁用飛行模式
  • 與NRF主控制面板檢查,相同問題相同的狀態代碼

這一切都沒有解決問題。我能夠再次使用它的唯一方法是從菜單「Backup & reset」中選擇「網絡設置重置」。這兩款開發手機(Moto G3和Samsung S6)都具備此選項,在Android 6.0之前並未見過。

我的問題是:是否有其他人遇到此問題,是否有解決此問題的方法或解決方法?這可能會導致很多麻煩,關閉/開啓藍牙功能非常常見,並且在飛行模式下也會出現問題。

回答

0

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

這些設備的廣告之間存在一些差異,NRF設備沒有啓用某些標誌,並且NRF設備也沒有設置設備名稱。更改後,我可以再次連接。原來,devicename必須啓用,但可以留空。

看起來,在Android 6.0 ble堆棧中,連接到設備的方式發生了變化,如果在藍牙關閉和再次打開後不使用正確的廣告設置,則設備不再可連接。

0

記住藍牙有4個狀態,確保檢查時,它已經在不TURNING_ON:

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

... 

} 

否則你還不能連接到服務器GATT ...

相關問題