gpt4 book ai didi

java - Altbeacon,如何处理找不到信标的情况? if (beacons.size() > 0) { 的 else 语句

转载 作者:行者123 更新时间:2023-12-01 11:41:39 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com