在Android 4.3-4.4上请求具有蓝牙低功耗连接的MTU(API 18-20)

时间:2015-06-17 23:52:58

标签: android bluetooth bluetooth-lowenergy

我有蓝牙低功耗应用程序,要求MTU大小超过默认的23个字节。

虽然Android在API 21中引入了BluetoothGatt#requestMTU(),但是否有任何方式(包括使用私有API)来完成此API 21之前?

1 个答案:

答案 0 :(得分:5)

如果您可以控制外围设备,则可以从外围设备发出MTU请求(ATT_OP_MTU_REQ,操作码0x02)。如果外围设备请求,Android可以使用更大的GATT MTU(更新:517字节是最大值),并且很乐意发送相应的ATT_OP_MTU_RESP。

唯一棘手的问题是MTU交换可能不会与碎片读/写重叠。一种解决方法可能是在握手的给定时间进行客户端休眠,其中外围设备发送MTU请求。另一种可能的解决方法是对#34;魔法"进行读取或写入。触发MTU交换的特征。

然而,随着MTU的增加,我更经常收到Status = 133错误,这可能是由于较大的数据包错误率较高造成的?