最近我开始玩一些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。这就是我检查它是否为空的原因,但我仍然觉得很奇怪。这是常见的还是我的代码中有错误?如果名称为空,我怎样才能唯一地识别信标?
答案 0 :(得分:0)
要检查getUniqueId()
返回NULL
的原因,我们必须看看你如何设置这个值。
您可以使用hashCode()
唯一标识的对象。在对象中重写此方法以生成唯一的内容
见:overriding equals and hashCode in Java
或者,如果您只想阻止列表中的多个条目,则可以使用Set
,而不是添加重复项(与您的ArrayList
相比)。
见:Java - Set