AltBeacon库仅首次显示信标,然后停止显示它们

问题描述 投票:0回答:1

我正在使用altbeacon库来检测iBeacon。它显示了第一次扫描时的所有信标,然后丢失了一些信标。

这是我的情况:

  • 我有7个信标,在第一次扫描应用程序检测所有信标。
  • 如果我再次尝试扫描信标,它只显示4。

我怎样才能解决这个问题?我在下面添加我的代码。

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    beaconManager = BeaconManager.getInstanceForApplication(this);    
    beaconManager.getBeaconParsers().add(new BeaconParser().
            setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
    backgroundPowerSaver = new BackgroundPowerSaver(this);
    beaconManager.bind(this);

    return START_STICKY;
 }

@Override
public void onBeaconServiceConnect() {  
    RangeNotifier rangeNotifier = new RangeNotifier() {
           @Override
           public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
                if (beacons.size() > 0)
                {
                    Beacon firstBeacon = beacons.iterator().next();
                    String beaconID = String.valueOf(firstBeacon.getId3());
                    Log.v("beacons",""+beaconID);
                }
             }
        };
        try {
            beaconManager.startRangingBeaconsInRegion(new Region("buuid", Identifier.parse(buuid), null, null));
            beaconManager.addRangeNotifier(rangeNotifier);
        }
      catch (RemoteException e) { }
    }
android ibeacon altbeacon
1个回答
0
投票

代码当前打印出第一个看到的信标的第三个标识符:

if (beacons.size() > 0) {
   Beacon firstBeacon = beacons.iterator().next();
   String beaconID = String.valueOf(firstBeacon.getId3());
   Log.v("beacons",""+beaconID);
}

它不打印出看到的信标数。如果您希望打印出所看到的信标数,请执行此操作。

Log.v("beacon count", ""+beacons.count);

**编辑:**另外,要明白如果你只看到周围有多个信标的第一个信标,由于检测的不确定顺序,它可能不会表现一致。您确实需要查看检测到的所有信标ID的列表,因此请使用如下循环:

Log.v("beacons", "Here are the beacons I see:");
for (Beacon beacon: beacons) {
   String beaconID = String.valueOf(beacon.getId3());
   Log.v("beacons","beacon id: "+beaconID);
}

以上将打印如下列表:

Here are the beacons I see:
3
4
5

标识符的顺序可以从一个运行到下一个不同,但是标识符的列表通常应该是相同的,只要所有信标保持在周围。

© www.soinside.com 2019 - 2024. All rights reserved.