MTU 和真实单包数据发送量
MTU 的设置范围是 23 - 517,具体可设置的值和设备相关,可以通过 BluetoothGatt 的 requestMtu(int) 方法进行修改,设置后会通过 BluetoothGattCallback 的 onMtuChangede(BluetoothGatt,mtu,status) 回调返回真实的 MTU,只有 status 等于 0 的时候才是修改成功。这个结果是通过和外设协商得到的,所以不是说随便设一个值都能修改成功。(在 Android 14 之后默认将 MTU 设置成 517,并且不支持后续修改大小,developer.android.google.cn/about/versi…
MTU 设置成功后,不代表单包数据可以发送这么多,例如:将 MTU 修改成 517 后,真实可发送的数据是要比 517 少,具体单包数据能发送多少可以通过 BluetoothGattCharacteristic 的 getWriteType() 方法,如果返回值等于 BluetoothGattCharacteristic.WRITE_TYPE_SIGNED 那单包数据长度就是 MTU - 12,如果不等于长度就是 MTU - 3