尝试将 BeaconParser 添加到 AltBeacon 库时出现异常
Exception when trying to add a BeaconParser to AltBeacon lib
我一直在尝试从 AltBeacon 修改 reference app 以检测 iBeacon。
在RangingActivity中,我替换了
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ranging);
beaconManager.bind(this);
}
和
@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);
}
为了应用修改来检测我发现的 iBeacon here。
然而,这会抛出,因为 lbp
是一个 java.util.Collections$UnmodifiableRandomAccessList。我是 Java 的新手,但我想这是一个我无法添加项目的列表,并且在第二个 link 和现在的解决方案之间,库中的某些内容一定发生了变化。
有人知道添加新 BeaconParser
的正确方法是什么吗?或者我在这里做错了什么?
我已经在 GitHub 上回答了你的问题,但我觉得我也应该在这里回答,以帮助其他面临这个问题的人。
我已经检查了源代码(v2.1.3),很可能你在绑定信标服务后添加了新的解析器(禁止将来添加自定义布局)。
public List<BeaconParser> getBeaconParsers() {
if (isAnyConsumerBound()) {
return Collections.unmodifiableList(beaconParsers);
}
return beaconParsers;
}
为了之后添加任何布局解析器,您需要取消绑定所有服务连接,其中还包括所有 RegionBootsrap
s。如果您定义了一个,则需要禁用它,因为它还会与 BeaconService
.
建立连接
不过,我相信您以后不需要添加任何自定义布局。如果你在远程存储你的布局,你应该先获取它们然后绑定 BeaconManager
.
顺便说一句,如果您认为应该将此功能添加到图书馆,您可以在图书馆的 GitHub 页面上创建一个请求:
AltBeacon GitHub
我一直在尝试从 AltBeacon 修改 reference app 以检测 iBeacon。
在RangingActivity中,我替换了
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ranging);
beaconManager.bind(this);
}
和
@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);
}
为了应用修改来检测我发现的 iBeacon here。
然而,这会抛出,因为 lbp
是一个 java.util.Collections$UnmodifiableRandomAccessList。我是 Java 的新手,但我想这是一个我无法添加项目的列表,并且在第二个 link 和现在的解决方案之间,库中的某些内容一定发生了变化。
有人知道添加新 BeaconParser
的正确方法是什么吗?或者我在这里做错了什么?
我已经在 GitHub 上回答了你的问题,但我觉得我也应该在这里回答,以帮助其他面临这个问题的人。
我已经检查了源代码(v2.1.3),很可能你在绑定信标服务后添加了新的解析器(禁止将来添加自定义布局)。
public List<BeaconParser> getBeaconParsers() {
if (isAnyConsumerBound()) {
return Collections.unmodifiableList(beaconParsers);
}
return beaconParsers;
}
为了之后添加任何布局解析器,您需要取消绑定所有服务连接,其中还包括所有 RegionBootsrap
s。如果您定义了一个,则需要禁用它,因为它还会与 BeaconService
.
不过,我相信您以后不需要添加任何自定义布局。如果你在远程存储你的布局,你应该先获取它们然后绑定 BeaconManager
.
顺便说一句,如果您认为应该将此功能添加到图书馆,您可以在图书馆的 GitHub 页面上创建一个请求: AltBeacon GitHub