信标如何检测大于和等于1的主要和次要?

时间:2019-04-25 08:26:20

标签: android beacon altbeacon

我从大学得到一个项目,以进行弹出通知

所以,我把手机当作信标。并通过从其信标中检测到主要和次要来进行验证以获取通知。

因此,我将在检测到某些信标后发布主要和次要信息,但是我从此代码中收到了垃圾邮件,因此在日志中,我连续获得相同的主要和次要信息,如果信标一个,我又该如何发布主要和次要信息,然后发布两次具有不同的主要和次要,如果信标两个等

`@Override
public void onBeaconServiceConnect() {
    beaconManager.removeAllRangeNotifiers();
    beaconManager.addRangeNotifier(new RangeNotifier() {
        @Override
        public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
            for (Beacon temp : beacons) {
                    if (beacons.size() > 0) {
                        MajorBeacon MajID = new MajorBeacon("Major:"+temp.getId2().toString(),"Minor"+temp.getId3().toString());

                        MajID.setMajor(temp.getId2().toString());
                        Log.i(TAG, "The first beacon I see is about " + beacons.iterator().next().getDistance() + " meters away.");
                 Log.i(TAG2,"Hello major id kamu:"+MajID.getMajor());
                        Log.i(TAG3,"Hello minor id kamu:33");
                       Post(MajID);
                    }

            }
        }
    });


    try {
        beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId",null , null, null));
    } catch (RemoteException e) {    }
}

`

1 个答案:

答案 0 :(得分:1)

好的,让我们为您的问题提供一些伪代码。

    ArrayList<Beacon> searchedBeaconsList = new ArrayList(); // Declare it global
    if(searchedBeaconsList != null && searchedBeaconsList.isEmpty){
    searchedBeaconsList.add(searchedBeacon) 
    }else if(!searchedBeaconsList.contains(searchedBeacon)){
    searchedBeaconsList.add(searchedBeacon)
   }

通过这种方式,您总是一次只能获得一个信标,其他垃圾邮件将被拒绝,并且在离开屏幕或应用程序被销毁的同时清除列表。

我希望这能解决您的问题。