我正在尝试间歇性地扫描附近的信标,并使用特定的制造商代码存储每个收到的信标. 如何使用 altbeacon 库开始和停止扫描具有特定制造商代码的 altbeacon,并在每次扫描期间存储每个收到的信标? 我希望扫描仪在创建活动后每 5 分钟扫描 20 秒。
@davidgyoung
对于制造商代码 268 (十六进制0x0112(, 您可以将其与以下信标解析器设置代码匹配:
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。 同样,如果使用半径网络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