欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android BLE設(shè)置MTU大小實(shí)現(xiàn)詳解

 更新時間:2023年04月27日 10:46:24   作者:努力奔跑的小男孩  
這篇文章主要為大家介紹了Android BLE設(shè)置MTU大小實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

MTU是什么?

MTU是指在一個協(xié)議數(shù)據(jù)單元中(Protocol Data Unit, PDU) 有效的最大傳輸Byte。

MTU默認(rèn)是23byte,但是供我們使用的只有20byte。所以有時候不能滿足我們的需求,需要我們手動設(shè)置MTU的大小。
core specATT的默認(rèn)MTU23個Byte,ATTOpcode1Byte、ATTHandle2ByteGATT20Byte。

23Byte(ATT)=1Byte(Opcode)+2Byte(Handler)+20Byte(BATT)。

BLE版本不同MTU不同

不同的藍(lán)牙版本最大MTU不同,例如:藍(lán)牙4.2的最大MTU=247Byte(不一定正確,也有說是257Byte、也有說是241Byte),藍(lán)牙5.0的最大MTU=512Byte,有效的最大MTU還需要減去協(xié)議Byte、Opcode和Handler。

藍(lán)牙4.2:1Byte(Opcode)+2Byte(Handler)+244Byte(BATT)=247Byte(不一定正確)

藍(lán)牙5.0:512Byte不一定正確)

自定義MTU

Added in API level 21Android中修改MTU很簡單只需要調(diào)用BluetoothGatt#requestMtu(int MTU)方法即可。requestMtu(intMTU)必須在發(fā)現(xiàn)藍(lán)牙服務(wù)并建立藍(lán)牙服務(wù)連接之后才能調(diào)用,否則MTU會默認(rèn)為20Byte。如果調(diào)用成功會自定回調(diào)BluetoothGattCallback類中的onMtuChanged(BluetoothGatt gatt, int mtu, int status)方法。

注意:我看到一些文檔提到在public void onServicesDiscovered(BluetoothGatt gatt, int status) { }方法中設(shè)置MTU,但是親自嘗試之后不起作用。所以在連接成功之后立即設(shè)置MTU,成功之后再去搜索服務(wù)。

以上就是Android BLE設(shè)置MTU大小實(shí)現(xiàn)詳解的詳細(xì)內(nèi)容,更多關(guān)于Android BLE設(shè)置MTU的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論