Android BluetoothLEGatt BLE未与设备

时间:2015-11-03 17:50:46

标签: android bluetooth-lowenergy android-bluetooth android-ble

我正在运行sample BluetoothLeGatt app from google并无法保持设备连接。我觉得我有一点随机行为。蓝牙通常不会在第一次尝试时连接(所以通常我几乎不想说永远不会。)

当我按下连接按钮时,大约有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连接到设备时没有问题,所以我想得出结论,安卓代码在某个地方破了。我可以发布所有的BLE代码,但我只是下载了样本,所以我知道这不是我破坏的。

编辑:对于那些跟踪我的数学的人。应用程序在扫描时找不到任何的最后10%的时间,我必须重新启动应用程序。

修改:我已经从Play商店下载并尝试了其他2个BLE应用,并且获得了与Google样本BLE应用相同的连接问题。 Android的BLE实现需要具备哪些与iOS不同的设置?

1 个答案:

答案 0 :(得分:0)

尝试使用: BluetoothDevice.connectGatt(上下文上下文,布尔autoConnect,BluetoothGattCallback回调,int传输)

以TRANSPORT_LE作为运输工具。

这对我有用。