我正在製作一個應用程序,該應用程序必須與Android上的BLE設備交談。Android BLE,無法連接到設備
我遇到了建立與BLE設備連接的問題。
案例1)掃描: 在掃描過程中的設備已經被發現,並通過
BluetoothLEScanCallback.onScanResult(...)
報道,我試圖通過連接後:
result.getDevice().connectGatt(...)
問題是一些設備我測試了這個(即運行Android 5.0.1的HTC One M8和運行Android 4.3的HTC Desire 516)連接過程似乎失敗了,即回調
BluetoothGattCallback.onConnectionStateChange(....)
大部分時間根本不叫。 現在這不是一個一致的行爲,有時它不是。
的第二個問題是,往往當連接建立 的
BluetoothGatt.discoverServices()
調用失敗,即 BluetoothGattCallback.onServicesDiscovered(...) 也不會被調用。我嘗試重試呼叫幾次,間隔X毫秒,但它似乎始終失敗,無論嘗試的次數或它們之間的間隔。
案例2聽力
當我嘗試只是「聽」的設備,再次調用
BluetoothDevice device = BluetoothManager.getAdapter().getRemoteDevice(macAddress);
device.connectGatt(...)
結果往往在相同的情況下幾乎同樣的事情發生。
在這兩種情況下,我大多數時候都遇到了Android問題,我有一個Nexus 5設備,其中相同的代碼似乎在大多數情況下工作(有時BT堆棧似乎無法完成其工作) 更令人不安的是,我們擁有的iOS應用程序沒有這些問題。
有沒有人遇到這些問題? 任何想法如何解決他們?
你在測試BluetoothGatt.discoverServices()的布爾結果嗎? –
是的,我正在檢查它,並且我有一個重試策略,以防BTLE「忙」並且不希望接受呼叫。 –