我有一个工作应用程序,使用 CoreBluetooth 在 iPad(中央)和 iPhone(外围)之间进行通信。我有一项服务有两个特点。我的 Nexus 7 运行最新的 Android 4.3,支持 BTLE。 Android 加入 BTLE 潮流有点晚了,但看起来他们的做法与 iOS 的做法类似,最初他们只支持充当中央设备,后续版本中将提供外围模式。我可以加载示例 Android BTLE 应用程序并浏览附近的外围设备。将我的 iPhone 广告作为外围设备后,我可以在 Android 端的附近外围设备列表中看到 CBAdvertisementDataLocalNameKey 的值。我可以连接到 iPhone,连接后蓝牙符号从浅灰色变为黑色。连接总是持续 10 秒,然后断开。在 Android 方面,我应该会在连接后立即看到可用服务和特征的列表。我已经证明 Android 代码设置正确,因为我可以将其连接到我拥有的 TI CC2541DK-SENSOR 硬件,并且在连接到它时会列出所有服务和特性。
过去几天我一直在解决这个问题,但没有成功。问题是我无法确定哪个设备遇到错误并因此导致断开连接。在连接阶段或服务发现阶段没有来自 CBPeripheralManagerDelegate 的回调,因此我不知道什么时候发生错误(如果错误发生在 iOS 端)。在 Android 端,调用一个方法来启动服务发现,但是它们的回调“onServicesDiscovered”从未被调用,这令人困惑。有什么方法可以深入了解 iOS 端的 BTLE 通信的内部情况,看看发生了什么并确定发生了什么错误?
我已经经历了这个问题至少一周了,也遇到了同样的问题。我已经在这里问过一个问题并且我已经自己回答了。主要问题是Android BUG问题。它在固定的 L2CAP 通道上发送不允许的命令。
但当 Android 与普通外围 BLE 设备通信时,它工作得很好。事实上,BLE 示例很有魅力。问题是在与 iOS 设备通信时,例如:连接建立后,它们开始协商连接参数(正常 BLE 外设不会发生此阶段),这就是问题出现的时候。 Android 向 iOS 发送错误命令,iOS 断开连接。基本上就是这样运作的
一些问题已经报告给谷歌,其中一个已经被接受,我希望他们很快就会开始解决这个问题。
不幸的是,你能做的就是等到下一个 Android 版本。不管怎样,如果你想弄清楚这个问题,我强烈建议你看看我的问题报告和我的所有测试文档。
这是链接:https://code.google.com/p/android/issues/detail?id=58725 https://code.google.com/p/android/issues/detail?id=58725
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)