我使用Android与AltBeacon库。我开始开发一个BLE应用程序,它应该告诉我一个信标何时进入,何时退出一个区域内的范围,这样我就可以开始一个动作。
我可以检测到一个信标何时进入一个区域并确定它的范围。因此我使用了didRangeBeaconsInRegion方法。
我的问题是现在如何检测信标已离开/退出该区域的范围?我在lib中找不到任何东西来做这个
我怎样才能做到这一点?
Android Beacon Library提供了一组用于查找信标的api:
- 等
api。这些给你一个回调到
didRangeBeaconsInRegion
,大约每秒感兴趣的信标在范围内,并提供所有这些信标的列表,这样你就可以检查它们的标识符。监测api。只有当感兴趣的信标出现
didEnterRegion
或消失didExitRegion
时才提供回调。
你的问题表明你目前已经实现了测距api,并且需要实现监控api来知道所有感兴趣的信标何时消失。
您可以在本页顶部的监视示例代码一节中看到这个示例。
EDIT:请注意,您可以基于单个信标监视区域,并动态更改正在监视的区域。在range回调中你可以这样做:
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);
}