AltBeacon:选择信标Eddystone的简便方法

时间:2016-07-31 12:27:37

标签: ibeacon altbeacon beacon eddystone

这是为类型选择信标Eddystone的唯一方法吗?

     if (b.getServiceUuid() == 0xfeaa) {
        if (b.getBeaconTypeCode() == 0x00) {
            // Eddystone-UID
        } else if (b.getBeaconTypeCode() == 0x10) {
            // Eddystone-URL
        } else if (b.getBeaconTypeCode() == 0x20) {
            // Eddystone-TLM
        }
    } else {
        // AltBeacon...
    }

2 个答案:

答案 0 :(得分:2)

是的!使用Android Beacon Library版本2.8+,这更容易。每个BeaconParser都添加了一个可选的字符串标识符。此标识符将传递给使用该解析器匹配的任何Beacon实例,因此您可以轻松地确定哪种信标类型。

以下是一个如何运作的例子:

beaconManager.getBeaconParsers().add(new BeaconParser("Eddystone-UID")
  .setBeaconLayout(BeaconParser.EDDYSTONE_UID_LAYOUT));

...

if (beacon.getParserIdentifier().equals("Eddystone-UID")) {
  // This is Eddystone-UID
}

确保在构建BeaconParser时设置标识符。

这恰好是因为确定问题中指出的信标类型的尴尬而添加的。

答案 1 :(得分:0)

检查altbeacon库:http://altbeacon.org

要区分信标,请以这种方式使用if语句:

if (String.valueOf(beac.getId2()).trim().equals("13191"))//Getting the major of the beacon
                            {
                                //do something
                            }

一旦信标在范围内,代码将在UI线程中运行:

  public void Run(View view){
        beaconManager.addRangeNotifier(new RangeNotifier() {
            @Override
            public void didRangeBeaconsInRegion(final Collection<Beacon> collection, Region region) {

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {

                        for (Beacon beac : collection) { //LOOP searches for all the beacons within the range...
                            //beac.getId1()// 
                            beaconUUID = beac.getId2().toString(); //Major
                            //beac.getId3()//Minor
                            udaljenost1 = Math.round(beac.getDistance() * 100.0) / 100.0; //dobivanje integera iz decimala, zaokruzivanje na cjeli broj

                            if (String.valueOf(beac.getId2()).trim().equals("13191"))//Getting the major of the beacon
                            {
                                //do something
                            }
                        }
                    }
                });


            }
        });

    }