【发布时间】:2017-08-08 02:20:37
【问题描述】:
我正在尝试间歇性地扫描附近的信标并使用特定制造商代码存储每个收到的信标。如何使用 altbeacon 库开始和停止扫描具有特定制造商代码的 altbeacon,并在每次扫描期间存储每个接收到的信标?我希望扫描仪在活动创建后每 5 分钟扫描 20 秒。
@davidgyoung
【问题讨论】:
标签: android bluetooth-lowenergy altbeacon
我正在尝试间歇性地扫描附近的信标并使用特定制造商代码存储每个收到的信标。如何使用 altbeacon 库开始和停止扫描具有特定制造商代码的 altbeacon,并在每次扫描期间存储每个接收到的信标?我希望扫描仪在活动创建后每 5 分钟扫描 20 秒。
@davidgyoung
【问题讨论】:
标签: android bluetooth-lowenergy altbeacon
对于制造商代码 268(十六进制 0x0112),您可以将其与以下 BeaconParser 设置代码匹配:
beaconManager.getBeaconParsers().clear();
beaconManager.getBeaconParsers().add(new BeaconParser().setLayout("m:0-3=1201beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"));
请注意,在布局字符串中,制造商代码的两个十六进制字节作为“匹配”m 表达式 m:0-3=1201beac 的第一部分。它们是反向的“小端”顺序,因为这就是它们在数据包中的显示方式。所以 0x0112 变成 m:0-3=1201。同样,如果您使用 radius networks 0x0118 公司代码,您将使用 m:0-3=1801。
常规测距 API 将向您返回与此匹配的所有信标的列表。要每 5 分钟扫描 20 秒,只需使用:
beaconManager.setForegroundScanPeriod(20000l); // 20,000 ms
beaconManager.setForegroundBetweenScanPeriod(280000l);// 280,000 ms + 20,000 ms = 5 minutes
【讨论】: