我正在運行sample BluetoothLeGatt app from google,並且無法保持設備連接。我覺得我有點隨意的行爲。藍牙通常不會在第一次嘗試時連接(所以通常我幾乎想說永遠不會)。Android BluetoothLEGatt BLE未與設備保持連接
當我按下連接按鈕時,約有50%的時間該應用程序表示狀態爲已連接。但是,硬件設備有一個LED在連接時應亮起,並且不亮。然後5或6秒鐘後它斷開連接。我懷疑它連接了一秒鐘,然後斷開連接,應用程序暫時沒有得到備忘錄。這裏是logcat的:
D/BluetoothGatt: connect() - device: 54:4A:16:2F:3C:F6, auto: false
D/BluetoothGatt: registerApp()
D/BluetoothGatt: registerApp() - UUID=60edb0ed-90de-4d7d-b4d0-690bcc359fb7
D/BluetoothGatt: onClientRegistered() - status=0 clientIf=10
D/BluetoothLeService: Trying to create a new connection.
D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=10 device=54:4A:16:2F:3C:F6
I/BluetoothLeService: Connected to GATT server.
D/BluetoothGatt: discoverServices() - device: 54:4A:16:2F:3C:F6
I/BluetoothLeService: Attempting to start service discovery:true
D/BluetoothGatt: onGetService() - Device=54:4A:16:2F:3C:F6 UUID=00001800-0000-1000-8000-00805f9b34fb
D/BluetoothGatt: onGetService() - Device=54:4A:16:2F:3C:F6 UUID=00001801-0000-1000-8000-00805f9b34fb
D/BluetoothGatt: onGetService() - Device=54:4A:16:2F:3C:F6 UUID=0000ffe0-0000-1000-8000-00805f9b34fb
D/BluetoothGatt: onGetCharacteristic() - Device=54:4A:16:2F:3C:F6 UUID=00002a00-0000-1000-8000-00805f9b34fb
D/BluetoothGatt: onGetCharacteristic() - Device=54:4A:16:2F:3C:F6 UUID=00002a01-0000-1000-8000-00805f9b34fb
D/BluetoothGatt: onGetCharacteristic() - Device=54:4A:16:2F:3C:F6 UUID=00002a02-0000-1000-8000-00805f9b34fb
D/BluetoothGatt: onGetCharacteristic() - Device=54:4A:16:2F:3C:F6 UUID=00002a03-0000-1000-8000-00805f9b34fb
D/BluetoothGatt: onGetCharacteristic() - Device=54:4A:16:2F:3C:F6 UUID=00002a04-0000-1000-8000-00805f9b34fb
D/BluetoothGatt: onGetCharacteristic() - Device=54:4A:16:2F:3C:F6 UUID=00002a05-0000-1000-8000-00805f9b34fb
D/BluetoothGatt: onGetCharacteristic() - Device=54:4A:16:2F:3C:F6 UUID=0000ffe1-0000-1000-8000-00805f9b34fb
D/BluetoothGatt: onGetDescriptor() - Device=54:4A:16:2F:3C:F6 UUID=00002902-0000-1000-8000-00805f9b34fb
D/BluetoothGatt: onGetDescriptor() - Device=54:4A:16:2F:3C:F6 UUID=00002902-0000-1000-8000-00805f9b34fb
D/BluetoothGatt: onGetDescriptor() - Device=54:4A:16:2F:3C:F6 UUID=00002901-0000-1000-8000-00805f9b34fb
D/BluetoothGatt: onSearchComplete() = Device=54:4A:16:2F:3C:F6 Status=0
D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=10 device=54:4A:16:2F:3C:F6
I/BluetoothLeService: Disconnected from GATT server.
也許我打的連接按鈕,並沒有看到任何事情發生的時間10%:
D/BluetoothGatt: connect() - device: 54:4A:16:2F:3C:F6, auto: false
D/BluetoothGatt: registerApp()
D/BluetoothGatt: registerApp() - UUID=7dbe26bc-4cee-48d2-9f47-59af4edb33bb
D/BluetoothGatt: onClientRegistered() - status=133 clientIf=0
I/BluetoothLeService: Disconnected from GATT server.
D/BluetoothLeService: Trying to create a new connection.
和它實際上連接的時間,也許30%。
這可能是硬件/固件問題。雖然我用iPhone連接到設備時沒有問題,但我想得出結論,Android代碼已經被打破了。我可以發佈所有的BLE代碼,但我實際上只是下載了樣本,以便我知道這並不是我打破的。
編輯:爲那些跟蹤我的數學。應用程序未找到的最後10%的時間什麼它掃描時,我必須重新啓動應用程序。
編輯:我已經從Play商店下載並嘗試了2個其他BLE應用程序,並獲得了與Google樣本BLE應用程序相同的連接問題。是否有一些設置,Android的BLE實現需要具有與iOS不同的設置?
嗨,你發現這個問題的根本原因? 我面臨同樣的問題,但無法獲得相同的理由。 –
有一堆東西。我讀過很多文章,因爲每個硬件製造商都使用不同的BLE芯片,所以很難有可靠的通用android BLE sdk。另一個問題是我們的芯片沒有校準到正確的波特率。我猜測軟件時鐘有10%的變化導致我們丟包。 (我認爲這是正確的 - 我不是硬件人) –
https://atmosphere.anaren.com/wiki/Android_Issues_With_Bluetooth_Low_Energy –