无法在Eddystone-TLM中添加extraDataField

时间:2018-05-22 10:16:37

标签: android altbeacon

我正在尝试为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);

1 个答案:

答案 0 :(得分:0)

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

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