这是使用AltBeacon的Android Beacon Library检测iBeacons的正确布局吗?

时间:2014-07-30 02:46:24

标签: ibeacon-android altbeacon

我已使用以下reference implementation app成功修改了Android Beacon Librarybeacon layout,以便它检测到我手头的iBeacon设备:

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
        beaconManager.getBeaconParsers().add(new BeaconParser().
               setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24"));
        beaconManager.bind(this);
    }
}

作为BLE数据包内部的新手,我不确定这是否是正确的布局。该库赞同AltBeacon标准,其文档未提及如何检测iBeacon设备。

  • 此代码会检测所有 iBeacon设备吗?即m:前缀是否过于严格,或者它是与iBeacon规范匹配的正确字节序列?
  • 同样,其余布局是否与iBeacon规范完全匹配?

参考:

2 个答案:

答案 0 :(得分:63)

这对我也有用!

我认为你不需要匹配4c00部分因为那是制造商ID,所以你可以把它关掉并从m开始:2-3 = 0215其他一切看起来都正确,而且似乎工作

答案 1 :(得分:2)

您可以下载iBeacon spec(点击“下载图稿和规格”)。

在当前版本中,公司ID 必须0x4C00,信标类型必须为0x0215。所有其他字段都是必需的,并且正如您指定的那样。

所以是的,你完全正确,它将检测所有兼容的iBeacons。

OT:它还规定广告间隔必须为100毫秒,但我严重怀疑所有iBeacons都坚持这一点。