【发布时间】:2017-06-04 21:13:54
【问题描述】:
我正在使用一个硬件,它通过特定的 BLE 特性发送和接收数据包。目前,每个数据包都必须是单独的读取或写入。
从 iOS 与设备通信时,MTU 协商最多 157 个字节,很容易观察到这个限制。也很容易确认此 MTU 协商将适用于应用程序需要支持的所有 Apple 设备。如果没有 MTU 协商,我们将被限制为默认的 23 字节 ATT MTU,这意味着我们只能发送和接收 20 字节数据包(由于 GATT 开销)。用于某些功能的数据格式不适合 20 字节的数据包。
在不久的将来,我们会将应用移植到 Android 并最终发布以供公众使用。我知道 Android API 提供了requestMtu() 方法来尝试 MTU 协商,但是如果用户的 Android 设备不支持高于默认 23 字节的 ATT MTU,我们希望能够尽快告诉用户该应用程序可能无法执行某些功能。理想情况下,我们希望阻止用户在此类设备上安装应用。
有没有一种方法可以检测(直接或间接)Android 设备的 BLE MTU 功能,而无需首先要求用户连接到 BLE 外围设备?
(注意:我遇到过一些轶事声称各种 Android 设备仅支持 23 字节默认值,但这些似乎大多来自不了解 MTU 协商的开发人员。可能所有现存的 Android 设备都支持更高的 MTU。我不知道这是不是真的。)
【问题讨论】:
标签: android bluetooth-lowenergy android-bluetooth