【问题标题】:Transmit an Eddystone Beacon with name using Altbeacon Library使用 Altbeacon 库传输带有名称的 Eddystone 信标
【发布时间】:2020-05-16 19:59:08
【问题描述】:

我使用以下代码在我的 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】:

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

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

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

    【讨论】:

    • 那么在扫描beacon的时候应该怎么做才能和其他beacon区分开来呢?因为在 IOS 中也扫描时,蓝牙地址和蓝牙名称返回 nil。
    • Eddystone url 形式的设计不是为了通过 url 本身的唯一性以外的任何机制与其他信标传输区分开来。如果 URL 中有空间,则可以在末尾添加唯一路径或查询字符串。您还可以使用 Android 上的 Mac 地址或 iOS 中的外围设备标识符字段进行区分。它们会定期轮换,但在大约 15 分钟内保持不变
    • 非常感谢。是否可以快速获取 Eddystone 信标网址。扫描信标对象后我看不到。
    • Swift 问题值得提出一个新问题,因为 cmets 没有回答的空间。您是否已经在使用检测代码?此代码具有类似的 url 信标压缩器类:github.com/AltBeacon/ios-beacon-tools
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多