我正在尝试间歇性地扫描附近的信标,并使用特定的制造商代码存储每个收到的信标。如何使用altbeacon库启动和停止使用特定制造商代码扫描altbeacons并在每次扫描期间存储每个接收到的信标?我希望扫描仪在创建活动后每5分钟扫描20秒 @davidgyoung
答案 0 :(得分:0)
对于制造商代码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 radius 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