Android 蓝牙低功耗突发通知

burst notifications with Bluetooth Low Energy on Android

我正在开发一个低功耗蓝牙应用程序来连接一个设备,该设备将在通知模式下以 6 毫秒或更长时间的间隔发送 20 字节长的传输。

到目前为止,应用程序运行良好。它可以扫描、发现然后订阅特征以接收数据通知。问题是,在最初的 2-4 秒内,数据将按顺序很好地读取,但之后通知数据开始以突发或数据块的形式出现,但每次传输之间的间隔不一致。

当我使用 Texas Instruments BLE 评估套件检查数据传输时,这并没有发生,我的 reader 显示了完美的传输,没有出现突发。只有在 android 上它才可见。 这可能是一个可以配置为在 android 端修复的问题吗? 这可能是高传输率(~毫秒间隔)的问题吗?

谢谢..

所以总结起来,通过为 BLE 连接正确配置连接参数可以实现最佳吞吐量。它通常在外围设备端完成,并且可能因连接到的平台而异(即 IOS , Android 可能有不同的连接要求..)

P.S。 : 因为我在看 android 发现这里记录了这个方法 https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html#requestConnectionPriority(int) 它要求连接优先级( CONNECTION_PRIORITY_BALANCED, CONNECTION_PRIORITY_HIGH 或 CONNECTION_PRIORITY_LOW_POWER)但是我没有测试

您可以尝试在开发者选项中启用Bluetooth HCI Snoop Log,然后在WireShark中查看日志文件。寻找连接更新命令,这些命令可以由通信的任何一方发出。此命令更改传输设置并减慢传输速度。还要在您的 TI BLE 应用程序中查找 GAPROLE_PARAM_UPDATE_ENABLE

Michael we use CC2650 and for our requirement BLE is sufficient bur I'm not sure if it really supports bluetooth classic (http://www.ti.com/product/CC2650/description) .

您可以尝试调整 BLE 连接参数来调整设置,这就是我们所做的,而不是尝试构建优先考虑 BLE 的应用程序 operations.Take 请查看此链接以获取有关连接参数的更多信息. https://devzone.nordicsemi.com/question/60/what-is-connection-parameters/

您不能在 phone 上配置连接参数,但可以在外围设备(即 SensorTag)上配置连接参数,即使这样也不能保证给定的参数实际上会被中央设备接受,以防万一中央设备接受的一组参数。 (Android 和 IOS 在这些方面有不同的政策..)

在我们的例子中,我们以 15 毫秒的间隔进行传输,看起来相当稳定。但所有这些高频率传输都以 BLE 的低功耗功能为代价,而这正是它的本意。我们甚至可以低于接近 7.5 毫秒,这是 Android 支持的最小连接间隔。我们最初的测试是稳定的,但如此低延迟的可靠性值得怀疑。