扫描时 Beacon UUID 不同
Beacon UUID is different while scanning
我正在尝试使用 altbeacon 找出信标的 UUID,并使用以下代码检测到信标,
beaconManager.setRangeNotifier(新的 RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
if (beacons.size() > 0) {
for (Beacon beacon : beacons) {
String uuid = beacon.getId1().toString();
...
}
但问题是我的实际信标 UUID 是
E2C56DB5-DFFB48D2-B060D0F5-A71096E0
上面的代码给我 uuid
e2c56db5-dffb-48d2-b060-d0f5a71096e0
除了两个 UUID 上的 - 符号位置不同外,两者基本上相同,这在我的应用程序中造成了一些问题
可能是什么问题?
编辑:
如果需要,我可以 post 更多代码。
一个解决方案是从两者中提取所有破折号,并将它们都转换为大写并进行比较。
将您当前的 uuid 固定为没有破折号的上部(这使用 System.Linq
):
uuid = new string(uuid.Where(c => c != '-').ToArray()).ToUpper();
这会将您的 uuid 更改为:
e2c56db5-dffb-48d2-b060-d0f5a71096e0
收件人:
E2C56DB5DFFB48D2B060D0F5A71096E0
Android信标库返回的UUID格式是标准的,数据库中的不是。由于您不能轻易更改数据库格式,您可以使用以下行 java 代码转换字符串格式:
String uuid = beacon.getId1().toString();
String s2 = s.replaceAll("-", "").toUpperCase();
String alternateFormatUuid = s2.substring(0,8)+"-"+s2.substring(8,16)+"-"+s2.substring(16,24)+"-"+s2.substring(24,32);
我相信有更优雅的方法可以做到这一点,但上面的代码可以完成这项工作。
我正在尝试使用 altbeacon 找出信标的 UUID,并使用以下代码检测到信标,
beaconManager.setRangeNotifier(新的 RangeNotifier() { @Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
if (beacons.size() > 0) {
for (Beacon beacon : beacons) {
String uuid = beacon.getId1().toString();
...
}
但问题是我的实际信标 UUID 是
E2C56DB5-DFFB48D2-B060D0F5-A71096E0
上面的代码给我 uuid
e2c56db5-dffb-48d2-b060-d0f5a71096e0
除了两个 UUID 上的 - 符号位置不同外,两者基本上相同,这在我的应用程序中造成了一些问题
可能是什么问题?
编辑:
如果需要,我可以 post 更多代码。
一个解决方案是从两者中提取所有破折号,并将它们都转换为大写并进行比较。
将您当前的 uuid 固定为没有破折号的上部(这使用 System.Linq
):
uuid = new string(uuid.Where(c => c != '-').ToArray()).ToUpper();
这会将您的 uuid 更改为:
e2c56db5-dffb-48d2-b060-d0f5a71096e0
收件人:
E2C56DB5DFFB48D2B060D0F5A71096E0
Android信标库返回的UUID格式是标准的,数据库中的不是。由于您不能轻易更改数据库格式,您可以使用以下行 java 代码转换字符串格式:
String uuid = beacon.getId1().toString();
String s2 = s.replaceAll("-", "").toUpperCase();
String alternateFormatUuid = s2.substring(0,8)+"-"+s2.substring(8,16)+"-"+s2.substring(16,24)+"-"+s2.substring(24,32);
我相信有更优雅的方法可以做到这一点,但上面的代码可以完成这项工作。