android ble设置mtu大小实现详解-kb88凯时官网登录

来自:网络
时间:2023-07-25
阅读:
目录

mtu是什么?

mtu是指在一个协议数据单元中(protocol data unit, pdu) 有效的最大传输byte

mtu默认是23byte,但是供我们使用的只有20byte。所以有时候不能满足我们的需求,需要我们手动设置mtu的大小。
core specatt的默认mtu23个byteattopcode1byteatthandle2bytegatt20byte

23byte(att)=1byte(opcode) 2byte(handler) 20byte(batt)。

ble版本不同mtu不同

不同的蓝牙版本最大mtu不同,例如:蓝牙4.2的最大mtu=247byte(不一定正确,也有说是257byte、也有说是241byte),蓝牙5.0的最大mtu=512byte,有效的最大mtu还需要减去协议byte、opcode和handler。

蓝牙4.2:1byte(opcode) 2byte(handler) 244byte(batt)=247byte(不一定正确)

蓝牙5.0:512byte不一定正确)

自定义mtu

added in api level 21android中修改mtu很简单只需要调用bluetoothgatt#requestmtu(int mtu)方法即可。requestmtu(intmtu)必须在发现蓝牙服务并建立蓝牙服务连接之后才能调用,否则mtu会默认为20byte。如果调用成功会自定回调bluetoothgattcallback类中的onmtuchanged(bluetoothgatt gatt, int mtu, int status)方法。

android ble设置mtu大小实现详解

注意:我看到一些文档提到在public void onservicesdiscovered(bluetoothgatt gatt, int status) { }方法中设置mtu,但是亲自尝试之后不起作用。所以在连接成功之后立即设置mtu,成功之后再去搜索服务。

以上就是android ble设置mtu大小实现详解的详细内容,更多关于android ble设置mtu的资料请关注其它相关文章!

返回顶部
顶部
网站地图