基于Android的位置指纹数据采集系统

2017-09-18 21:09李刚姬同凯杨建光曾国玉梁通
计算机时代 2017年9期

李刚 姬同凯 杨建光 曾国玉 梁通

摘 要: 位置指纹采集工作是实施Wi-Fi定位系统的重要环节。为了减少无效作业、保障数据可用性、提高团队协作能力,设计并实现了一种基于Android平台的位置指纹数据采集系统。该系统具备采集规则自定义、地图及采集点展示、无线信号采集和结果实时上传等功能,具有交互体验顺畅简便、施工过程可视化等优点。测试效果表明:系统运行良好,功能稳定可靠,满足实际应用需要。

关键词: Android; 位置指纹; 无线信号采集; Wi-Fi定位系统实施

中图分类号:TP311 文献标志码:A 文章编号:1006-8228(2017)09-09-04

Abstract: The location fingerprint acquisition is the important basic part of Wi-Fi positioning system. In order to reduce the fruitless work, guarantee the data availability and improve the teamwork cooperation, an Android-based location fingerprint acquisition system is designed. The system has the functions of defining acquisition rule, displaying map and acquisition points, acquiring the wireless signal data and uploading the results in real time, and has the advantages of smooth and simple of interactive experience and visualization of construction progress. The test results show that the system runs well and the function is stable and reliable, which meets the needs of practical application.

Key words: Android; location fingerprint; wireless signal acquisition; Wi-Fi positioning system implementation

0 引言

隨着移动互联网技术发展,LBS(Location Based Service)发挥着越来越重要的作用[1-2]。Wi-Fi(Wireless Fidelity)定位技术是在室内环境实现LBS的重要手段之一[3-4]。得益于支持Wi-Fi技术智能移动终端的普及,Wi-Fi定位技术已在商场、校园、图书馆、博物馆、旅游景区、医院、矿井等多个场景得到应用,并取得了不错效果。

基于Wi-Fi的位置指纹定位是以定位环境中各个无线AP(Access Point)接入点的RSSI(Received Signal Strength Indicator)汇集形成的位置指纹库为基础的无线定位解决方案,具有定位成本低、扩展性强和定位精度比较高的优势,成为当前较广泛使用的热点技术[5]。其中,位置指纹数据采集工作相当关键。

根据移动、持续作业等特点,使用智能移动设备采集无线信号数据是较理想的选择。目前,Android和iOS设备具有较高的市场占有率。相较于iOS平台,Android平台开放了扫描Wi-Fi相关信息的API(Application Programming Interface),具有丰富的开源资源[6-7]。故选用Android平台,实现位置指纹数据采集系统。

1 系统设计

1.1 系统总体设计

系统采用C(客户端)/S(服务器)架构,分为客户层、业务处理层和数据服务层,如图1所示。其中业务处理层和数据服务层运行在服务器端。各层功能描述如下。

⑴ 数据服务层。提供系统运行所需的数据支撑,包括数据采集所需的地图文件、采集点位置文件、采集数据结果以及通过采集数据生成的位置指纹数据等,数据的具体形式包括数据库和SVG(Scalable Vector Graphics)文件。

⑵ 业务处理层。是系统业务实现的核心部分,为客户层提供相关业务的处理。包括地图及采集点位置文件下载、指纹数据制作、数据服务层相关数据资源获取、采集结果上传存储等相关服务。

⑶ 客户层。主要通过基于Android平台的智能终端设备进行位置指纹采集的相关工作。

1.2 客户端设计

系统客户端的功能结构如图2所示,主要包括基础功能、地图及采集点展示和操作、Wi-Fi信号扫描及采集、采集数据上传4大功能模块。

⑴ 基础功能模块。用户登录后设置采集规则。采集规则分为无线设备AP过滤规则、采集操作规则和采集结果要求。其中,无线设备AP(Access Point)过滤规则有两种,匹配Mac地址前三段和匹配SSID前缀;采集操作规则包括采集的次数、设备所处方向和每次采集的时间;采集结果要求包括扫描到的AP数量和相应采集的数据量。

⑵ 地图及采集点展示和操作模块。智能终端从服务器端下载地图和采集点位置文件,在地图上显示各个采集点的具体位置及采集状态。采集状态包括未采集、已采集未上传、已上传和已上传有更新四种,分别用红色、黄色、蓝色和绿色表示。

⑶ Wi-Fi信号扫描及采集模块。根据采集操作规则,智能终端在采集点相应位置扫描Wi-Fi信号,将满足要求的采集结果存储到本地数据库。采集结果包括采集点ID、AP Mac、RSSI值和采集时间。endprint

⑷ 采集数据上传模块。在采集点的信号采集工作完成后,同步结果至服务器端。

1.3 服务端设计

系统服务器端主要实现基础资源管理、指纹数据制作和基于RESTful风格的HTTP服务发布[8]。系统服务器端架构如图3所示。

⑴ 基础资源采集。系统所需的基础资源数据包括地图数据和规划的采集点位置数据。把采集后的相关数据以符合SVG标准的文件形式组织,通过FTP技术上传至服务器。

⑵ 指纹数据制作。针对某一采集点,当其采集结果上传完成后,以AP为单元,对采样RSSI值进行处理。处理方法是采用σ高斯滤波模型,选取高概率发生区的RSSI值[9],取其中位数作为最终值,存入指纹数据库中。

⑶ HTTP服务。基于SSH框架[10],使用JAVA语言進行开发,提供RESTful风格的HTTP服务,通过Tomcat服务器部署发布。

2 系统实现

系统实现的关键点包括地图及采集点的显示和操作、Wi-Fi信号扫描及采集、信号采集结果上传。

2.1 地图及采集点的显示和操作

本系统使用EepSvgMapLib和EepPhotoViewL-ib两个自定义封装Library库实现地图及采集点的显示和操作。其中EepSvgMapLib库主要实现地图和采集点位置文件的下载、更新、文件解析、渲染和显示功能;EepPhotoViewLib库主要实现地图的手势操作,包括缩放、平移、旋转等操作。以下是各个Library库中用到的核心类。

⑴ SVG类。将SVG文件类型的地图和采集点位置文件最终解析成的对象类型,该类中包含了S-VG文件中所有类型的节点和属性值,通过调用re-nderToPicture方法将解析的SVG对象转换为Ima-geView控件能够直接显示的Drawable对象。

⑵ SVGParser类。SVG文件解析的工具类,将地图和采集点位置文件解析成SVG类对象,使用Parse(InputStream is)函数解析SVG文件流,将地图文件和采集点文件分别解析成两个SVG对象,然后将两个SVG对象在合并为一个SVG对象进行渲染,达成在地图上显示采集点位置的效果。

⑶ MapView类。地图显示的封装类,内部封装了显示地图的ImageView控件、显示地图方向的指北针控件、显示地图覆盖物的容器控件、地图缩放控件和地图标尺控件。

⑷ EepMap类。MapView的操作类,主要负责对MapView上的元素进行操作,如文字、POI元素、Marker、InputWindow、Polyline、Cicle等元素的添加、删除和自适应显示等。另一个重要作用是负责地图及采集点文件的下载和更新,显示地图前,在另起的独立子线程中,判断当前地图和采集点文件的状态,具体操作参见图4。

⑸ PhotoAttacher类。地图的手势操作工具类,包括平移、缩放、旋转操作,提供地图Matrix变更及地图操作的回调监听,方便对地图在手势操作过程中进行各类调整。

2.2 Wi-Fi信号扫描及采集

使用Android系统提供的WifiManager服务,在采集点位置上根据设定的采集操作规则,以1秒钟间隔持续扫描Wi-Fi信号,扫描结果通过Broadcast方式广播,在自定义WifiScanRecevier类中对扫描结果作接收处理。处理时,先根据设定的AP过滤规则对采集到的所有信号数据进行过滤,筛选出符合条件的数据结果。然后根据采集结果要求对数据结果进行检查:对不符合要求的结果提示重新采集;对符合要求的采集结果,拼接成JSON字符串,存储到本地SQLlite数据库中,等待上传至服务器端。在采集操作完成后,更新SQLite中相应的采集点状态,并更新地图上采集点的颜色,以免重复采集。用到的核心类包括:

⑴ WifiSearcher类。获取WifiManager服务并开启Wi-Fi扫描,将扫描结果通过Broadcast的方式广播出去;内部自定义WifiScanRecevier类接收扫描结果,并通过SearchWifiListener监听回调将扫描数据交由其他类处理。

⑵ ApCollectionFragment类。实现SearchWif-

iListener监听器的方法,对扫描到的信号数据进行过滤、校验和存储。

2.3 采集结果上传

本系统支持多人同时进行数据采集,所以在进入数据上传页面时,需保证数据同步:智能终端从服务器端获取所有采集点的采集状态,更新相应本地维护的状态,并以列表形式展示所有采集点的状态,然后选择未同步的数据进行上传。

采集结果以采集点为单元,通过HTTP请求方式依次上传到服务器。数据上传成功后,更新本地存储的采集点状态、更新地图上的采集点状态、删除本地存储的采集数据。

3 系统测试

在某实验中心(长30米、宽22米)规划80个采样点,选用8个型号为Huawei AP6010DN的无线AP设备进行无线覆盖,选用魅族MX5手机(Android5.0系统)作为采集设备。对每个采集点分0?、120?和240?三个方向进行数据采集,每次采集时间为30s,系统运行效果如图5所示。根据服务器数据统计结果显示,未出现数据缺失现象。

4 结束语

该系统基于Android平台实现,可根据位置指纹数据采集工作的实际需求动态地调整相关采集参数,参照地图找寻待采集点;在采集过程中加入了计时器提醒、方向传感器引导、RSSI波动曲线等辅助手段;采集完成后可实时反馈结果,有助于提高团队协作效率和工作质量。今后系统将进一步增强多并发大数据量环境下的数据同步能力,以便更好满足大型项目的实施要求。

参考文献(References):

[1] 罗军舟,吴文甲,杨明.移动互联网:终端、网络与服务[J].计算

机学报,2011.34(11):2029-2051

[2] 陈龙彪,李石坚,潘纲.智能手机:普适感知与应用[J].计算机学

报,2015.38(2):423-438

[3] Jinlong E,Jie Ma. A Research on Seamless Indoor and

Outdoor Positioning[J]. Journal of Computers,2013.8(12):3047-3057

[4] 章嫚娜,王玉槐,曹世华,张慧熙,谢晓婷.GPS+WIFI室内外混

合定位服务系统研究[J].计算机时代,2016.3:12-14

[5] 陈斌涛,刘任任,陈益强,刘军发,蒋鑫龙,刘定俊.动态环境中的

WiFi指纹自适应室内定位方法[J].传感技术学报,2015.28(5):729-738

[6] 曹文静.基于iOS的室内定位系统的研究与实现[D].四川师

范大学,2015.

[7] 杨凯,郭英,毕京学.基于安卓平台的室内实时定位[J].测绘科

学,2015.40(6):125-128,155

[8] 王鹏飞.移动瘦客户端架构在企业中的应用研究[J].计算机

时代,2016.3:27-30

[9] 陈丽,王学东,孙晶晶,李明.基于改进高斯滤波的室内无线定

位算法[J].电气自动化,2014.36(3):31-33,53

[10] 薛桂香,任女尔,闫世峰,林涛.基于简单工厂模式的SSH+

ExtJs架构泛型化研究[J].河北工业大学学报,2015.44(3):65-69endprint