我正在寻找一种从Android设备检测iBeacon(iOS 7.0功能)的方法。我阅读了Android文档,其中似乎iBeacon是一种发送其位置的GATT服务器。虽然Android文档说我不应该轮询这些数据,但对于检测来说这是必要的。
我搜索了很多,但这个主题还很新(我甚至创建了一个新标签 ibeacon),所以如果我能从iOS世界得到一些资源链接来描述实现,我会很高兴。此外,如果有一些我尚未发现的Android库也会很好。
我正在寻找一种从Android设备检测iBeacon(iOS 7.0功能)的方法。我阅读了Android文档,其中似乎iBeacon是一种发送其位置的GATT服务器。虽然Android文档说我不应该轮询这些数据,但对于检测来说这是必要的。
我搜索了很多,但这个主题还很新(我甚至创建了一个新标签 ibeacon),所以如果我能从iOS世界得到一些资源链接来描述实现,我会很高兴。此外,如果有一些我尚未发现的Android库也会很好。
编辑:下面的库已经移动到这里:
https://github.com/AltBeacon/android-beacon-library
我已经将iOS7 iBeacon SDK移植到Android上,能够看到标准的iBeacons并估计它们的范围。这里提供了代码:
https://github.com/RadiusNetworks/android-ibeacon-service
为了使其工作,需要Android 4.3及以上版本,该版本引入了低功耗蓝牙API。您还需要一台带有低功耗蓝牙芯片组的设备。
如果您不想使用上面的完整库,您可以自己编写。iBeacons只是每秒钟传输一次BLE广告,并以已知字节序列开头。您只需告诉Android执行BLE扫描,获取每个广告,并查找以已知iBeacon字节序列开头的广告。然后,您可以解析出iBeacon字段。以下代码显示了如何完成此操作:
我不太明白你的意思,能否提供文档链接说明为什么不应该轮询数据?
但在我看来,iBeacon好像是作为服务器工作的,这对我来说有点有趣。它不是用来查找其他设备而不是手机本身吗?
这是它使用的特征。对我来说,听起来像你要找的设备是“信标”,而手机本身只是一个监听器。因此,您不应该轮询EHPE和EVPE数据,而应该实际上听取它的变化或“广播”。
我自己也有点新手,找不到任何真正具体的文档。
但请注意,在我提供的链接中,顶部角落有下载链接,可以为您提供完整的PDF格式文档。在那里,您可能会找到更多答案。