如果应用程序检测到具有Pibeacon默认UUID且minor或id3为1的altbeacon,我如何插入代码或执行某些操作?

时间:2014-10-01 11:00:42

标签: android ibeacon ibeacon-android android-ibeacon altbeacon

我是Android开发的新手,我正在使用altbeacon库和altbeacons的参考应用程序我们也有2个Pibeacons .......参考工作正常,能够检测到两个信标......我如果应用程序检测到特定的信标,我想做点什么...例如,如果我在近距离检测到信标,我想显示一个字符串......前两个if语句工作正常,但如果我添加一个条件来确定哪个如果声明不起作用,信标就在第3个附近......第一个信标镜头是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 他们是平等的,但如果我把它作为一个条件...它不起作用...所以我不知道什么是错的或者我错过了什么或者是否有另一种方法来插入命令或代码如果我在附近检测到一个特定的灯塔,远,近邻?

2 个答案:

答案 0 :(得分:0)

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

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

使用:

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

其次,我不确定BeaconProximity课程的作用。这不是标准Android Beacon Library.的一部分如果您的代码无法使用上述修复,则应发布BeaconProximity类的定义。

答案 1 :(得分:0)

谢谢david ..... KB24是我的朋友帐户,我就是那个问这个问题的人......我使用了Beacon Scanner&amp; amp; Justin O'Dwyer的Logger App也使用altbeacon库并将其重命名为BeaconProximity以确定信标是近,远,立即还是未知.....实际上下面的第一个代码只能比较==

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

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

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

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

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