在背景中测量多个信标并确定背景中每个信标的停留时间

时间:2016-02-21 17:29:55

标签: android bluetooth ibeacon altbeacon bluetooth-lowenergy

我在BLE项目中使用altbeacon库。我想为信标启用后台扫描。由于我不希望用户一直打开蓝牙,我正在使用用户的GPS位置来确定是否需要打开蓝牙以在后台扫描信标。我正在使用Bootstrap通知程序触发didEnterRegion,然后使用RangeNotifier来确定设备的Major,Minor和distance值。如果用户居住在2-5米的距离30秒,我想触发一个事件。我怎么能从后台做到这一点?目前使用默认设置10s扫描和5分钟的贪睡有助于我监控我的UUID定义的区域,但是当测量主要,次要和距离时,扫描仅持续1秒,这也无法帮助我看到周围的所有信标因为我使用~2hz频率。下次扫描仅在5分钟后进行。我怀疑将5分钟时间减少到10秒,因为我不希望用户感觉应用程序正在消耗电池,如果他长时间打开蓝牙。

所以最后我的问题是:

  1. 当我在背景中进行测距时,如何增加扫描周期或扫描频率,以便能够看到该地区的所有信标?
  2. 当信标离开该区域并且didExitRegion被呼叫时,我可以获得信标的UUID,主要,次要和停留时间吗?

1 个答案:

答案 0 :(得分:0)

  1. 我会添加自定义逻辑来控制后台模式。进入地理围栏后,保持前景模式30秒左右,然后进入后台模式。

  2. 如果您的受监控区域已定义主要和次要,您可以从区域出口的ID 2和id3中读取这些字段。没有自动跟踪停留时间,但您可以在区域输入中设置应用中的时间戳,并从区域退出时应用记录的其他时间戳中减去该时间戳。