如何为Android应用强制实施最低蓝牙MTU?

时间:2017-06-04 21:13:55

标签: android bluetooth-lowenergy android-bluetooth

我正在使用一块硬件来发送和接收特定BLE特征的数据包。目前,每个数据包必须是单独的读或写。

当从iOS与设备通话时,MTU协商最多157个字节,很容易发现这个限制。它也很容易确认此MTU协商将适用于应用程序需要支持的所有Apple设备。如果没有MTU协商,我们将被限制为默认的23字节ATT MTU,这意味着我们只能发送和接收20字节的数据包(由于GATT开销)。用于某些功能的数据格式不适合20字节的数据包。

在不久的将来,我们将应用程序移植到Android并最终将其发布以供公众使用。我知道Android API为尝试MTU协商提供requestMtu()方法,但如果用户的Android设备不支持高于默认23字节的ATT MTU,我们希望成为能够尽快告诉用户该应用程序将无法执行某些功能。理想情况下,我们希望阻止用户在此类设备上安装应用。

有没有办法直接或间接检测Android设备的BLE MTU功能,而无需先要求用户连接到BLE外设?

(注意:我已经遇到一些轶事声称各种Android设备仅支持23字节默认设置,但这些似乎主要来自不了解MTU协商的开发人员。\ n'可能所有现存的Android设备都支持更高的MTU。我不知道这是否属实。)

1 个答案:

答案 0 :(得分:0)

您能举例说明Android设备不支持高于默认MTU的内容吗?

我听说所有Android设备都应该支持比默认设置更高的MTU。唯一的问题是4.3和4.4没有requestMtu API,但是你可以简单地从外围设备启动MTU更改。