0

我将 Eddystone-URL 与 Android 信标库一起使用。我将压缩后的 URL 放在 Beacon 的 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 进行了解码,我很好地看到了 URL,但在另一部智能手机的这个字段中我没有收到任何内容。

4

1 回答 1

0

在这种情况下,您根本无法使用数据字段。数据字段被设计成只保存几位信息。

相反,将您要传输的数据放在 ID1 字段本身内。对于 iBeacon 和 AltBeacon 格式,该 ID 为 16 个字节长。您需要将您的天数字节转换为始终精确为 16 个字节并将它们格式化为 uuid,以便标识符解析方法可以将它们转换为标识符。

于 2017-07-13T17:00:07.120 回答