我试图使用altbeacon找出信标的UUID,并使用下面的代码检测到信标,
beaconManager.setRangeNotifier(new 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上的 - 符号位置不同,这在我的应用程序上造成了一些问题
可能是什么问题?
修改
如果需要,我可以发布更多代码。
答案 0 :(得分:2)
一种解决方案是从两者中取出所有破折号,然后将它们转换为大写并进行比较。
将当前的uuid修复为高位,没有短划线(使用System.Linq
):
uuid = new string(uuid.Where(c => c != '-').ToArray()).ToUpper();
这会改变你的uuid:
e2c56db5-dffb-48d2-b060-d0f5a71096e0
要:
E2C56DB5DFFB48D2B060D0F5A71096E0
答案 1 :(得分:1)
Android Beacon Library返回的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);
我确定有更优雅的方法可以做到这一点,但上面的代码可以完成这项工作。