Не удалось добавить extraDataField в Eddystone-TLM

Parvinder06 спросил: 28 апреля 2018 в 08:36 в: android

Я пытаюсь добавить extraData для 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 ответ

davidgyoung ответил: 28 апреля 2018 в 10:19

Вы не можете этого сделать. Eddystone-TLM - это собственная передача маяка. Вся концепция дополнительных полей данных является особенностью стороны синтаксического анализа библиотеки, используемой для облегчения доступа к данным телеметрии из соответствующего основного маякового объекта. Это не относится к передаче.

Я на самом деле не уверен на 100%, что библиотека поддерживает передачу Eddystone-TLM, но вы можете попробовать, настроив ее независимо от передачи URL-адреса Eddystone.