首页 > 解决方案 > 无法在 Eddystone-TLM 中添加 extraDataField

问题描述

我正在尝试为 TLM 添加额外数据,但它不起作用。该字段的大小在接收方为 0。我搜索了很多,但没有得到任何回应。请帮帮我。

    byte[] urlBytes = new byte[0];
    try {
        urlBytes = UrlBeaconUrlCompressor.compress("http://www.google.com");
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }
    Identifier encodedUrlIdentifier = Identifier.fromBytes(urlBytes, 0, urlBytes.length, false);


    ArrayList<Identifier> identifiers = new ArrayList<Identifier>();
    identifiers.add(encodedUrlIdentifier);

    ArrayList<Long> arrayList = new ArrayList<>();
    arrayList.add(Long.valueOf(et_temp.getText().toString()));
    arrayList.add(Long.valueOf(et_Voltage.getText().toString()));


    beacon = new Beacon.Builder()

            .setIdentifiers(identifiers)
            .setMultiFrameBeacon(true)
            .setBeaconTypeCode(0x20)
            .setManufacturer(0x20)
            .setServiceUuid(0xfeaa).setTxPower(-65)
            .setExtraDataFields(arrayList)

            .build();
    // i:4-13
    //"x,s:0-1=feaa,m:2-2=20,d:3-3,d:4-5,d:6-7,d:8-11,d:12-15"
    beaconParser.addExtraDataParser(new BeaconParser().setBeaconLayout(BeaconParser.EDDYSTONE_TLM_LAYOUT));


    beaconParser.setBeaconLayout(BeaconParser.EDDYSTONE_URL_LAYOUT);

    BeaconTransmitter beaconTransmitter = new BeaconTransmitter(this, beaconParser);
    beaconTransmitter.setConnectable(true);
    beaconTransmitter.startAdvertising(beacon);

标签: androidaltbeacon

解决方案


你不能那样做。Eddystone-TLM 是它自己的信标传输。额外数据字段的整个概念是库解析端的一个功能,用于使从相应的主信标对象访问遥测数据变得容易。它不适用于传输。

我实际上不是 100% 确定该库支持传输 Eddystone-TLM,但您可以尝试通过独立于 Eddystone-URL 传输进行设置。


推荐阅读