检测信标退出范围

Detect beacon exited a range

我正在使用 Android 和 AltBeacon 库。 我开始开发一个 BLE 应用程序,它应该告诉我信标何时进入以及何时退出区域内的范围,以便我可以开始操作。

我可以检测到信标何时进入某个区域并确定其范围。因此我使用了 didRangeBeaconsInRegion 方法。

我现在的问题是如何检测信标在该区域有 left/exited 那个范围?我在库中找不到任何东西可以这样做。

我怎样才能做到这一点?

Android Beacon Library 提供用于查找信标的 API 集:

  1. 范围 API。当感兴趣的信标在范围内时,它们大约每秒都会向您回调 didRangeBeaconsInRegion,并提供所有这些信标的列表,以便您可以检查它们的标识符。

  2. 监控 API。这些仅在感兴趣的信标出现 didEnterRegion 或消失 didExitRegion 时才提供回调。

您的问题表明您目前已经实现了 Ranging API,并且需要实现 Monitoring API 才能知道所有感兴趣的信标何时消失。

您可以在本页顶部的 Monitoring Example Code 部分看到这方面的示例。

编辑:请注意,您可以根据各个信标监控区域并动态更改正在监控的区域。所以在测距回调中你可以做这样的事情:

Region singleBeaconRegion = new Region(beacon.toString(), beacon.getIdentifiers());
beaconManager.startMonitoringBeaconsInRegion(singleBeaconRegion);

这将开始监视与传递的标识符匹配的单个信标。当它不再可见时,您将收到 didExitRegion 的回调。

如果您使用此技术,您还应该在退出时停止监视该区域,这样您的监视区域列表就不会随着时间的推移而变大:

public void didExitRegion(Region region) {
    // perform logic based on region here
    beaconManager.stopMonitoringBeaconsInRegion(region);
}