我一直在做一些关于BLE和iBeacons的工作。目前我知道你可以将你的iPhone变成iBeacon,但我还没有看到任何有关Android手机是否可行的细节 - 特别是我所拥有的HTC One;)
有关此事的任何建议,详情或网页链接将不胜感激,
谢谢,
史蒂夫
答案 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构建发射器应用程序有三个挑战:
您必须从源手动编译Android SDK的特殊版本以解锁隐藏的API,以便您可以构建应用。
4.4.3中传输所需的权限需要系统权限,
因此,您必须将手机设为root用户才能将其安装在特殊位置。这使得在Play商店中分发此类应用程序变得不切实际。
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