我正在尝试为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);
答案 0 :(得分:0)
你做不到。 Eddystone-TLM是它自己的信标传输。额外数据字段的整个概念是库的解析侧的一个特征,用于使得从相应的主信标对象访问遥测数据变得容易。它不适用于传输。
我实际上不是100%确定该库支持传输Eddystone-TLM,但您可以尝试独立于Eddystone-URL传输进行设置。