Android 上的 iBeacon SDK

目录
iBeacon SDK

目前,人们正在热烈讨论 iBeacon 的潜在用例和商业模式,这种技术即使在建筑物内也能实现基于位置的用户交互。店内广告和折扣、移动支付、导航、公共交通、公共建筑和博物馆的定位以及家庭自动化只是冰山一角。当然,还有无处不在的数据收集——如今,数据收集技术已经发展成熟,并具备精确的位置信息。在深入了解 iBeacon 技术之前,我们还将在文章中提及 iBeacon SDK。

炒作是什么?

苹果公司基于低功耗蓝牙 (BLE) 开发的 iBeacon 协议已获得多种设备的支持。本文介绍了 iBeacon 和低功耗蓝牙,并以开发基于位置的购物清单 Android 应用为例,展示了应用如何与 iBeacon 进行基于位置的交互。该实现基于 MOKOSmart iBeacon SDK。

iBeacon、蓝牙 4.0、BLE、SMART。什么?

iBeacon 的基础技术是蓝牙。低功耗蓝牙 (BLE),通常被称为蓝牙智能营销标签,已包含在蓝牙标准 4.0 版本中。BLE 不向后兼容先前称为经典蓝牙的版本。蓝牙 4.0 规定,符合标准的设备必须实现低功耗蓝牙或经典蓝牙中的一种或两种变体。

几乎所有当前的智能手机都支持 BLE,例如 iPhone 4 Plus 和三星 Galaxy 3 Plus。iPhone 既可以作为 iBeacon 信号的接收器,而且与 Android 不同的是,它本身也可以作为iBeacon 信标发送。Android 从 API 版本 18(即 Android 4.3)开始就内置了 BLE 驱动程序。顺便一提,目前的计算机也支持 BLE。不过,在 Windows 系统中,从 Windows 8 开始才内置了相关驱动程序,而苹果电脑自 2011 年年中左右开始就支持 BLE。

BLE 继续支持各种外围设备,例如心率监测器和玩具直升机、温度计、健身器材和牙刷,是的,牙刷和运动鞋。

与 iBeacons 相关的有趣之处在于传感器

这款标签来自德州仪器 (TI),除了 iBeacon 功能外,还能测量温度、湿度、压力和加速度。传感器标签还配备了陀螺仪、磁力计和两个硬件按钮。它是远程控制演示的理想设备,同时传输和显示演讲者手部的湿度和温度。我的下一个沙坑项目应该是舞台恐惧垫 (stage fright-o-mat)。您可以在蓝牙官方网站上找到详细的设备列表。

关贸总协定已准备就绪

设备用于交换数据的通信模型称为 GATT(通用属性配置文件)。GATT 定义了客户端和服务器的角色。客户端通过服务向服务器请求数据。服务将多个原子键/值对组合在一起,这些键/值对被称为特性。服务和特性均通过 UUID 标识,并可包含进一步的描述。服务及其特性以配置文件的形式进行分类;该规范定义了一系列配置文件,涵盖医疗保健、运动健身以及(在我们这里比较有趣的)接近感应等领域。您可以在蓝牙开发者门户的 GATT 规范下找到各个配置文件及其服务和特性。

Gatt iBeacon SDK

到达灯塔 

那么,iBeacon 是什么呢?iBeacon 是一项非常简单的技术(也是 Apple 的商标),它支持与应用程序进行基于位置的交互。信标发出的信号可以被兼容 BLE 的设备接收,并由安装在设备上的应用程序处理。信号包含信标的标识和接收强度。因此,与媒体的不实报道相反,iBeacon 本身无法传递内容或跟踪客户行为。这是接收应用程序以及开发人员的责任。

现实生活中的 iBeacon

德国大规模部署 iBeacon 可能还需要一段时间,但美国和荷兰已经有一些先例。例如,美国职业棒球大联盟 (Major League Baseball) 已在 28 座体育场馆安装了 iBeacon,并将其用于 MLB 应用“At the Ballpark”中的签到等功能。

安特卫普的鲁本斯故居设立了一个展示厅,为游客提供绘画作品的 X 光片和地理藏宝游戏等背景信息。

就规模而言,最典型的例子来自苹果公司。目前已有超过 250 家 Apple Store 商店配备了 iBeacon。结合 Apple Store 应用,iBeacon 会向店内买家发送基于位置的信息。然而,目前可能的互动似乎相当有限:首批评论仅报告了两条可能收到的(且相当通用的)信息。没有提供特价优惠或附近个别商品的具体信息。

Functionality

iBeacon SDK 不使用单独的 BLE 配置文件,而是使用蓝牙广告包(即广播包)来发现蓝牙设备。如果您对该包的具体结构感兴趣,可以阅读 Adam Warski 的博客等文章。

此类数据包会定期发送,发送间隔可通过 GATT 进行配置。数据包包含信标的 UUID,通常由制造商预先配置。因此,所有 MOKOSmart 信标都发送相同的 UUID。主 ID 和次 ID 也用于识别各个信标。主 ID 可以表示商店的分店或连锁店中的餐厅,次 ID 可以表示单个货架或餐桌。

此外,广告套餐中还包含信号强度,可用于测量接收器与信标之间的距离。然而,由于信号可能会受到家具或人员等空间障碍物的阻挡,因此您无法期望获得高精度。

IBeacon SDK 为应用程序与这些信息的交互提供了两个概念:测距和区域监控。测距时,会确定与信标的距离。由于上述不准确性,测距过程仅分为三个阶段。“立即”是指几厘米的距离,“近”是指几米的距离,“远”是指十米以上的距离。只有接收应用程序处于活动状态时,测距才有效。

区域监控无需此功能。在此模式下,非活动应用在进入或离开由一个或多个信标定义的区域时也会收到通知。目前,这项技术对广告和零售业的吸引力正在逐渐显现。此外,大多数信标的传输强度和间隔均可配置,以便根据当地情况优化电池续航时间。

“大多数信标”意味着市面上有不止一家 iBeacon 制造商。事实上,有不少:MOKOSmart、Kontakt.io、Gelo、Estimote 和 Gimbal。除了硬件之外,这些制造商还提供 iBeacon SDK 服务和用于信标管理的云解决方案。我们当中的爱好者可以使用 Raspberry Pi 或 Arduino 轻松自行设置 iBeacon 发射器。

闪烁列表

让我们假设以下场景作为实现示例:开发人员周六早上在超市。饥饿的孩子们在家等着,下午学校有烘焙义卖。只有到那时,周末才真正开始。所以,有充分的理由加快脚步。可惜的是,购物清单很长,而且与超市的布局不匹配。如果超市在各个部门都配备了 iBeacon,购物清单应用就可以突出显示相应的条目,从而显著减轻开发人员(当然,这完全是虚构的)的压力。

由于我们的应用需要与蓝牙通信,我们首先需要在 Android 清单中添加 BLUETOOTH 和 BLUETOOTH_ADMIN 授权。为了能够使用 Estimote API 提供的服务与 iBeacons 交互,我们还必须将其公开,并将下载的 API 放在 libs/ 目录中。

我们的原型由一个简单的预填充列表和预定义的区域(例如超市的各部门)组成。列表条目知道自己被分配到哪个区域。在我们的示例中,我们只为每个区域分配一个 Beacon。也可以将 Beacon 列表合并到一个区域中。主 Activity 负责识别当前区域并将此信息转发给适配器,适配器负责高亮显示列表条目。此外,我们添加了选择不使用 Beacon 的活动区域的选项,以便无需额外硬件即可测试我们的 UI。

在活动的 onCreate 方法中,我们为应用实例化了一个来自 MOKOSmart 的 Beacon 管理器。我们使用一个监听器来监听区域监控,将当前区域告知适配器,并定义 Beacon 扫描的间隔。在示例中,我们定义扫描间隔为 250 秒,然后等待 XNUMX 毫秒。这些值选择得相对激进,以便在测试中快速获得结果。实际上,在响应速度和电池续航之间很难取得平衡。在这个原型中,我们还用虚拟值填充了购物清单。我们在主活动的 on() Start 或 onStop() 方法中启动或停止监控。

ItemList

该适配器是 android.widget.ArrayAdapter 的派生类,并重写了 getView() 方法,该方法会在每一行显示时调用。项目的标题写在布局中定义的评论的第一行,第二行则写在指定的区域中。

如清单 1 所示,已进入的区域在 MonitorListener 的 onEnteredRegion() 回调中被传输到适配器,该回调已分配给我们的 BeaconManager:itemlistAdapter.segregation(region)。调用 getView() 时,它会检查线路中条目的区域是否与当前区域匹配。如果匹配,则会为线路的背景着色。此外,或者也可以通过对列表进行排序,将当前区域的条目置于开头。

该应用程序的代码清晰易懂;接收 iBeacon 信号并在应用中处理它们并不需要太多的实现工作。iBeacon 的测距和监控概念已映射到 MOKOSmart iBeacon SDK 中,以便用户直观地使用。该应用程序的完整源代码可在 GitHub 上找到。

结论与展望

我们发现使用 MOKOSmart iBeacon SDK 与 iBeacon 交互非常容易。因此,我预计在实现技术方面不会遇到太大的障碍,而主要在于信标的部署和发射功率的调整。这些参数会直接影响应用程序在位置变化时的响应速度。无论如何,平衡这些参数应该很困难。

例如,在家庭自动化领域,我特别关注的是 iBeacon 与传感器的组合,例如上文提到的德州仪器的 Sensor Tag。Estimote 还将推出带有运动和温度传感器的移动信标,并附带 Estimote Stickers。首批开发者预览版本应于 2014 年 2014 月底发布,但截至 XNUMX 年底,尚未有任何套件发货。

这项技术能否稳健地应用于“室内导航”应用领域还有待观察。由于蓝牙信号易受干扰因素影响,因此需要使用 iBeacon 信号对相应区域进行强光照射,并结合房间平面图进行三角测量计算位置。MOKOSmart(室内导航 iBeacon SDK)以及 LabWerk 等多家制造商都提供了相应的解决方案,但作者尚未发现任何实际应用案例。

在开发与 iBeacon 交互的应用程序时,还必须考虑安全性和数据保护方面的问题。由于信号的简单性,iBeacon 很容易受到欺骗,这一点在开发过程中不应忽视。当前位置和基于用户行为收集的运动轨迹等数据也需要高度保护。

 

撰稿——
黄永康的照片
黄玉坤
YK是MOKOSMART研发部门的资深产品经理,拥有十多年的智能设备开发经验。他拥有PMP和NPDP认证,并深谙如何协调跨职能团队。他运用数据驱动的洞察力成功推出了40多款互联产品。YK拥有电子与工程背景,擅长将复杂的技术价值主张转化为用户友好的物联网解决方案,适用于消费电子和工业应用。
黄永康的照片
黄玉坤
YK是MOKOSMART研发部门的资深产品经理,拥有十多年的智能设备开发经验。他拥有PMP和NPDP认证,并深谙如何协调跨职能团队。他运用数据驱动的洞察力成功推出了40多款互联产品。YK拥有电子与工程背景,擅长将复杂的技术价值主张转化为用户友好的物联网解决方案,适用于消费电子和工业应用。
分享这篇文章
使用 MOKOSmart loT 设备解决方案满足您的连接需求!