冯满满,李 俊,方国康,汪 浩
(武汉科技大学计算机科学与技术学院,武汉 430065)
基于Android的电子围栏系统设计与实现
冯满满,李 俊,方国康,汪 浩
(武汉科技大学计算机科学与技术学院,武汉 430065)
为了借助Android手机提供有效的室外实时位置监测服务,对Android平台的定位技术以及推送技术进行研究。该系统采用基于监控客户端、被监控客户端以及Web服务端的三方数据交互模型,实现监控客户端对被监控客户端的室外实时位置监测和越界自动推送功能。该系统仅依靠软件支持,节省开发专用硬件的成本。
电子围栏;推送;室外位置监测
武汉科技大学大学生科技创新(No.15ZRC106)
近期,高校女大学生遇害事件频发,关于如何保护自身安全的话题一下被推上了风口浪尖。我们认为,除了提高自我防范意识外,来自第三方的保护也至关重要。
目前可穿戴设备与手机的结合品灸手可热。这些设备多用于母婴之间、老人和子女之间以及贵重的财务上,在保护小孩,老人和财务方面的作用日益明显。但是,这些设备的造价高昂,使用人群单一,扩展性不高。
而从大环境下看,移动终端设备在最近几年迅猛发展。基于位置的服务在移动终端设备的应用越来越成熟。现在学校里学生的手机移动终端非常普及,以及校园无线网络的全面覆盖,让我们能够找到一种借助手机移动终端来实时监测用户位置的方法。
相对市场上现有产品,本系统不必制作专用的定位穿戴设备,完全借由软件实现,使得本系统具有很好的扩展性,很容易针对不同的使用群体制作不同的功能,如圈画电子围栏,设定绑定双方距离,历史轨迹回放等。
1.1 定位技术
(1)卫星定位——GPS(Global Positioning System,全球定位系统)
从现状来看,GPS定位是目前最为精确,应用最为广泛的室外定位导航技术,已经成为每一个移动设备的标配之一。并且GPS定位使用GPS天线和接收机通过卫星通道传输信息,是不需要使用网络的定位技术。系统定义的主要工作区域在室外,并且需要轮询获取设备位置用以对比计算,从这两方面考虑,选择了GPS定位技术作为主要定位手段。
(2)Android网络定位——包括基站定位和Wi-Fi定位
基站定位利用附近基站测算并加以严格的数学计算来确定手机位置,误差一般在几十米到几百米之内。Wi-Fi定位根据Wi-Fi接入点的唯一MAC地址,访问网络上的定位Web服务,由Web服务检索并返回该Wi-Fi接入点的位置作为手机的位置。为了防止GPS室内定位误差过大导致系统误推送的情况出现,可手动切换系统定位方式为网络定位,以提高定位精确度。
1.2 推送技术
(1)推送实现
Android通过WifiManager获取网卡MAC地址在通讯两端建立TCP或UDP连接进行网络通讯。这种连接叫做multiple connections,每次请求都会打开一个新的连接,为了避免这种情况出现了长连接persistent connection。借助长连接不断开的特性进行设计。首先客户端发送异步长连接请求,等待服务器响应。服务器非阻塞地保持该长连接。当服务器数据更新后,由服务器通过长连接把消息推送给客户端。这样相当于实现了客户端“监控”服务器。
(2)推送使用
系统中两处使用了推送技术。第一,当越界发生时,被监控方发起推送请求。第二,被监控方为节省流量开销会缓存自己在数据库中的围栏信息用于和GPS定位信息进行对比计算。为保证数据的有效性,当监控方重新设置围栏信息时,服务器发起推送请求告知被监控方更新缓存。
2.1 基本设计思路
本系统客户端为了更好的对用户进行权限管理,增加了角色和功能的概念,由角色执行一组功能,再由用户去扮演角色间接获得功能。当前系统有两种角色,分别为监控角色和被监控角色。用户以用户ID和密码登录系统,当开启定位推送时扮演被监控角色并获取对比计算等功能;当用户对应的绑定方用户扮演被监控角色后,该用户即扮演监控角色。当用户登录时,将设备网卡MAC地址上传到数据库,完成用户与设备之间的映射,为推送提供数据基础。监控角色通过设置围栏信息更新被监控角色在数据库的围栏信息,至此,被监控角色可以轮询对比计算设备定位信息和用户在数据库中的围栏信息来判断越界是否发生。若越界发生则向服务器发起推送请求,服务器根据用户-设备映射表转发推送请求。
2.2 系统结构
基于Android的电子围栏系统由客户端,服务端,MySQL数据库以及推送平台组成。其中系统的绝大部分计算需求被设计在客户端,客户端不仅作为流程控制的接口,还充当了整个系统的控制中心。而服务端有两项功能,其一,和MySQL数据库进行数据交互,其二,转发推送请求。推送平台收到推送请求后负责真正发送推送。下图(图1)说明了本系统的基本结构。
图1 系统结构图
2.3 数据库设计
系统使用MySQL关系型数据库,结合功能需求,可以抽取出相关实体,包含用户信息表,设备表,用户-设备映射表,用户绑定表以及围栏设置表等数据表。借助数据库ER图进行简单表示(如图2),可以明确用户、设备、围栏这三者的关系。用户与用户之间存在绑定,用户与设备之间一对一关联,围栏被某一用户独占。在实际使用中,我们将用户ID作为起点,以用户绑定表,用户-设备映射表,围栏设置表为线索来获取全部可用信息。
基于Android的电子围栏系统主要包括4大功能模块:注册登录模块、用户绑定模块、围栏设置模块、定位推送模块。其中定位推送模块完成本系统核心功能,该模块实现依赖于其他三个模块的功能。
注册登录模块负责新用户身份录入,其中关键的是用户登录。用户登录除负责用户身份验证外,还需要更新用户-设备映射表,保证用户-设备映射关系的有效性,确保推送能够正确送达。
图2 数据库ER图
绑定模块负责查询显示当前系统中用户的绑定情况,并指导用户完成绑定。当前系统只支持一对一绑定,绑定过程由一方发起,需对方同意才能建立绑定关系;也可以自主解除绑定,解除绑定由一方发起,无需对方同意即可解除绑定关系。
围栏设置模块提供监控角色给被监控角色添加围栏信息的功能。在该设置模块中,系统选择百度地图API来显示地图。此外,系统添加了地理位置查询,展示设备当前位置,对方当前位置等功能。借助这些功能,我们可以自由设定围栏的各项信息,最后经由该模块提交给服务器,由服务器将围栏信息写入被监控角色在数据库中的围栏信息,并向被监控角色发起推送,通知其更新缓存。
定位推送模块实现系统核心功能。其定位功能分两步进行:第一为数据收集,缓存围栏信息并获取设备当前位置。第二为对比计算,对比缓存的围栏数据以及定位数据,加以球面上两点间距离公式辅佐计算得出设备与围栏中心的相对距离,再用其与围栏范围进行比较得出是否越界。若越界,则发起推送。
3.1 定位推送模块详解
该模块功能属于被监控角色,设计的主要原则是尽量节省流量开销,尽量提高监测精确度。主要分为四个功能:分别是缓存功能、定位功能、对比计算和推送功能。
(1)缓存功能,登录后对用户自身围栏信息进行首次缓存,之后在收到服务器端数据更新推送后通过网络更新缓存。
(2)定位功能,定位采用轮询方式进行定位。若轮询间隔过大,则违背了系统的实时位置监测的本意。另外,尽管GPS定位不依赖网络,但却非常耗电。故轮询间隔过小也不行。综合两点约束,通过反复试验,系统最后选定90s为轮询间隔。
(3)对比计算,对比计算属于定位推送功能模块中的第二步,其计算数据来源如下:
①从服务器数据库中缓存的用户自身被设置的围栏信息
②实时定位产生的定位结果数据
借助这两个实时数据加以严格的数学公式,对比计算结果能很大程度上反映被监控方和其围栏的位置关系。
(4)推送功能,该功能根据对比计算结果选择是否进行推送。当需要进行推送时,由被监控角色向服务器发起获取监控角色设备网卡MAC地址的请求,之后借由该地址向服务器发起推送请求,服务器送到推送请求后转发给推送平台,推送平台根据设备网卡MAC地址进行推送。
3.2 系统总体设计
本系统以Web服务器作为数据中转站和推送中转站,实现用户设备映射,用户绑定,围栏设置以及定位推送等功能。其中用户可以扮演两种角色,分别是监控角色和被监控角色。不同角色所处地位不同,可使用功能不同,用户可以同时担任着两种角色。监控角色设置围栏,接收推送;被监控角色对比计算,发起推送。其总体系统架构如图3所示。
(1)客户端UI实现
客户端包括4个UI界面,分别是位置信息显示页,用户绑定页,围栏设置页和推送消息处理页。其中位置信息显示页用于显示绑定双方的围栏信息以及当前位置信息等,并且所有页面都以ListView为基础实现的上下滑动。在围栏设置页使用Touch事件响应地图手势操作。位置信息显示页和推送消息处理也如图4,5所示。
图3 系统总体架构
图4
图5
(2)客户端监控方功能实现
监控方功能包含查询位置信息,设置围栏信息,接收处理推送消息等,当用户登录软件后,会自动更新用户-设备映射表,具体做法是将当前用户ID和设备MAC地址更新到服务器的数据库用户-设备映射表中。若用户未绑定,则通过绑定模块引导用户完成绑定。绑定完成后,用户可以借助围栏设置功能对被监控方进行围栏信息的设置,这里的围栏信息主要包括中心点,范围。如果用户进行了围栏设置,则有可能会收到来自被监控方的推送消息,此时监控方可以Notification来接收并处理这些推送消息。
(3)Android被监控方功能实现
被监控方需要主动打开定位推送功能,才能进行定位结果上传,对比计算等一系列操作。
当被监控方开启定位推送后,该模块开启一个服务线程用于轮询获取围栏信息和上传定位结果并且完成对比计算的操作,每一次轮询按顺序完成一轮上述操作。当发现越界时,请求监控方MAC地址,发送推送请求。
图6 Android端流程图
(4)服务器端实现
使用Java和MySQL实现一个无界面的服务器,该服务器为客户端访问数据库提供接口,转发被监控方的推送请求到推送平台,当数据库围栏信息更新时通过推送及时通知被更新对象。
本系统结合Android手机特色的定位功能,以及实时推送技术,已基本完成室外定位推送功能。绑定双方均可通过UI界面做流程控制,进行围栏设置与位置信息查询,并且在处于后台情况下通过声音和振动提高推送的辨识度。能在越界发生时及时反馈到监控方,具有不错的实用性。
[1]刘美生.全球定位系统及其应用综述(一)——导航定位技术发展的沿革[J].中国测试技术,2006.
[2]邹伟平.基于GPS/GPRS/Web的无线定位监护系统的研究.科技广场,2012.
[3]王视换.蜂窝网与GPS相结合的手机混合定位技术——gpsOne[J].信息与电子工程,2004.
Design and Implementation of Electric Fence System Based on Android
FENG Man-man,LI Jun,FANG Guo-kang,WANG Hao
(College of Computer Science and Technology,Wuhan University of Science and Technology,Wuhan 430065)
In order to provide the monitoring service of real-time location on the android mobile phone,studies the positioning technology and push technology of android platform.This system is based on data interaction model which is made up of three members,the monitoring client, the monitored client and the Web server.The monitoring client can monitor real-time location of the monitored client and receive feedback.This system just relies on software that can save development cost of dedicated hardware.
Electric Fence;Push Message;Network Localization
1007-1423(2016)30-0057-05
10.3969/j.issn.1007-1423.2016.30.015
冯满满(1995-),男,湖北襄阳人,在读本科,研究方向为Android开发
李俊(1978-),男,湖北黄石人,副教授,研究方向为网络管理,智能移动开发,651351642@qq.com,15697181978
方国康(1994-),男,湖北恩施人,在读本科,研究方向为Android开发
汪浩(1995-),男,湖北黄冈人,在读本科,研究方向为算法设计
2016-08-16
2016-10-17