Android BLE,无法连接到设备

时间:2015-09-09 10:25:15

标签: android bluetooth btle

我正在制作一个必须与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应用程序没有这些问题。

有没有人遇到过这些问题? 任何想法如何解决它们?

2 个答案:

答案 0 :(得分:1)

修改  我们做了“解决”这个。为了防止有人在这种情况下遇到困难,我的案例中的问题是从设备到设备甚至从连接到连接的y​​mmv。 有时这个过程会在一秒左右的时间内发生,需要花费5次,在我的测试中,它可以在我测试的设备上爬到15。 至于为什么这是我无法分辨的。

答案 1 :(得分:-1)

我遇到同样的问题。我连接到Bluegigga BLE113蓝牙4.0模块。我的应用程序基于BluetoothLeGatt示例源。我的三星手机连接很好,没有问题。我的LG V10无法连接。除了有时,它会连接。大多数情况下,它不会连接。永远不会调用onConnectionStateChange。这非常令人沮丧,我无法弄清楚这个问题。

但如果我使用NRF Connect,我可以连接我的LG手机,这似乎证明有一个编程解决方案。但是他们没有发布NRF-Connect的来源。

如果有人可以扩展如何解决这个问题,我将不胜感激。