我正在使用https://altbeacon.github.io/android-beacon-library/samples.html处的AltBeacon库来开发一个简单的信标接近度应用程序。
我正在尝试上述网站上提供的示例代码,但是,每次我运行该应用程序时,它只会使用addRangingNotifier()
方法。如果检测到信标,它将记录信标大小。
private Region defaultRegion = null;
defaultRegion = new Region("BeaconIdentifier", Identifier.fromUuid(java.util.UUID.fromString(UUID)), null, null);
beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
beaconManager.bind(this);
@Override
public void onBeaconServiceConnect() {
beaconManager.addRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
if (beacons.size() > 0) {
Log.d("MainInfo","Beacon List Size " + beacons.size());
}else{
Log.d("MainInfo","Beacon Empty");
}
}
});
try {
beaconManager.startRangingBeaconsInRegion(defaultRegion);
} catch (RemoteException e) {}
}
我可以收到我周围的信标大小。
我测试了两个设备(A:三星银河J510-Marshmellow / B:三星银河J7-牛轧糖),B扫描信标并打印信标列表大小,但是,A无法扫描信标并打印信标为空< / strong>。
所以我测试了相同的Marshmellow装置,但找不到。
是否应根据操作系统添加任何代码?
答案 0 :(得分:1)
最可能的错误是指定的UUID与您的信标不匹配。尝试替换此代码:
Identifier.fromUuid(java.util.UUID.fromString(UUID))
使用
null
匹配所有信标。如果可以解决问题,请将UUID替换为不在检测到的信标中的UUID。