首页 > 新闻 > 国内 >

手把手教你如何开发AltBeacon安卓

2015-07-31 11:03:53   作者:蓝牙技术联盟    来源:CTI论坛   评论:0  点击:


  模糊的Beacon追踪

  我们的方法简单而有效--保留了最近15秒的报告中提示位于范围内的Beacon的相关数据缓存,以及每个Beacon最近一次被探测到的精确时间。通过计时器任务,把最近15秒内没有被探测到的Beacon视为“过期”、移除缓存。

  在可以称得上“重中之重”的didRangeBeaconsInRegion方法中,我们更新了Beacon数据缓存和回调的Beacon对象列表,然后评估全部的缓存数据,以判定目前距离最近的Beacon。于是测试的结果有了改善。这类似于数据平滑处理,相关代码片段如下图。

 

  图5 - GyboApplication.java中的Beacon缓存设置和使用

  图6 -BeaconEvent类别

  图7 -负责终止BeaconEvent对象的计时器任务

  最后的最后,提醒用户!

  一旦实际执行了获取范围内Beacon报告的代码、采取了某种方式追踪Beacon、并根据获得的数据判断哪一个Beacon离游客最近,那么就只剩最后一步了:在合适的情况下提示游客Beacon所关联的展品信息。怎样判断是否“合适”呢?主要看最后一次生成的通知是否为同一Beacon相关的,因为没有必要反复提示用户同一个展品的信息。还需要将估算的Beacon距离与既设的(触发行为的)最小距离值进行对比,判断游客是否足够靠近Beacon(也就是展品),然后决定是否发送展品信息。

  如果APP是在前台运行,提示游客的方法就很简单:更新主要展览信息页面、显示最近的展品介绍。我们使用内存中有关Beacon及其对应展品的数据结构,每个Beacon都有自己的ID,就可以分别对应各自的展品信息,并在APP本地映射了这些数据的对应关系,但正如第一篇中所讲到的,对于除了原型以外的任何APP,最好从远程服务器上获取相关数据,根据位置或其他信息配置Beacon。

 

  图8 -Beacon Information类别

  图9 -ThingOfInterest类别

  通知列表下拉菜单中的通知,并将其链接到定义展品信息页面的Activity。

 

  图10 - 安卓系统通知,提示附近发现

  下图是安卓通知的代码。

 

  图11 - 创建通知

分享到: 收藏

专题