使用 AltBeacon 库从 Android 上的 iBeacon 读取传感器值

Read sensor values from iBeacon on Android with AltBeacon library

我有一个 Beacon skybeacon Forecum 201,它可以作为 iBeacon 或 Eddystone (URL/UID) 进行广告宣传。它有温度和湿度传感器。

在我的项目中,我使用 AltBeacon 库进行监视和测距等,以处理信标。如示例或文档中所述,我可以使用 getExtraDataFields() 方法从 iBeacon 获取额外数据。

当我将我的信标配置为作为 iBeacon 传输时,getExtraDataFields() returns 0,因此没有传感器值。但是当我将它配置为使用 TLM 作为 Eddystone UID 传输时,我可以读取额外的字段,它 returns 温度等(我用我拥有的其他信标 MINEW E7 信标测试了它并且工作方式相同,仅作为 Eddyston UID / TLM 传感器值是可读的)

我什至在 RadiusNetwork Locate 应用程序中进行了检查,它的工作方式与我的应用程序相同(仅当广告为 EddyStone 时才读取传感器值)。

那么有什么方法可以使用 AltBeacon 读取 Android 上的传感器值,以获得 iBeacon 广告类型?或者它只能被Eddystone UID/TLM读取?那么如果使用 iOS 开发并接收 iBeacons 呢?

信标数据字段的传感器映射取决于信标硬件制造商的实施。在 Forecum 201 的情况下,映射似乎只针对 Eddystone-TLM 完成。其他信标制造商(如 Radius 网络)确实将信标传感器字段映射到 AltBeacon。 AltBeacon 只有一个单字节的额外数据字段,Radius 使用它来显示电池传感器。 (其他制造商 Kontalt.io 也这样做。)对于 iBeacon,布局中根本没有额外的数据字段,因此制造商在 iBeacon 广告中公开传感器是非常不寻常的。

底线:您必须使用 Eddystone-TLM 来读取带有此信标的广告中的值。