HTC可以将自己宣传为BLE Beacon吗?

时间:2014-07-30 10:00:33

标签: android bluetooth-lowenergy ibeacon

我一直在做一些关于BLE和iBeacons的工作。目前我知道你可以将你的iPhone变成iBeacon,但我还没有看到任何有关Android手机是否可行的细节 - 特别是我所拥有的HTC One;)

有关此事的任何建议,详情或网页链接将不胜感激,

谢谢,

史蒂夫

3 个答案:

答案 0 :(得分:15)

Android设备有一个公共API,只能从Android 5.0开始传输BLE广告。您需要在HTC One上安装此操作系统才能在常规应用中执行此操作。我创建了一个使用无知识产权AltBeacon标准进行传输的应用,并将其设为in the Play Store here.。源代码可用here.同样,您需要Android L才能使用。

或者,Android 4.4.3还具有允许传输BLE广告的隐藏 API。针对4.4.3构建发射器应用程序有三个挑战:

  1. 您必须从源手动编译Android SDK的特殊版本以解锁隐藏的API,以便您可以构建应用。

  2. 4.4.3中传输所需的权限需要系统权限,
    因此,您必须将手机设为root用户才能将其安装在特殊位置。这使得在Play商店中分发此类应用程序变得不切实际。

  3. 4.4.3中的错误将广告的长度限制为比传输20字节信标标识符一个字节参考tx功率值所需的字节少一个字节。这意味着你不得不放弃后一个领域,这使得它无法进入"范围"或估计从其他设备到发射器的距离。

答案 1 :(得分:2)

只要你的手机是L或5.0(我在Nexus播放器上试过这个)

建立大卫所写的内容。 下载AltBeacon请确保查看分支 android-l-apis 使用./gradlew版本构建您的aar并包含在您的项目中。

        Beacon beacon = new Beacon.Builder()
                .setId1("00000000-7777-5555-3333-000000000000")
                .setId2("1")
                .setId3("2")
                .setManufacturer(0x004c)
                .setTxPower(-59)
                .setDataFields(Arrays.asList(new Long[]{0l}))
                .build();
        mBeaconTransmitter = new BeaconTransmitter(this, new BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
        mBeaconTransmitter.startAdvertising(beacon);

不确定是否会因为使用0x004c来扰乱Apple ...这是他们公司的制造代码。 如果你打算生产,我会更多地研究它。但是对于工程测试来说,测试一下就可以了。

我能够在iOS上的Gimbal应用和Android上的iBeacon定位中将此信标检测为iBeacon。

答案 2 :(得分:0)

如果你的设备支持,这可以在Android 5 Lollipop上实现: https://code.google.com/p/android-developer-preview/issues/detail?id=1570#c52