Kontakt beacon uniqueId有时为null

时间:2015-07-26 11:23:05

标签: android ibeacon ibeacon-android

最近我开始玩一些Kontakt信标和我的Android手机(LG L30)。

我添加了一个默认区域来检测所有信标:

private static final Region ALL_BEACONS_REGION = Region.EVERYWHERE;

我初始化了一个新的monitoringListener。相关代码:

    @Override
    public void onBeaconsUpdated(Region region, List<BeaconDevice> list) {
       List<BeaconDevice> beacons = new ArrayList<BeaconDevice>();
       Iterator i = list.iterator();
       while (i.hasNext()){
           BeaconDevice beacon = (BeaconDevice)i.next();
           if(beacon.getUniqueId() != null) {
               beacons.add(beacon);
           }
        }    
  }

调试时我注意到,有时uniqueId为null。这就是我检查它是否为空的原因,但我仍然觉得很奇怪。这是常见的还是我的代码中有错误?如果名称为空,我怎样才能唯一地识别信标?

1 个答案:

答案 0 :(得分:0)

要检查getUniqueId()返回NULL的原因,我们必须看看你如何设置这个值。

您可以使用hashCode()唯一标识的对象。在对象中重写此方法以生成唯一的内容 见:overriding equals and hashCode in Java

或者,如果您只想阻止列表中的多个条目,则可以使用Set,而不是添加重复项(与您的ArrayList相比)。 见:Java - Set