Android BLE 中每个连接发送的数据包数量是不是有限制?

Posted

技术标签:

【中文标题】Android BLE 中每个连接发送的数据包数量是不是有限制?【英文标题】:Is there a limitation of the number of packets sent per connection in Android BLE?Android BLE 中每个连接发送的数据包数量是否有限制? 【发布时间】:2020-12-02 09:43:07 【问题描述】:

我正在尝试使用 android 设备和 nRF52840 BLE 模块制作数据传输应用程序。

由于我是蓝牙和 BLE 的新手,所以我已经阅读了几篇关于如何使用它的文档。

感谢 google,我编写并构建了几行代码,使 nRF52840 能够与安装在 Android 中的 nRF 连接应用程序连接。

但与我阅读的the document相反,在单个连接间隔内似乎只传输了5~6个数据包。

据我了解,Android 蓝牙存在固有局限性,例如 11.25 ms of minimum connection interval rather than 7.5 ms of Bluetooth 5 spec。

一个blog post on the Punchthrough说Android中每个连接事件的最大数据包数限制为6个,但最后一次更新是在4年前。所以,恐怕它在最近的 Android 操作系统中是否发生了变化。

虽然我尝试在 Android 开发者指南中找到相关信息,但我无法...

有没有人可以帮我解决这个问题?

【问题讨论】:

【参考方案1】:

不,没有限制。 Android 在 HCI 级别将最小/最大连接事件长度参数设置为 0,这意味着由手机中的蓝牙芯片决定连接事件保持打开多长时间。

通常,当蓝牙固件决定连接事件将保持打开多长时间时,会考虑很多因素,例如并发连接数、正在进行的扫描、其他无线电流量(BT 经典和 wifi)和连接长度间隔。

【讨论】:

这是否意味着发送/接收数据包的数量没有软件方面的限制?由于该设备仅用于我的 BLE 通信目的,我认为没有并发连接、持续扫描和其他无线电流量 Android 软件(开源)中没有。这个逻辑在蓝牙芯片上运行的蓝牙固件中,在我所知道的所有情况下,它都是专有的和封闭的源代码。因此,它会根据设备具有的蓝牙芯片而有很大差异。

以上是关于Android BLE 中每个连接发送的数据包数量是不是有限制?的主要内容,如果未能解决你的问题,请参考以下文章

BLE---参数及参数更新

android蓝牙BLE(三) —— 广播

低功耗蓝牙BLE之连接事件连接参数和更新方法

Galaxy S3 Android 4.3 上 BLE 的连接间隔

BLE 设备在不扫描时是不是会读取广告数据包? (自动连接)

Android-Ble蓝牙开发Demo示例–扫描,连接,发送和接收数据,分包解包(附源码)