0

我是 android 开发的新手,我正在使用 altbeacon 库和 altbeacon 的参考应用程序,我们也有 2 个 Pibeacon ......参考工作正常,能够检测到两个信标......我想做如果应用程序检测到特定信标……例如,如果我在附近检测到信标,我想显示一个字符串……前 2 个 if 语句工作正常,但如果我添加了一个条件来确定哪个信标在靠近第三个 if 语句不起作用....第一个小信标是 1,第二个是 2

    public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
    if (beacons.size() > 0) {
        for (Beacon beacon: beacons) {
            if(BeaconProximity.getProximityString(beacon.getDistance()) == "Near"){
                logToDisplay("Hello");              
            }

            if(BeaconProximity.getProximityString(beacon.getDistance()) == "Immediate"){
                logToDisplay("Hi");             
            }

            if(BeaconProximity.getProximityString(beacon.getDistance()) == "Near" && beacon.getId3 == Identifier.parse("1"){

            logToDisplay("World");              
            }
       }
    }      

如果我只显示 beacon.getId3 和 Identifier.parse("1") 这样的代码 logToDisplay(beacon.getId3()+"="+Identifier.parse("1") 它将输出 1=1 它们是相等的,但如果我提出了一个条件......它不起作用......所以我不知道出了什么问题或者我错过了什么或者如果我在近处、远处、直接附近检测到特定信标,是否有另一种方法可以插入命令或代码?

4

2 回答 2

0

至少有一个问题。在 Java 中,您不能将字符串与 == 进行比较,因为它会检查它们是否是完全相同的object。代替:

BeaconProximity.getProximityString(beacon.getDistance()) == "Near"

利用:

BeaconProximity.getProximityString(beacon.getDistance()).equals("Near")

其次,我不知道这个BeaconProximity类是做什么的。这不是标准Android 信标库的一部分。 如果您的代码不适用于上述修复,您应该发布BeaconProximity类的定义。

于 2014-10-01T12:04:08.610 回答
0

谢谢大卫.....KB24是我的朋友帐户,我是提出问题的人......我使用Justin O'Dwyer的Beacon Scanner&Logger App中的beaconhelper类,它也使用altbeacon库和只需将其重命名为 BeaconProximity 以确定信标是近、远、立即还是未知……实际上,下面的第一个代码只需比较 == 就可以正常工作

    BeaconProximity.getProximityString(beacon.getDistance()) == "Near" 

但是如果我用下面的代码添加另一个条件......它将不起作用

    beacon.getId3() == Identifier.parse("1")

你的建议解决了我的问题 =) ..... 使用下面的代码

    beacon.getId3().equals(Identifier.parse("1"))
于 2014-10-01T20:21:17.793 回答