2017-06-04 63 views
0

我正在使用一块硬件来发送和接收特定BLE特性的数据包。目前,每个数据包必须是单独的读取或写入。如何为Android应用程序强制执行最低蓝牙MTU?

从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协商的开发人员,有可能所有现存的Android设备支持更高的MTU,我不知道这是否正确。)

回答

0

你能举一个Android设备的例子,它不支持比默认MTU更高的东西吗?

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

+0

我不知道有任何这样的设备存在。我没有可靠的数据。我将编辑这个问题来反映这一点。 –