我为一个 BLE 设备编写了固件,它在接收数据包时需要 40 个字节。
我的问题是:是否有必要为我的 android 设备接收事件“onMtuChanged()”以发送超过 23 个字节?换句话说,此回调是否允许我的设备发送超过 23 个字节?
其次,有没有办法让我在 android 内部设置 MTU 大小,这样我就不必请求 MTU 交换?我的 BLE 设备在接收数据(网状网络的一部分)后断开连接,因此我每次发送数据时都必须交换 MTU 请求。它会大大减慢传输速度。
最佳答案
要允许传输超过默认 MTU,必须协商一个新的 MTU。根据规范,禁止在未交换更大 MTU 的情况下发送更大的数据包。您可以从 Android 端(正如您已经发现的那样)或从外围设备端(在这种情况下 Android 不会给您任何回调)启动 MTU 更改。
如果您不喜欢执行此操作所需的额外往返,为什么不发送两个 Write Without Response 数据包呢?这将适合 40 个字节,并且可以在单个连接事件期间发送。
关于java - Android/Java - android 端是否有必要请求 MTU 更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48970413/