簡體   English   中英

如何通過BLE 100字節做廣告?

[英]How can I advertise via BLE 100 bytes?

如何通過BLE 100字節做廣告?
SDK> = 26
我可以播發20個字節,但是當我播發20個以上的字節時,會出現異常。

我已經讀過這些文章:
Android:通過BLE發送大於20個字節的數據
如何在android中通過ble發送超過20個字節的數據?

據我所知,提到的鏈接不是廣告解決方案,而是P2P連接,對嗎?

我的代碼:

     private fun startAdvertising() {
        goForeground()

        Log.d(tag, "Service: Starting Advertising")

        if (mAdvertiseCallback == null) {
            val settings = buildAdvertiseSettings()
            mAdvertiseCallback = SampleAdvertiseCallback()

            if (mBluetoothLeAdvertiser != null) {
                mBluetoothLeAdvertiser!!.startAdvertising(settings, data, mAdvertiseCallback)
            }
        }
    } 

private fun buildAdvertiseData(): AdvertiseData {
        val advertisingData = AdvertiseData.Builder()
        val uuid = BeaconWiliot.manufactureUuid
        advertisingData.addServiceUuid(uuid)
        advertisingData.setIncludeDeviceName(false)
        advertisingData.addServiceData(uuid, ByteArray(20))
        return advertisingData.build()
    }

你不能。

廣告包的最大長度為31個字節。 此外,您可以實施掃描響應。
BLE數據包的MTU大小在建立連接后進行協商,與通告大小無關。

此掃描響應就像廣告數據的擴展:
您的設備廣播廣告。 如果掃描設備感興趣,它可以請求掃描響應。 掃描響應可以在廣告上包含或多或少的相同數據,也可以具有31個字節。
通常,將數據放入掃描響應會比較慢,因為必須發出新請求。 從用戶的角度來看,這幾乎沒有什么區別。

總共有62個字節。 通常,這62個字節包含諸如名稱之類的數據和諸如“ BLE_FLAGS_GENERAL_DISCOVERABLE_MODE”之類的標志(名稱取決於實現)以及一些標記數據類型和長度的開銷。

(順便說一句:我不知道為什么31和通常的數據包20字節有效負載...)

當然,您可以在運行時更改廣告數據並在每個廣告中傳輸新數據。 掃描設備將丟失大多數廣告,因此您可以定期執行重傳等。。。但這不是廣告的意思。

據我所知,提到的鏈接不是廣告解決方案,而是P2P連接,對嗎?

是。 在P2P連接中,您可以將數據分段為多個數據包,或者更好地增加MTU大小以發送更大的數據塊。

暫無
暫無

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

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