扫描时 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);

我相信有更优雅的方法可以做到这一点,但上面的代码可以完成这项工作。