检测信标退出范围
Detect beacon exited a range
我正在使用 Android 和 AltBeacon 库。
我开始开发一个 BLE 应用程序,它应该告诉我信标何时进入以及何时退出区域内的范围,以便我可以开始操作。
我可以检测到信标何时进入某个区域并确定其范围。因此我使用了 didRangeBeaconsInRegion 方法。
我现在的问题是如何检测信标在该区域有 left/exited 那个范围?我在库中找不到任何东西可以这样做。
我怎样才能做到这一点?
Android Beacon Library 提供用于查找信标的 API 集:
范围 API。当感兴趣的信标在范围内时,它们大约每秒都会向您回调 didRangeBeaconsInRegion
,并提供所有这些信标的列表,以便您可以检查它们的标识符。
监控 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);
}
我正在使用 Android 和 AltBeacon 库。 我开始开发一个 BLE 应用程序,它应该告诉我信标何时进入以及何时退出区域内的范围,以便我可以开始操作。
我可以检测到信标何时进入某个区域并确定其范围。因此我使用了 didRangeBeaconsInRegion 方法。
我现在的问题是如何检测信标在该区域有 left/exited 那个范围?我在库中找不到任何东西可以这样做。
我怎样才能做到这一点?
Android Beacon Library 提供用于查找信标的 API 集:
范围 API。当感兴趣的信标在范围内时,它们大约每秒都会向您回调
didRangeBeaconsInRegion
,并提供所有这些信标的列表,以便您可以检查它们的标识符。监控 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);
}