基于Android 的物流信息平台移动终端的设计与实现
2014-07-02刘奕君邢如意骆鹏傲
刘奕君,邢如意,骆鹏傲
(1.徐州医学院医学信息学院,江苏 徐州221009;2.徐州市财经高等职业技术学校信息技术系,江苏 徐州221004)
0 引言
物流信息在物流活动中具有十分重要的作用,物流信息平台对物流信息进行收集、传递、存储、处理和输出等,对物流活动起着指挥、协调、支持和保障的作用,为物流参与方提供决策依据。物流信息化平台有助于提高物流参与方的工作效率,进而促进整个社会工作效率的提高,让物流服务需求方可以享受到更快速、更便宜的物流服务。
当前大多物流信息平台采用C/S或B/S结构进行开发,车主、发货企业、物流公司等物流参与方需在计算机上打开软件或使用浏览器浏览才能获取物流相关信息。随着物流业的快速发展、商品流通速度的加快,车主、发货企业等需要更快捷、方便地获取和发布物流信息的渠道,准确及时地获取数据能够提高企业决策的速度、提升企业的竞争力。本文所提出的基于Android的物流信息平台移动终端目标即利用移动终端(智能手机、平板电脑)的便携性,通过移动网络使移动终端与物流信息平台实现对接,让物流参与方能够随时随地获取和发布物流信息,物流配送更加迅速、高效和易于控制。
1 关键技术分析
1.1 Android平台简介
Android[1]是一种基于Linux内核的开源的嵌入式操作系统,是近几年在嵌入式领域和移动领域应用最广泛的系统之一。Android平台的开源、开放的特性使其在短时间内大量应用在手机、平板电脑等移动和嵌入式设备上,各大移动设备厂商纷纷推出了基于Android操作系统的智能手机等设备。Android系统基于Linux2.6版本内核进行改进,具有极高的稳定性和安全性。
物联网、互联网技术的快速发展和智能移动终端的普及,使得Android平台在其他行业也大放光彩,基于Android的智能家居平台、医疗监控平台、移动教育平台等。对于开发者而言,开发者可以选择使用Java和C++语言进行开发移动应用,Android平台为Java和C++语言提供了大量的函数库供开发人员调用。从开发效率和易用性来比较,大多数开发者选用Java语言,Eclipse平台进行开发。
1.2 XMPP协议
XMPP[2]的全称是可扩展通讯和表示协议,是一个开放的基于XML的数据模型和协议,是即时通信的Internet标准。XMPP的核心思想是在网络中对XML流的分片段发送。由于XML具有跨平台、易于解析等特性,因此XMPP协议具有极强的可扩展性,经过扩展后的消息可以用于处理系统业务相关的请求,使得用户与用户之间、用户与服务端之间可以互相通信,可广泛应用在互联网应用上。XMPP基于C/S结构,客户端之间消息通过服务端进行转发,消息传递时采用TLS机制进行加密和采用SASL协议对XML流进行认证,保证了传输过程中的安全性。
在物流信息平台移动终端上,为实现信息平台向终端实时推送信息,服务端与移动终端之间采用XMPP协议进行数据传输,一方面提高了数据传输的稳定性和高效性,另一方面服务端能够并发支持更多的移动终端进行连接。
2 物流信息平台移动终端的设计
2.1 功能结构分析
物流信息平台移动终端是方便车主、发货企业、物流公司、快递公司、搬家公司等物流参与各方及时获取、发布和查找关于车源、货源、配货站、物流公司等信息的移动应用软件。移动终端相当于运行于互联网上的物流信息平台的移动版本,其具有移动、便携、随时随地查看等特点。
移动终端从功能结构上可以划分为6个模块,分别是实时信息接收模块、车源信息管理模块、货源信息管理模块、物流和快递公司信息管理模块、用户信息管理模块、系统设置和帮助模块。在服务端包括用于与移动端进行信息交换的接口,此接口可分为3个模块,分别为实时信息推送模块、业务信息查询及维护模块、用户信息维护模块。功能结构如图1所示。
服务端实时信息推送模块用于向移动端推送线上最新的物流供需信息、天气预警、高速公路路况等信息;业务信息查询及维护模块用于处理移动端发送的车辆信息、货源信息和物流及快递信息的查询和信息发布请求;用户信息模块用于处理移动端发送的用户信息注册、登录认证、信息维护等请求。由于服务端与移动端采用具有跨平台的XMPP协议和JSON数据格式进行数据传输,因此无论物流信息平台服务端采用何种语言进行开发,都可以方便地开发接口与移动端进行集成。
移动终端中实时信息接收模块与服务端信息推送模块对应,当移动端打开时自动连接服务端,服务端通过此连接向移动端进行信息推送;车辆信息管理、货源信息管理、物流和快递信息管理模块与服务端业务信息查询接口连接,统一采用JSON格式进行数据传输;用户信息管理与服务端用户信息维护接口连接。系统设置与帮助模块用于方便用户设置个人资料、推送信息接收喜好设置和提供帮助文档等。
2.2 架构设计
移动端与服务端之间的用户和业务消息传递采用JSON格式组织,JSON具有可读性高、跨平台、解析效率高等优势。由于移动终端与服务端消息种类较多,为便于统一分类管理,每一条消息设置了类型编号和描述。在本例中消息编号以10开头表示用户类消息,20开头表示业务类消息。并且在消息数据中添加了令牌Token用于标识消息的安全性。此令牌的计算方法为:在第一次与服务端交互时,服务端向移动端下发的会话编号,加上消息数据的数据指纹和消息类型编号混合加密而成。服务端收到消息数据后首先对令牌进行验证判断数据的正确性和完整性。通过此种机制保证了消息在传递时安全性,避免消息传输时截获篡改等操作。以下展示了用户认证消息和业务消息JSON格式示例。
用户登录认证消息格式
移动终端的代码架构设计如图2所示。
图2 移动终端代码架构设计
在图2中XMPPService基于Android Service开发,其作为一个后台应用保持与服务端的长连接,用于接收推送信息。UserInfo Manager、CarInfo Manager和Goods Manager类则用于处理用户信息、车辆信息和货源、物流信息的查看和发布。
移动终端XMPP实现选择asmack类库,其是smack在Android上的构建版本,smack则是完整实现了XMPP协议的开源API库。在asmack类库中提供了XMPPManager类来管理连接信息,包括XMPP协议的端口、服务端IP、登录名和密码和连接的维护,XMPPConnection类创建至服务端的连接等多个类简化开发者底层的XMPP协议处理,从而提高开发效率。
物流信息平台服务端推送模块接口采用AndroidPN搭建,AndroidPN是一个基于XMPP协议的Java开源推送通知实现,其包含了完整的Android客户端示例和Web管理端。使用AndroidPN搭建推送服务端,不需修改原有物流信息平台代码,可将AndroidPN提供的Web服务管理端安装、启动后,将其页面嵌入即可,同时AndroidPN也可方便地通过引用的形式嵌入至原有系统中。Android-PN服务端默认占用5222端口处理客户端的XMPP请求,其功能包括用户信息的认证和消息的推送。服务端与客户端的通信基于会话Session,客户端通过指定端口连接服务端后,将连接信息发送到服务端,然后等待服务端推送信息,消息以stream节点作为开始和结束。在连接上,使用asmack能够完成与服务端的连接、消息的解析、断开重连等功能。
3 物流信息平台移动终端的实现
3.1 接收推送消息
首先搭建基于Eclipse+ADT的移动终端开发环境,分别下载 Android2.2、4.0和4.2版本模拟器用于适配测试,在手机屏幕适配上主要考虑适配四寸屏及以上手机,分辨率为480×800及以上,其次是创建Android项目,编译级别选择4.0,向项目中添加asmack-jse.jar和gson.jar文件分别用于实现XMPP协议通信和JSON文本的解析。向项目“中\res\raw”文件夹中添加“androidpn.propeties”文件,用于配置XMPP服务端连接参数,并添加AndroidPN客户端源码至项目源文件夹中。与XMPP服务端连接的主要代码如下:
3.2 业务消息处理
在业务信息处理上,因为采用了JSON统一了格式,因此代码中创建了JsonMessage类用于封装这类信息,JsonMessageDelegate类用于业务消息的分发处理和与服务端的交互,其作用如图3所示。
图3 业务消息处理流程
服务端通过HTTP或TCP协议向客户端发送业务消息JSON文本,移动终端收到后交由Json-MessageDelegate进行解析为JsonMessage对象,然后抽取中消息中MessageId属性的值,判断该值的含义,然后将此对象传递给对应的处理器Manager对象进行处理。Manager对象在收到后,首先获取MessageData属性的值进行数据一致性的校验,然后再进行处理(显示、丢弃)。对应代码如下所示:
3.3 界面功能实现
在界面设计上使用最多的控件为ListView,其以列表的方式显示信息,并可以灵活配置布局。List-View的数据需由Adapter提供。以车辆违章信息查询为例,为实现列表可拖动效果,自定义了 My-ScrollView类和MyListView类。自定义Query-ResultItemAdapter类提供数据。代码结构如图4所示。
图4 违章查询代码结构
重写ScrollView和ListView类主要解决了用户在屏幕滑动查看数据时的冲突问题,同时实现了下拉刷新等效果。
4 结语
基于Android的物流信息平台移动终端,向物流参与方提供了可随时随地查看和发布物流信息的移动办公平台,通过使用消息推送机制可实时获取最新的物流信息,且参与方可通过移动终端管理自身相关业务信息。移动终端采用AndroidPN作为服务端,asmack作为Android端开发库,方便应用的扩展,移动终端作为物流信息平台的补充,在移动互联网快速发展的今天,其重要性愈加凸显。
[1]姚昱曼,刘卫国.Android的架构与应用开发研究[J].计算机系统应用,2008(11):110-113.
[2]周文琼,王乐球,周桐.基于XMPP的企业即时通信系统研究与应用[J].吉林大学学报:信息科学版,2010(1):106-111.