Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试将BeaconParser添加到AltBeacon库时发生异常_Java_Android_Bluetooth_Ibeacon_Altbeacon - Fatal编程技术网

Java 尝试将BeaconParser添加到AltBeacon库时发生异常

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

为了检测iBeacons,我一直在尝试修改来自AltBeacon的

在Ranging活动中,我替换了

@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;
}