- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个问题,我不知道如何解决。
我可以成功连接到设备,注册以获取有关特性的通知,并且可以在远程设备上的值更改后成功收到通知。
我遇到的问题是,当连续通知到达时,第二个通知并不总是被服务甚至操作系统捕获,因为我只在第一次看到这个事件:
2139-2398/? D/BtGatt.btif﹕ btgattc_handle_event:Event 1013
2139-2398/? D/BtGatt.btif﹕btif_gattc_upstreams_evt: Event 10
我不想说,但它在 iPhone 5 上工作得很好......
更奇怪的是,它适用于我的三星 S4,但不适用于 Nexus5、S3 或 Xperia T。但是,这似乎取决于它在 onCharacteristicChanged 方法上完成的工作量(完成所有工作大约需要 100 毫秒或更少)。所以我想知道是否有一些事情要避免在 ble 服务上做?
目前我唯一的领导是通过指示更改通知,但我不能在不确定这是否会解决问题之前开始做这项工作,因为它的工作量...
我不明白为什么操作系统不会捕捉到这个事件。
最佳答案
自从我发布这个问题以来,这正是我尝试过的。所以我把所有的工作都放在了一个 new Handler(Looper.getMainLooper()).post(new Runnable(){...})) 中。但结果完全一样......我可能已经找到了我的服务在 N5/Xperia T 上无法正常工作的原因。我想这是因为一旦我注册到正确的特征以接收通知,嵌入的 ble模块向我推送了一个通知,我立即在 Characteristic 中写了一些值。但结果是我注册所有想要的特征的过程尚未完成,而且我从未收到 onCharacteristicWrite() 回调。由于我已经延迟了 writeCharacteristic 方法,所以一切都会恢复正常。我没有解释为什么我之前只收到一个通知......它在 S4 上工作,因为在第一次通知时工作量在 s4 上更为重要。希望这会帮助别人。 ble 开发人员的社区不是很大,我发现 google 并不认为 ble 很重要......希望 future 一切都会改变。
更新:一个绝对更好的解决方案是注册你知道你首先会收到通知的特征是在所有需要的特征结束时注册它。
关于android - onCharacteristicChanged 并不总是被低功耗蓝牙捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22208004/
我是一名优秀的程序员,十分优秀!