钟新斌,刘 云,张振江
(北京交通大学通信与信息系统北京市重点实验室,北京100044)
城市轨道交通建设的飞速发展,给城市生活带来了巨大的便利,同时也给城市轨道交通基础设施的日常养护维修普查工作带来了不小的挑战。针对传统普查方式存在的不足,本文设计了一种基于Android平台的城市轨道交通养护维修普查信息采集平台,该平台允许普查工作人员使用支持android应用的手机等便携式移动设备,随时随地记录各类普查数据,并在特定条件下安全可靠地将普查数据上传到普查信息系统中,提高普查工作效率。
平台的主要设计思路是在现有养护维修普查信息系统的基础上,增加一个基于Android操作系统的普查信息采集客户端,该普查客户端可以灵活地安装在支持Android应用的手机等便携式移动设备中,并可以和部署在远端Internet上的服务器交互通信,如图1。
图1 平台总体设计框图
普查客户端的前端GUI信息录入模块,用于给普查人员提供友好的普查信息录入界面;数据存取接口用于保存和维护各类普查信息;数据包封装模块用于将各类普查信息封装成统一格式的数据包,便于传输和推送;编码压缩用于保证数据包推送的可靠性和有效性;客户端配置单元可以获取并更新从普查服务器端下发的配置信息;基于WIFI、GPRS和3G网络,Client和Server通过通信组件实现交互,完成配置参数下发和数据推送功能。
普查信息采集平台主要实现将普查信息推送到服务器(普查信息系统)。要实现数据的准确、高效的提交需要普查客户端和服务器的有机配合。针对平台特点,其工作流程如图2。
图2 平台工作流程
用户在经过1和2过程成功开启普查客户端应用后,经过过程3可以启动普查客户端后台服务,该服务可以定时检查手机网络状态、内存和最新的普查数据保存情况。当更新周期到达时,经过4和5获取从服务器下发的最新配置参数,完成平台设定。
普查人员可以通过触摸屏、手机键盘等方式填写特定时间、特定位置和特定普查对象的普查信息,这些信息通过数据接口保存在Android平台内嵌的SQLite数据库中[1]。
当后台服务监听到数据需要推送时,比如数据记录到达一定数量,手机内存空间不足,或用户手动提交等,此时会启动数据推送功能,普查客户端将普查数据按一定的方式进行统一的组织,经过一定的压缩和编码,在网络环境和服务器就绪的情况下将数据提交到普查服务器端。
普查服务器接收到普查客户端提交的数据后,进行解码和解压,进一步拆封数据包,将普查信息存入数据库中,同时给客户端反馈状态码 。
普查客户端从服务器端获取正确的反馈状态码后,可以继续发送下一个数据包,否则重新发送。
在移动环境下,通常受到带宽和网络流量的限制,普查客户端要将普查数据高效可靠地上传到普查服务器中,需要对暂存在Android移动设备中的数据进行很好的封装。平台对普查数据的封装过程如下:
图3 数据封装过程
JSON(JavaScript Object Notation)和XML(Extensible Markup Language)是目前最常用的2种数据传输格式[2]。与XML格式相比,JSON作为轻量级的数据传输格式,它基于文本,易于阅读和编码,同时更加节省计算资源,减少网络传输流量,加快网络传输。Android平台的org.json包提供了对JSON格式数据的序列化和反序列化的支持。此外,为了进一步提高平台的数据传输效率,减少网络传输流量。平台还对JSON格式的数据采用ZIP算法进行了压缩处理。
普查数据经ZIP 压缩后,JSON格式的文本数据转换成压缩后的二进制数据格式,这类数据的高效、无损的传输和表示是采集平台需要考虑的问题。为了便于二进制文件的传输,需对ZIP压缩后数据采用一种映射方式将二进制文件映射成文本数据再进行传输和处理,本平台采用Base64编码技术实现映射。Base64编码MIME规定的一种编码格式,其通过64个ASCII字符码对二进制数据进行重新编码组合[3],特别适合在http传输中应用。
为了保证普查数据可以高效、可靠地推送到部署在远端Internet上的服务器中,普查客户端需一定的机制对采集的数据进行整合,通信双方按一定的机制实现交互。本系统设计的数据推送流程如图4。
图4 客户端普查数据推送流程
要将普查客户端采集的普查数据推送到普查信息系统中,必须通过目前的WIFI、GPRS或是3G网络。Android平台提供Socket和HTTP等方式实现网络通信,由于现有的普查信息系统是基于B/S结构,需要部署到Web服务器中,而设计基于socket的健壮的web服务器较为困难。在不同的网络中,HTTP方式实现较为容易。因此平台采用Http方式实现客户端和服务端的网络通信。HTTP请求包括POST和GET 2种方式。由于GET方式对传输的数据长度有限制,而普查数据较为庞大,因此采用POST方式上传。
为了保证普查客户端和服务端的安全通信,特别是保证传输数据的完整性,平台采用基于RSA公钥密码体系的安全交互方式,如图5。
图5 普查客户端与服务器交互机制
普查客户端:
(1)普查客户端将原始普查数据经JSON封装→ZIP压缩→Base64编码后组成原始数据A;
(2)数据A附加用户标识UA,组成数据B=A+UA,UA由(uName, pwd)组成,分别是服务器分配给客户端的用户名和口令;
(3)采用算法计算数据的值v=MD5(B);
(4)采用MD5算法计算数据B的MD5值v=MD5(B);
(5)采用RSA加密算法,用客户端私钥对v加密,得到C=EPRa(v);
(6)将数据C附加到数据B中组成完整的数据包P=B+C,将P上传个到服务器。需要说明的是,为了保证安全,可对P进行加密处理。
普查服务器:
(1)服务器获取普查客户端上传的数据'P;
(2)解析P'的数据B'和C',对B'进行MD5杂凑计算得到MD5值v'=MD5(B'),同时对C'用RSA解密算法,用客户端的公钥进行解密得到一个参数v''=Dpua(C');
(3)比较v'与v'',如果相同,说明数据包在传输过程中没有被篡改。否则,丢弃该数据;
(4)从B'中获取A'和UA',系统对UA'中的用户进行验证,验证通过后可以将A'中的数据经Base64解码→ZIP解压缩→JSON解析过程得到普查数据并存入数据库中,否则丢弃该组数据。
基于Android平台的城市轨道交通养护维修普查信息采集平台,有效解决了普查数据的二次录入问题,节约了大量人力物力,加速了城市轨道交通信息化的建设。本系统虽然对基本的普查信息采集方面效果明显,但在对图片特别是多媒体(视频等)普查数据支持方面有待进一步改善。
[1] 勒岩,姚尚明. Google Android 开发入门与实战[M] . 北京:人民邮电出版社.
[2] Guanhua Wang. Improving Data Transmission in Web Applications via the Translation between XML and JSON.Communications and Mobile Computing (CMC), 2011, 182-185.
[3] Shirali-Shahreza, M.; Shirali-Shahreza, S.Sending pictures by SMS. Advanced Communication Technology, 2009, 222-223.
[4] Reto Meier. Professional Android 2 Application Development[M] . Indianapolis:Wiley publishing Inc, 2011.