Android Ble MTU 大小

时间:2021-01-25 10:39:33

标签: android bluetooth-lowenergy mtu

我在我的 Android 应用程序中使用 BluetoothGatt.requestMtu(512)。 第一次效果很好 但是在 Mtu 自动更改为 23 之后(默认)

我不知道是什么问题...

这是一个日志

`D/BluetoothGatt: setCharacteristicNotification() - uuid: 0000fff1-0000-1000-8000-00805f9b34fb enable: true
D/BluetoothGatt: configureMTU() - device: 74:F0:7D:C0:CB:68 mtu: 512
D/BluetoothGatt: onConfigureMTU() - Device=74:F0:7D:C0:CB:68 mtu=23 status=0
D/BluetoothGatt: discoverServices() - device: 74:F0:7D:C0:CB:68
D/BluetoothGatt: onSearchComplete() = Device=74:F0:7D:C0:CB:68 Status=0
I/gattSuccess: gattSuccess`

这是在 onMtuChanged() 中,所以它可以无限循环

1 个答案:

答案 0 :(得分:4)

正如 M. Kotzjan 指出的,这与其他设备支持的 MTU 相关。来自蓝牙规范 v5.2,第 3 卷,第 G 部分,第 4.3.1 节(交换 MTU):-

<块引用>

客户端使用此子过程将 ATT_MTU 设置为 两个设备可以支持的最大可能值 客户端支持大于默认 ATT_MTU 的值 属性协议。本子程序只能启动一次 在连接期间。

换句话说,如果您请求 512 的 MTU 并且远程设备回复 23(最小 MTU 值),则连接的 MTU 将为 23。如果您请求 512 并且远程设备回复 100,则连接的 MTU将是 100。如果您请求 200,而远程设备回复 512,则连接的 MTU 将为 200。

查看以下链接了解更多信息:-

相关问题