java - Android/Java - android 端是否有必要请求 MTU 更新?

标签 java android android-studio bluetooth-lowenergy mtu

我为一个 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/

相关文章:

android - 在 retrofit 认证器中使用协程

android - 更新外部对象 ORMLite - ANDROID

java - 安卓谷歌驱动器 SDK : Saving to App Folder

android - Intent 中的空指针异常

android - 获得对 Genymotion 设备的根访问权限的最佳方法是什么?

java - Solr 设置 - 错误 : Could not find or load main class org. apache.solr.cloud.ZkCLI

java - 为什么我的程序抛出 "IndexOutOfBoundsException",索引为 : 1, Size: 0

java - weblogic 10.3服务器中多场 war 共享Ehcache

ios - 未安装 CocoaPods。跳过 pod 安装

java - 全静态方法和应用单例模式有什么区别?