Altbeacon-仅检测立即范围内的信标,并丢弃该范围外的任何信标



我希望应用程序只看到"立即"范围内的信标。在其中一篇文章中(我没有链接),我读到像立即/近/远这样的字符串在altbeacon中已经过时了,或者建议使用beacon.getDistance() < 0.5作为立即测距信标。但不幸的是,我不知道如何实现这一点。

我尝试了一篇文章提出的以下代码,以在最短距离找到信标,但似乎无法正常工作(很可能是因为rssi波动和通过将信标保持在短距离进行测试…不知道他们为什么想要min = Integer.MAX_VALUE…但我至少期待一些结果)

public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
                Object[] beaconArray = beacons.toArray();
                //find the beacon with shortest distance
                int count=-1; //when no beacon is there
                int min = Integer.MAX_VALUE;
                for (int i=0; i < beaconArray.length; i++){
                    int d=((Beacon)beaconArray[i]).getRssi();
                        if(d < min){
                            min=d;
                            count=i; //1st beacon in the array
                        }
                }
              //play with the beacon at the shortest distance
              uuid = ((Beacon)beaconArray[count]).getId1().toString();

一些提示对我来说将是一件幸事。

术语immediate、near和far是iOS中实现的任意距离范围桶。我们把它们放在2.0安卓信标库中,因为这些术语很模糊,而且用米来实现特定的距离桶非常容易。以下是如何实现等效功能:

public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
    for (Beacon beacon: beacons) {
         if (beacon.getDistance() < 0.5) {
             // This beacon is immediate (< 0.5 meters)
         }
         else if(beacon.getDistance() < 3.0) { 
             // This beacon is near (0.5 to 3 meters)
         }
         else {
           // This beacon is far (> 3 meters)
         }      
     }
}

相关内容

  • 没有找到相关文章

最新更新