簡體   English   中英

Android Ble MTU尺寸

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM