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


93

我已成功修改了参考实现应用程序的的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);
    }
}

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

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

参考:


参考应用是失望吧..
BlueTrin

1
@BlueTrin谢谢,更新了新仓库的链接。
ento

Answers:


66

这对我有用:“ m:2-3 = 0215,i:4-19,i:20-21,i:22-23,p:24-24”

我认为您不需要匹配4c00部件,因为这是制造商ID,因此您可以将其保留,并以m:2-3 = 0215开头,其他一切看起来都不错,并且似乎可以正常工作。


8
谢谢!通过使用Estimote信标进行测试,我可以确认m:2-3=0215更改确实是必要的。
matiash 2014年

8
这也对我有用。 -23,p:24-24“));
约翰

2
您如何阅读该布局?m,i和p是什么?我有一个从中国买来的即用型信标。通过使用Bluetooth LE Scanner应用程序,我能够找到信标的主要和次要UUID。但是,如何找到要放入的UUID模式setBeaconLayout
emen 2014年

3
@AimanB请参考:stackoverflow.com/questions/25319682/…。在此,m:制造商数据,i:接近UUID,i:大数,i:次数,p:信号功率,d:电池电量。它们代表字节偏移量。(您需要在计数时加6)。例如:制造商ID在字符串“ m:2-3 = 0215,i:4-19,i:20-21,i:22-23,之间在8号和9号之间, p:24-24“。
trueblue 2014年

3
有没有一种方法可以扫描周围的任何信标,而不管其估计如何?
N Jay

3

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

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

因此,是的,您完全正确,它将检测到所有兼容的iBeacon。

OT:它也指定广告间隔必须为100毫秒,但我严重怀疑所有iBeacons都坚持这样做。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.