首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AltBeacon:选择信标的简单方法

AltBeacon:选择信标的简单方法
EN

Stack Overflow用户
提问于 2016-07-31 12:27:36
回答 2查看 259关注 0票数 2

这是唯一的方式选择一个信标Eddystone类型?

代码语言:javascript
复制
     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...
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-31 17:26:29

是的!Android灯塔图书馆版本的2.8+,这要容易得多。每个BeaconParser都添加了一个可选的字符串标识符。此标识符将传递给使用该解析器匹配的任何Beacon实例,因此您可以很容易地判断哪种信标类型是。

下面是一个如何工作的例子:

代码语言:javascript
复制
beaconManager.getBeaconParsers().add(new BeaconParser("Eddystone-UID")
  .setBeaconLayout(BeaconParser.EDDYSTONE_UID_LAYOUT));

...

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

只需确保在构造BeaconParser时设置标识符。

这正是因为在你的问题中指出的确定信标类型的尴尬之处。

票数 2
EN

Stack Overflow用户

发布于 2016-07-31 12:46:14

检查Alt信标库:http://altbeacon.org

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

代码语言:javascript
复制
if (String.valueOf(beac.getId2()).trim().equals("13191"))//Getting the major of the beacon
                            {
                                //do something
                            }

在用户界面线程中运行代码时,信标在范围内:

代码语言:javascript
复制
  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
                            }
                        }
                    }
                });


            }
        });

    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38683967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档