我正在Android Beacon库中使用Eddystone-URL。我把压缩的网址放在信标的dataFileds中,但当我收到信号时,dataFields是空的,为什么会发生这种情况?在这里附上发送器的代码:
try {
byte[] buf = UrlBeaconUrlCompressor.compress("http://www.google.com");
beacon = new Beacon.Builder()
.setId1("0000FEAA-0001-1000-8000-00805F9B34FB")
.setManufacturer(0xFEAA)
.setTxPower(-59)
.setDataFields(bytesToListOfLongs(buf))
.build();
} catch (MalformedURLException e) {
e.printStackTrace();
}
BeaconParser beaconParser = new BeaconParser()
.setBeaconLayout(BeaconParser.EDDYSTONE_URL_LAYOUT);
beaconTransmitter = new BeaconTransmitter(getApplicationContext(), beaconParser);我在开始传输之前解码了DataFields,我很好地看到了网址,但我在其他智能手机中没有收到这个字段中的任何内容。
发布于 2017-07-14 01:00:07
对于这种情况,您根本不能使用数据字段。数据字段被设计为只保存几位信息。
相反,将您想要传输数据放在ID1字段本身中。在iBeacon和AltBeacon格式的情况下,该Id是16字节长。您需要将日期字节转换为16字节,并将它们格式化为uuid,以便identifier解析方法可以将它们转换为标识符。
https://stackoverflow.com/questions/45075825
复制相似问题