gpt4 book ai didi

android - 在 Android 中构建 iBeacon 广告时出现问题

转载 作者:行者123 更新时间:2023-11-30 05:08:26 25 4
gpt4 key购买 nike

我正在尝试使用 BluetoothLeAdvertiser 模拟 iBeacon。我设法毫无困难地扫描并找到了 iBeacon,但是当我自己创建 iBeacon 时,发送的广告数据似乎是错误的。

我发现的信标具有以下格式:字节 0 值:0x02 数据长度——2 个字节字节 1 值:0x01 数据类型——标志字节 2 值:0x06 LE 和 BR/EDR 标志字节 3 值:0x1a 数据长度——26 字节字节 4 值:0xff 数据类型 - 制造商特定数据字节 5 值:0x4c 制造商数据字节 6 值:0x00 制造商数据 ..等等

我尝试使用 AdvertiseData.Builder.addManufacturerData 构建类似的广告数据来模拟 iBeacon,方法是构建一个数组并复制上面的值。但是,当我发送广告数据时,在开头添加了额外的字节:0x1a 0xff 0x4c 0x00

我注意到额外字节数及其值会根据我设置广告设置数据的方式而变化。例如,AdvertiseData.Builder.setConnectable(true);在我的广告数据的开头添加另外 3 个字节(在 BluetoothAdapter.LeScanCallback 中检测到)。

有没有办法绝对控制广告商发送的数据?我检查了https://github.com/AltBeacon/android-beacon-library/blob/master/src/main/java/org/altbeacon/beacon/BeaconTransmitter.java ,但据我所知,这或多或少是在做我正在做的事情。在 Android 9.0 上使用蓝牙 5

最佳答案

Android BLE 广告 API 无法让您完全控制传输的数据包。“制造商广告”帧以长度字节开头,然后是 0xff 以指示它是制造商类型,然后是两个字节的制造商代码。

因此,当您看到 0x1a 0xff 0x4c 0x00 时,您只能部分控制这些字节。 0xff 是根据您发送的广告类型固定的。 0x1a 是你的数据包的长度(你可以根据你放入广告的字节数来部分控制)和 0x4c 0x00 你可以通过设置制造商代码来控制。

剩余的字节是您的有效负载,您可以完全控制它们直到限制数据包大小。长度之前的任何后续字节(在您的情况下为 0x1a)都是标志 header ,Android 让您无法控制这些。

关于android - 在 Android 中构建 iBeacon 广告时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54130966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com