Beacon UUID vs BeaconLayout

时间:2016-10-17 21:24:13

标签: uuid beacon

我目前对Beacons如何工作感兴趣,但我对此有一些疑问。 对于iOS,我只看到有关Beacon UUID的源代码。但对于Android,我只看到“灯塔布局”。

它们是一样的吗?它们可以从一种格式转换为另一种格式吗?

假设我有这个Beacon UUID:

636f3f8f-6491-4bee-95f7-d8cc64a863b5

这是否可以获得信标布局?但更具体地说,究竟什么是灯塔布局?

谢谢!

1 个答案:

答案 0 :(得分:0)

信标“布局”是指信标格式,具体是如何将不同字段编码为在蓝牙LE广告数据包内传输信息所需的字节。

像Apple这样的公司将其信标格式保留为商业机密,因此他们不允许发布它们。像Android Beacon Library这样的开源模块不能包含解码这些信标而不发布它们的方法。因此,他们使用布局字符串,这是用户快速轻松地告诉库解码该信标的一种方式。

以下是开源AltBeacon格式的一个示例,它不介意发布它的人:

m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25

这意味着匹配此布局的蓝牙LE信标传输可以像这样编码/解码:

  • 在字节位置2和3中使用制造商广告包(m),双字节类型代码为0xbeac。
  • 具有第一个标识符(ID1等效于iBeacon UUID),以字节4-19。
  • 具有第二个标识符(ID2相当于iBeacon major),字节为20-21。
  • 具有第三个标识符(ID3相当于iBeacon minor),字节为22-23。
  • 布局的“p”和“d”部分是指用于距离估算的“功率”校准值,以及用于存储电池电量和其他制造商特定信息的“数据”字段。

还有其他一些流行的信标格式,如iBeacon和Eddystone。它们有自己的布局字符串,与上面显示的非常相似。

虽然您无法互换使用不同的信标格式,但您可以在iOS和Android上使用所有这些信标格式。在Android上使用专有格式只需要进行谷歌搜索,找到信标格式的正确布局字符串,然后像这样配置:

 BeaconManager.getBeaconParsers().add(
   new BeaconParser().setBeaconLayout("<paste layout string here>"));