Android BLE設(shè)置MTU大小實(shí)現(xiàn)詳解
MTU是什么?
MTU是指在一個協(xié)議數(shù)據(jù)單元中(Protocol Data Unit, PDU
) 有效的最大傳輸Byte
。
MTU默認(rèn)是23byte
,但是供我們使用的只有20byte
。所以有時候不能滿足我們的需求,需要我們手動設(shè)置MTU的大小。core spec
中ATT
的默認(rèn)MTU
為23個Byte
,ATT
的Opcode
占1
個Byte
、ATT
的Handle
占2
個Byte
、GATT
占20
個Byte
。
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 21
在Android
中修改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)文章
PopupWindow+RecyclerView實(shí)現(xiàn)上下滑動框功能
這篇文章主要為大家詳細(xì)介紹了PopupWindow+RecyclerView實(shí)現(xiàn)上下滑動框功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07Android 處理OnItemClickListener時關(guān)于焦點(diǎn)顏色的設(shè)置問題
這篇文章主要介紹了Android 處理OnItemClickListener時關(guān)于焦點(diǎn)顏色的設(shè)置問題的相關(guān)資料,需要的朋友可以參考下2017-02-02Android在listview添加checkbox實(shí)現(xiàn)原理與代碼
Android在listview添加checkbox如何實(shí)現(xiàn)一直都是新手朋友們的頭疼問題,接下來為您詳細(xì)介紹實(shí)現(xiàn)方法,感興趣的朋友可以了解下2013-01-01android開發(fā)設(shè)計模式之——單例模式詳解
本篇文章主要介紹了android開發(fā)設(shè)計模式之——單例模式詳解,具有一定的參考價值,有需要的可以了解一下。2016-11-11Android使用Jetpack WindowManager開發(fā)可折疊設(shè)備(過程分享)
這篇文章主要介紹了Android使用Jetpack WindowManager開發(fā)可折疊設(shè)備,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-11-11Android 仿摩拜單車共享單車進(jìn)度條實(shí)現(xiàn)StepView效果
這篇文章主要介紹了android 仿摩拜單車共享單車進(jìn)度條實(shí)現(xiàn)StepView效果的實(shí)例,通過定義五個狀態(tài),分別為:為完成、正在進(jìn)行、已完成、終點(diǎn)完成、終點(diǎn)未完成。具體實(shí)現(xiàn)代碼,大家參考下2017-03-03