Java 尝试将BeaconParser添加到AltBeacon库时发生异常
为了检测iBeacons,我一直在尝试修改来自AltBeacon的 在Ranging活动中,我替换了Java 尝试将BeaconParser添加到AltBeacon库时发生异常,java,android,bluetooth,ibeacon,altbeacon,Java,Android,Bluetooth,Ibeacon,Altbeacon,为了检测iBeacons,我一直在尝试修改来自AltBeacon的 在Ranging活动中,我替换了 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ranging); beaconManager.bind(this); } 与 @覆盖 创建时受保护的voi
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ranging);
beaconManager.bind(this);
}
与
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_范围);
BeaconParser bp=新的BeaconParser();
bp.SetbeActionLayout(“m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24”);
List lbp=beaconManager.getBeaconParsers();
lbp.add(bp);
beaconManager.bind(这个);
}
为了应用修改来检测我发现的iBeacon
然而,它抛出的是一个java.util.Collections$UnmodifiableRandomAccessList。我是Java新手,但我想这是一个列表,我无法向其中添加项目,从第二个链接中的解决方案到现在,库中一定发生了一些变化
有人知道添加新的
BeaconParser
的正确方法是什么吗?或者我在这里做错了什么?我已经在GitHub上回答了你的问题,但我觉得我也应该在这里回答,以帮助其他面临此问题的人
我已经检查了源代码(v2.1.3),很可能您是在绑定beacon服务后添加新的解析器(这禁止将来添加自定义布局)
公共列表getBeaconParsers(){
if(isAnyConsumerBound()){
返回集合。不可修改列表(beaconParsers);
}
返回信标分析器;
}
为了在以后添加任何布局解析器,您需要解除所有服务连接的绑定,其中还包括所有RegionBootsrap
s。如果定义了一个,则需要禁用它,因为它还与beacervice
建立了连接
但是,我相信您以后不需要添加任何自定义布局。如果您正在远程存储布局,则应首先获取它们,然后绑定BeaconManager
顺便说一句,如果您认为应该将此功能添加到库中,您可以在库的GitHub页面上创建请求:
从库2.6版开始,现在允许在扫描开始后更改信标解析器
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ranging);
BeaconParser bp = new BeaconParser();
bp.setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24");
List<BeaconParser> lbp = beaconManager.getBeaconParsers();
lbp.add(bp);
beaconManager.bind(this);
}
public List<BeaconParser> getBeaconParsers() {
if (isAnyConsumerBound()) {
return Collections.unmodifiableList(beaconParsers);
}
return beaconParsers;
}