使用 Altbeacon 库传输带有名称的 Eddystone 信标
Transmit an Eddystone Beacon with name using Altbeacon Library
我使用以下代码使用我的 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()。可以加名字吗。我添加了 using .setBluetoothName("devicename") 但它在扫描时没有显示。它 return 无效。
通常不可能将蓝牙名称添加到信标广告中,因为在 BLE 广告的有限数据包大小中根本没有足够的空间。
Beacon
上的字段对传输没有影响。它仅在扫描信标时填充。扫描时,数据来自称为扫描响应的单独数据包。出于实际目的,它是只读的。
可以更改出现在 phone 自己的扫描响应中的 phone 的 BLE 名称。但是,更改此名称不仅会影响信标传输,还会影响 phone 上的所有蓝牙操作。这是图书馆的 BeaconTransmitter 不更改此名称的另一个原因。但是,您可以自己这样做,方法是在 Android 的 BluetoothAdapter
class.
上调用 setName 方法
我使用以下代码使用我的 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()。可以加名字吗。我添加了 using .setBluetoothName("devicename") 但它在扫描时没有显示。它 return 无效。
通常不可能将蓝牙名称添加到信标广告中,因为在 BLE 广告的有限数据包大小中根本没有足够的空间。
Beacon
上的字段对传输没有影响。它仅在扫描信标时填充。扫描时,数据来自称为扫描响应的单独数据包。出于实际目的,它是只读的。
可以更改出现在 phone 自己的扫描响应中的 phone 的 BLE 名称。但是,更改此名称不仅会影响信标传输,还会影响 phone 上的所有蓝牙操作。这是图书馆的 BeaconTransmitter 不更改此名称的另一个原因。但是,您可以自己这样做,方法是在 Android 的 BluetoothAdapter
class.