首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Android中构建iBeacon广告的问题

在Android中构建iBeacon广告的问题
EN

Stack Overflow用户
提问于 2019-01-10 14:37:14
回答 1查看 458关注 0票数 2

我正在尝试使用iBeacon来模拟BluetoothLeAdvertiser。我没有遇到任何困难就成功地扫描并找到了iBeacons,但是当自己创建一个iBeacon时,发送出去的广告数据似乎是错误的。

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

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

我注意到额外字节的数量及其值的变化取决于我如何设置广告settingsData。例如,AdvertiseData.Builder.setConnectable(true);在我的广告数据开头再添加3个字节(如在BluetoothAdapter.LeScanCallback中检测到的)。

是否有一种绝对控制广告发送数据的方法?我已经检查了https://github.com/AltBeacon/android-beacon-library/blob/master/src/main/java/org/altbeacon/beacon/BeaconTransmitter.java,但这或多或少是在做我所能知道的事情。在Android9.0上使用蓝牙5

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-10 15:00:44

Android广告API不能让您完全控制传输的数据包。A“制造商广告”帧以一个长度字节开始,然后以0 0xff表示它是制造商类型,后面跟着两个字节的制造商代码。

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

剩余的字节是您的有效负载,您可以完全控制它们,直到有限的数据包大小。长度之前的任何进程字节(在本例中为0x1a)都是标志头,Android不能控制这些头。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54130966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档