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

尽管Android在API 21中引入了BluetoothGatt#requestMTU(),但是否有(包括使用私有(private)API的)来完成此API 21之前的版本?

最佳答案

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

唯一棘手的事情是MTU交换可能不会与零散的读/写重叠。一种解决方法是在给定的握手时间客户端 sleep ,在该时间外围设备发送MTU请求。另一个可能的解决方法是触发MTU交换的“魔术”特性上的READ或WRITE。

但是,随着MTU的增加,我会更经常收到Status = 133错误,这可能是由较大数据包的较高数据包错误率引起的吗?

关于android - 在Android 4.3-4.4(API 18-20)上请求具有蓝牙低功耗连接的MTU,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30904341/

10-10 08:22