簡體   English   中英

Android/Java - android 方面是否有必要請求 MTU 更新?

[英]Android/Java - Is it necessary on android's side to request a MTU update?

我為 BLE 設備編寫了固件,接收數據包時需要 40 個字節。

我的問題是:是否有必要接收事件“onMtuChanged()”以便我的 android 設備發送超過 23 個字節? 換句話說,這個回調是否允許我的設備發送超過 23 個字節?

其次,有沒有辦法讓我在 android 內部設置 MTU 大小,這樣我就不必請求 MTU 交換? 我的 BLE 設備在接收數據(網狀網絡的一部分)后斷開連接,所以我每次發送數據時都必須交換 MTU 請求。 它大大減慢了傳輸速度。

要允許傳輸超過默認 MTU 的數據,必須協商新的 MTU。 根據規范,禁止在沒有交換更大 MTU 的情況下發送更大的數據包。 您可以從 Android 端(正如您已經發現的)或從外圍端(在這種情況下 Android 不會給您任何回調)啟動 MTU 更改。

如果您不喜歡這樣做所需的額外往返,為什么不直接發送兩個無響應寫入數據包? 這將適合 40 個字節,並且可以在單個連接事件期間發送。

這允許發送超過 23 個字節。

您可以使用代碼段:
gatt.requestMtu(MTU);//MTU is that you want to send bytes

onMtuChanged(BluetoothGatt, int, int)回調將指示此操作是否成功。

如果你不是每次都交換 MTU 請求,你應該通過官方方式重新連接,每次你想再次發送字節時都保持gatt不為null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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