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

ent*_*nto 92 ibeacon-android altbeacon

我已成功修改了参考实现应用程序的的Android的信标库使用以下信标布局,使得它检测到我手边的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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

参考:

mob*_*ick 62

这对我也有用!

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

  • 谢谢!从使用Estimote信标进行测试,我可以确认`m:2-3 = 0215`变化确实是必要的. (8认同)
  • 这也适用于我..我使用.. beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3 = 0215,i:4-19,i:20-21,i:22 -23,p:24-24" )); (8认同)
  • @AimanB请参考:http://stackoverflow.com/questions/25319682/correct-layout-to-detect-kontakt-beacon-on-android-with-altbeacon.在此,m:制造商数据,i:接近UUID,i:主要编号,i:次要编号,p:信号功率,d:电池电平.它们代表字节偏移.(您需要在计数时添加6).Eg:制造商ID在字符串"m:2-3 = 0215,i:4-19,i:20-21,i:22-23之间的第8和第9之间,电话号码:24-24" . (3认同)
  • 有没有办法扫描周围的任何信标,无论它是否是estimote? (3认同)
  • 您如何阅读该布局?m,i和p是什么?我有一个从中国买来的即用型信标。通过使用Bluetooth LE Scanner应用程序,我能够找到信标的主要和次要UUID。但是我如何找到将UUID模式放入`setBeaconLayout`中呢? (2认同)

Tim*_*mmm 5

您可以下载iBeacon 规范(单击“下载图稿和规范”)。

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

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

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