簡體   English   中英

無法將Android連接到特定的BLE設備

[英]Unable to connect Android to a specific BLE device

我正在維護一個可從多個BLE外設檢索數據的舊版Android應用。 嘗試添加對新外圍設備的支持時,我發現該應用程序無法連接到它。 基本問題似乎是當它調用.connectGatt()我立即收到“已連接”錯誤。

我使用RxAndroidBle庫編寫了一些測試代碼。 關閉autoConnect標志后,設備將報告DISCONNECTED ,然后是CONNECTING ,然后(大約1.5秒后)出現連接錯誤: Disconnected from <device address> autoConnect啟用時,它將在DISCONNECTEDCONNECTINGCONNECTED狀態下順利進行並正常運行。

我的測試的較早版本允許掃描在連接階段繼續進行。 如果autoConnect處於打開狀態,它仍然可以工作,但是首先(錯誤地)報告“已經連接”,然后幾秒鍾后修復了自身並連接好。

無論autoConnect的設置如何,舊版應用程序都不會連接。 到目前為止,我最好的猜測是應用程序在找到設備后沒有足夠快地停止掃描(這沒關系,但是據我們了解,那里有很多易碎的BLE設備-而且如上所述,問題是僅在此設備上發生)。 是否可能只是發現設備而導致它建立某種半中斷的連接,從而阻止成功的連接?

我使用的是API 21,因此無法嘗試其他形式的.connectGatt() Nordic的移動nRF掃描器應用程序成功連接,但我認為該應用程序充滿了行為異常的設備的變通辦法。

在Android 6.0和更高版本上,BluetoothDevice的connectGatt方法支持允許強制BLE連接的'transport'參數。 在較舊的Android版本上,可以通過反射來訪問此方法的該版本。 使用TRANSPORT_LE選項可以解決許多雙模設備的連接問題(至少對我來說-沒有記錄默認的TRANSPORT_AUTO選項的實際作用-當兩種模式都可用時,某些藍牙堆棧可能更喜歡BLE)

nRF Connect應該有一個選項,使BLE連接優於BR / EDR(甚至默認為BLE連接)。

暫無
暫無

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

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