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