Android onCharacteristicChanged在同一时间戳多个数据包

问题描述:

我正在写一个Android应用程序,使用蓝牙LE连接到我们的设备。Android onCharacteristicChanged在同一时间戳多个数据包

将从我们的设备进来的通知之一是它是否在充电器上。这是一个触发一次的通知,在状态改变之前不会再次触发。

在iOS上,这一切都是疯狂的。

在Android上,然而,当连接到Android工作室反正,我有时会在运行时看到,前来为“onCharacteristicChanged”的分组。这是在时间X,其次是完全相同的包完全相同的时间完全相同的特征

有时运行时,我只会看到一个(预期的)。有时2份,有时4份。

它完全疯了,我不知道它为什么会发生。我没有将蓝牙堆栈作为服务或任何东西运行。

这是一个“真正的”问题,还是只是一个日志记录问题?我问,因为还有其他包含序列号的特征(尚未启用此功能),我担心这些包会失败,因为我们会得到重复的序列号!

+0

我想你每次都启用特征通知。确保你只有第一次启用它。 –

我想我发现了这个问题。我没有检查onConnectionStateChange回调中的状态。如果我看到状态是连通的,我只是盲目地分配了gatt,并启动了我的进程的其余部分向设备发送命令。

我想我也有一个问题,我一直在呼吁connectGatt代替连接如果关贸总协定已经存在。

我不得不说,虽然这是我的用户错误,但Android API在这方面确实是愚蠢的。您不必担心哪个“连接”来调用和监视每个状态更改回调,担心您所在的线程以及某些对象是否已分配。