作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Android 编程和 Altbeacon 库的新手。我可以确定我想要的信标范围,但我需要处理该区域中没有信标的情况并显示一个对话框。我可以毫无问题地显示对话框,但我不知道如何捕获“区域中未找到信标”...帮助?!?!?
这是我的代码(来自 altbeacon 示例,稍作修改)...
public void onBeaconServiceConnect() {
beaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
if (beacons.size() > 0) {
Beacon firstBeacon = beacons.iterator().next();
Log.i(TAG, "The first beacon I see is about " + beacons.iterator().next().getDistance() + " meters away."}
}
});
try {
Log.d(TAG, "setting up background monitoring for beacons and power saving");
// wake up the app when a beacon is seen
String uuid = "MYCUSTOM UUID STRING";
beaconManager.startRangingBeaconsInRegion(new Region(uuid, Identifier.parse(uuid), null, null));
}
catch (RemoteException e) { }
}
我认为替代解决方案是只进行监视,但我需要获取主要值和次要值......我可以通过监视 Activity 来做到这一点吗?
最佳答案
您可以将监控与测距结合起来,这样您仍然可以获得信标标识符。检查以下代码(我更改了您的代码)。
public void onBeaconServiceConnect() {
beaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
if (beacons.size() > 0) {
Beacon firstBeacon = beacons.iterator().next();
Log.i(TAG, "The first beacon I see is about " + beacons.iterator().next().getDistance() + " meters away.");
}
}
});
beaconManager.setMonitorNotifier(new MonitorNotifier() {
@Override
public void didEnterRegion(Region region) {
try {
beaconManager.startRangingBeaconsInRegion(region);
}
catch (RemoteException e) { }
}
@Override
public void didExitRegion(Region region) {
try {
beaconManager.stopRangingBeaconsInRegion(region);
}
catch (RemoteException e) { }
}
});
try {
Log.d(TAG, "setting up background monitoring for beacons and power saving");
// wake up the app when a beacon is seen
String uuid = "MYCUSTOM UUID STRING";
beaconManager.startMonitoringBeaconsInRegion(new Region(uuid, Identifier.parse(uuid), null, null));
}
catch (RemoteException e) { }
}
因此,使用didEnterRegion
,您可以检查信标是否已进入您的区域,并且使用didExitRegion
,您可以在周围没有信标时获取(当然使用区域过滤器) )。
但是,使用这种方法,如果第一次监控开始时周围没有信标,您将无法获取事件。为此,您可以设置一个计时器并在 didEnterRegion
中设置一个标志。如果该标志没有在您想要的时间设置,那么您可以确定周围没有信标。除了第一次之外,这种方法应该可以解决您的问题。
关于java - Altbeacon,如何处理找不到信标的情况? if (beacons.size() > 0) { 的 else 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29474054/
我是一名优秀的程序员,十分优秀!