我有一个我正在开发的android应用程序。这是一个BTLE应用程序,我有一些BTLE标签我需要交谈。
我做了所有的书,发现设备,GATT连接(后续绑定),写/读特征……它起作用了。
现在奇怪的是,如果我关闭并打开应用程序两次,它将停止工作。
假设我已经正确连接了一个标记,绑定并正常工作。
电话重启。在第一次->一切正常时打开应用程序。关闭应用程序,再次打开->一切正常。再次关闭应用程序,打开无法从关贸总协定回调接收任何readCharacteristic的->。
在日志中,每次尝试都没有什么不同。我记录每个调用并打印返回状态:没有区别。只有readChar回调永远不会被调用。
安卓是4.3,在不同的手机(S3,S4,Note3)上也有同样的问题(注意:在应用程序关闭时,我正确地断开了所有关贸总协定的东西)
你对检查什么有什么想法吗?或者这是一个已知的android bug?我找过了,但什么也找不到……
发布于 2014-01-23 16:31:28
(至少)专为BTLE设计的Android4.3上的蓝牙协议栈确实存在一些问题。我不知道这是不是特定的供应商实现,驱动程序问题,或者其他什么,但老实说,这对开发人员来说是一场噩梦。
这就是我发现的有助于改进的东西:-禁用无线-通过代码强制启用/禁用蓝牙(BluetoothAdapter方法enable()和disable())
事实上,当事情开始变得“不稳定”时,打开和关闭蓝牙确实可以解决它。这需要BLUETOOTH_ADMIN功能,显然不是我们想要的,因为它会暂时关闭所有蓝牙相关的小工具,并会向用户弹出一些对话框,用户可以在其中禁用正在进行的重启。
现在我得到了更稳定的结果。
尽管如此,谷歌(或任何我不认识的人)还是应该感到羞耻,因为它让这么糟糕的软件暴露了出来。
https://stackoverflow.com/questions/21260974
复制相似问题