使用 android 5.0 设备传输 iBeacon 时遇到问题

Trouble transmitting an iBeacon with an android 5.0 device

我在从 android 设备 Nexus 6 发出 iBeacon 时遇到问题。我在检测从我的 android 设备或​​ iTouch 发出的信标信号时没有问题,但是我找不到来自 iPhone 的信号。我正在使用 altbeacon 库并使用 BeaconTransmitter class。我放在一个单独的线程中。

    new Thread(new Runnable() {
        @Override
        public void run() {
            mBeaconTransmitter = new BeaconTransmitter(CredentialActivity.this, new BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
            beacon = new Beacon.Builder()
                    .setId1("BA39A880-799C-46FA-86AB-A4AC51927BAA")
                    .setId2("1")
                    .setId3(String.valueOf(selectedBouncer))
                    .setManufacturer(0x0000) // Choose a number of 0x00ff or less as some devices cannot detect beacons with a manufacturer code > 0x00ff
                    .setTxPower(-59)
                    .setDataFields(Arrays.asList(new Long[]{0l}))
                    .build();
                mBeaconTransmitter.startAdvertising(beacon);
        }
    }
    ).start();
}

几点:

  • 代码正在调用 .setDatafields(),但格式没有定义数据字段("d:" 前缀)。应删除对 .setDatafields() 的调用。

  • 制造商代码应与拥有您正在模拟的信标类型的公司的蓝牙 SIG 制造商代码相匹配。可以看到两个字节码的完整列表here.

此外,您可能需要确保 Google Play 商店中的以下应用程序之一可以在您的设备上运行,以确保您没有遇到硬件设置问题。众所周知,这些应用程序可以在 Nexus 6 上传输 iBeacon 广告,并且它们在后台使用相同的库: