使用Altbeacon库发送名称为Eddystone的灯塔

问题描述 投票:0回答:1

我使用以下代码通过我的Android设备作为Eddystone进行传输;

 try {
            byte[] urlBytes = UrlBeaconUrlCompressor.compress("http://www.****.com");
            Identifier encodedUrlIdentifier = Identifier.fromBytes(urlBytes, 0, urlBytes.length, false);
            ArrayList<Identifier> identifiers = new ArrayList<Identifier>();
            identifiers.add(encodedUrlIdentifier);
            Beacon beacon = new Beacon.Builder()
                    .setBluetoothName("devicename")
                    .setIdentifiers(identifiers)
                    .setManufacturer(0x0118)
                    .setTxPower(-59)
                    .build();
            BeaconParser beaconParser = new BeaconParser()
                    .setBeaconLayout(BeaconParser.EDDYSTONE_URL_LAYOUT);
            BeaconTransmitter beaconTransmitter = new BeaconTransmitter(getApplicationContext(), beaconParser);
            beaconTransmitter.startAdvertising(beacon);
        } catch (MalformedURLException e) {
            Log.d("ww", "That URL cannot be parsed");
        }

扫描设备时无法获取beacon.getBluetoothName()。是否可以添加名称。我使用.setBluetoothName(“ devicename”)进行添加,但扫描时未显示。返回null。

android altbeacon eddystone
1个回答
0
投票

通常无法在信标广告中添加蓝牙名称,因为在BLE广告的有限数据包大小中根本没有足够的空间。

Beacon上的字段对传输没有影响。仅在扫描信标时填充。扫描时,数据来自称为扫描响应的单独数据包。出于实用目的,它是只读的。

可以更改出现在手机自身的扫描响应中的手机的BLE名称。但是,更改此名称不仅会影响信标传输,还会影响电话上的所有蓝牙操作。这是库的BeaconTransmitter不更改此名称的另一个原因。您可以自己执行此操作,但是,可以通过在Android的BluetoothAdapter类上调用setName方法。

© www.soinside.com 2019 - 2024. All rights reserved.