[英]Android Ble MTU size
我在 android 應用程序中使用了BluetoothGatt.requestMtu(512)
。 第一次運行良好但在 Mtu 自動更改為 23 之后(默認)
我不知道是什么問題...
這是一個日志
`D/BluetoothGatt: setCharacteristicNotification() - uuid: 0000fff1-0000-1000-8000-00805f9b34fb enable: true
D/BluetoothGatt: configureMTU() - device: 74:F0:7D:C0:CB:68 mtu: 512
D/BluetoothGatt: onConfigureMTU() - Device=74:F0:7D:C0:CB:68 mtu=23 status=0
D/BluetoothGatt: discoverServices() - device: 74:F0:7D:C0:CB:68
D/BluetoothGatt: onSearchComplete() = Device=74:F0:7D:C0:CB:68 Status=0
I/gattSuccess: gattSuccess`
這是在 onMtuChanged() 所以它工作無限循環
正如 M. Kotzjan 所指出的,這與其他設備支持的 MTU 有關。 來自藍牙規范 v5.2,第 3 卷,G 部分,第 4.3.1 節(交換 MTU):-
當客戶端支持大於屬性協議的默認 ATT_MTU 的值時,客戶端使用此子過程將 ATT_MTU 設置為兩個設備可以支持的最大可能值。 該子程序在連接期間只能啟動一次。
換句話說,如果您請求 MTU 為 512,而遠程設備回復 23(最小 MTU 值),則連接的 MTU 將為 23。如果您請求 512,遠程設備回復 100,則連接的 MTU 將為 100 . 如果您請求 200,而遠程設備回復 512,則連接的 MTU 將為 200。
請查看以下鏈接以獲取更多信息:-
您可以簡單地采用 byteArray 大小並減少 3,它將為您提供數據數組大小。
if (len < 0) {len = buffer.size - 3}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.