【Android论文栏目提醒】:网学会员为广大网友收集整理了,基于Android平台的物流信息查询软件 - 期刊论文,希望对大家有所帮助!
ISSN 1009-3044 E-mail: jsltcccc.net.cnComputer Knowledge and Technology 电脑知识与技术Computer Knowledge and Technology 电脑知识与技术 http://www.dnzs.net.cn 第 8 卷第 22 期 2012 年 8 月Vol.8 No.22 August 2012. Tel:86-551-5690963 5690964基于
Android 平台的物流信息查询软件 赵永峰,赵强, 杨发智,贾伟(陕西理工学院 数学与计算机科学学院,陕西 汉中 723000)摘要:为实现即时的物流信息查询,设计了一套基于
Android 智能手机的物流查询系统。
文中首先介绍了
Android 应用程序的开发方法,然后阐述了查询系统设计的体系结构和设计方法,分析了系统与物流网络查询接口的使用方法, 系统进行数据处理的流程等内容,最后给出了系统的查询测试结果。
关键词:物流信息;查询;
Android;接口中图分类号:TN929 文献标识码:A 文章编号:1009-3044201222-5298-05Design and Implementation of the Logistics Information Query Software Based on
Android SmartphonesZHAO Qiang ZHAO Yong-feng YANG Fa-zhi JIA WeiSchool of Mathematics and Computer ScienceShaanxi University of Technology Hanzhong 723000 ChinaAbstract: In order to achieve real-time logistics information we designed the logistics query software based on the
Android smartphones. andFirst
Android application development methodology is presented; then describes the architecture and design methodology of the inquiry software;Analyze how to use the interface of the logistics Information query and the data processing process finally the query test results was give.Key words: logistics Information query
android interface 随着网上购物的渐渐流行,对所购商品的物流追踪朝着即时化, 智能化的方向发展。
目前大部分的物流信息查询都是基于个人电脑,用户通过使用浏览器访问相关的物流公司网站来实现物流查询。
由于个人计算机携带的不便性和互联网接入地点的限制,普通网络用户无法实现随时随地追踪物流快递的进展信息。
该文介绍了一种基于
Android 智能手机为查询终端的物流信息查询系统的设计,可以实现移动的物流信息查询。
下面,我们首先简单介绍了一下
Android 平台上软件开发的有关知识,然后详细分析说明了系统的设计过程和关键技术,最后给出了该系统的运行测试结果。
1
Android 软件开发介绍
Android 是当前主流的智能手机操作系统之一, 其架构主要由四部分构成, 由下到上依次为: Linux 核心层、 系统运行库层、 应用程序框架层和应用程序层。
Android 操作系统的内核属于 Linux 内核的一个分支, 该层用来提供系统的底层服务, 包括安全机制、 内存管理、 进程管理、网络堆栈及一系列的驱动模块。
系统运行库层包括程序库和运行时库。
程序库主要是一些 C/C库; 运行时库包含一组核心库提供了 Java 语言核心库内的大部分功能和 Dalvik 虚拟机。
应用程序框架层为应用程序的设计提供了可重用的一组组件, 简化了用户的程序设计。
应用程序层即为用户程序所在的层次,
Android 本身附带了一些核心的应用程序, 包括 e-mail 客户端、短信程序、 日历、地图、浏览器、通讯录等等1-2。
目前所有的
Android 应用程序都是由 Java 语言开发的, 其逻辑组成主要是通过使用应用程序框架层提供的有关组件构成。
应用程序框架层中的主要组件有: Activity 活动、Service(服务) Content 内容) 、 ( Provider 和 Intent 意图) ( 等。
Activity 是最基本的模块之一,所有程序的流程都运行在 Activity 之中。
Activity 一般代表手机屏幕的一个屏, 在其中可以添加一些 Button、 CheckBox 等控件。
一般一个
Android 应用是由多个 Activity 组成的, 这多个 Activity 之间可以进行相互跳转。
Service 是一个应用程序组件, 它长时间运行在后台, 而没有用户界面, 负责数据的更新, 触发通知等工作。
Content Provider 主要的功能就是存储并检索数据以及向其他应用程序提供访问数据的接口。
Intent 是一个将要执行的动作的抽象的描述, 一般来说是作为参数来使用, Intent 来协助完成
Android 由各个组件之间的通讯。
3-42 物流查询系统的设计 物流信息查询软件的设计主要包含: 用户界面的设计;与服务端接口的通信;服务端反馈数据的解析和显示等方面。
下面分别从系统架构、整体流程、接口访问、数据解析等方面来说明软件的设计内容。
收稿日期:2012-05-19作者简介:赵永峰 , 陕西商洛人; (1991-) 男, 杨发智(1990-) 男, , 安徽六安人; (1990-) 男, 赵强 贾伟 , 四川 , 陕西宝鸡人; (1977-) 男, 安县人,讲师。
5298 数据库与信息管理 本栏目责任编辑:代 影第 8 卷第 22 期 2012 年 8 月 Computer Knowledge and Technology 电脑知识与技术2.1 系统总体架构 物流信息查询系统, 属于客服-服务器工作模式。
服务端是各个物流公司的物流查询平台, 运行在服务器上面,直接通过 Internet 对外提供服务; 该文中设计的信息查询软件则属于客户端, 是基于
Android 手机平台的。
手机通过 3G 网络或 WLAN 访问 Internet, 实现与服务器的通信。
由于提供快递服务的物流公司多达上百家, 常用的也有几十家。
客户端软件与这些物流公司的服务器的通信方式可以采用两 1)种方式: 直接通信方式, 2) 客户端软件直接跟每家公司的服务器进行通信; 间接通信方式, 客户端软件跟某个中间服务器进行通信,该中间服务器再与每家公司的服务器进行通信。
方式 1) 客户端软件复杂, , 而且随着需要支持不同物流公司的查询, 或某公司的查询接口发生改变, 客户端软件就需要升级。
方式 2) 则将这种复杂处理集中到了中间服务器上, , 而客户端软件处理就很容易,即使在需要支持新的物流公司的查询时, 只需要升级中间服务器的软件, 而其对外提供的接口保持不变, 客户端软件就不用升级。
综上所述, 我们采用了方式二来实现该系统, 可以得出系统的总体架构如图 1 所示。
它主要由服务、 网络和客户三部分构成, 其中服务器由各个物流公司服务器和中间服务器构成, 网络主要有 Internet、3G/WLAN 构成。
另外, 需要说明的是: 中间服务器我们可以自己来设计开发, 但是一方面需要详细了解各个物流公司的快递查询接口, 并获得授权访问, 另一方面,必须很好的设计客户软件和中间服务器间的访问接口, 此外,在客户软件在提供的用户使用时,我们必须建立好中间服务器。
目前考虑到实际需要, 中间的服务器没有自己设计, 选择了快递 100 来实现我们的系统。
图 1 系统总体框架2.2 客户端的数据处理流程 物流信息查询系统的客户端程序的主要数据处理流程可以表示为图 2。
程序首先获取用户输入的查询信息参数 (如物流公司 ;和快递单号) 然后构造查询语句,提交给查询服务器; 最后获取服务器反馈的数据并分析。
如果查询成功, 则通过解析返回的数据(返回的数据可能是 XML 或 JSON 等格式数据) 提取有关信息显示给用户; , 如果查询错误,则提示错误原因。
图 2 客户端的数据处理流程2.3 获取用户输入信息 Activity 是
Android 应用程序的基础功能单元。
一个 Activity 可以做很多事, 但是他自己并不会显示到屏幕上, 需要使用 view、view group 和 Layout 等组件来表达用户界面单元。
Android 中的界面生成有三种方式: XML 配置生成;用户界面接口生成; 代码生 UI成。
根据 MVC 原则, 应该与程序逻辑相分离, 因此, XML 中定义 UI 结构是高度推荐的。
在 本系统设计定义了两个 Activity, 第一个 Activity 主要包含有一个 ListView 组件(用于让用户选择快递商) 第二个 Activity 主要包 , 本栏目责任编辑:代 影 数据库与信息管理 5299Computer Knowledge and Technology 电脑知识与技术 第 8 卷第 22 期 2012 年 8 月含有一个 EditText 用于输入快递单号) ( (用于显示查询结果) Activity 之间通过使用 Intent 实现通信。
和一个 TextView , 图 3 是本项目的相关界面设计。
图 3 XML 定义的统界面 同时对定义的 Button 按钮对象设置了监听器 (匿名内部类) 用户监听 Button 对象的单击事件, , 表示用户输入完信息,开始提交给服务器准备查询代码如下。
btn.setOnClickListenernew View.OnClickListener public void onClickView v // 相关操作 2.4 通过快递访问接口与服务器进行交互 客户程序在向服务器通信时, 客户端程序通过访问服务端提供的有关应用程序访问接口 API Application Programming Inter (face) 提交有关的信息查询参数给服务器; , 服务端根据所提交的参数, 返回对应的符合某种格式的查询结果信息。
可见, 客户程序与服务器通信的接口是系统的关键技术之一。
由于本项目采用的快递查询服务器网站是快递 100, 快递 100 提供了多种快递访问接口。
因为该文程序是在手机平台上使用,所以申请的是快递 100 提供的 API URL 接口, 该接口支持绝大部分快递公司, 其可以支持返回多种不同格式的完整结果。
该接口的样式如下7: http://api.kuaidi100.com/apiidkeycomtiantiannu1111valicodexxshow0123muti01orderdescasc 其中的参数说明如表 1。
表 1 快递访问接口参数说明7 名称 类型 是否必需 描述 id String 是 16 身份 key, 位字母和数字的组合 , (大小敏感) 需申请。
com String 是 查询物流公司代码。
nu String 是 查询快递的单号。
valicode String 否 查询快递的电话号码。
show String 否 json 1: 2: 3: 返回类型。
0: 字符串默认; xml 对象; html 对象; text 文本。
muti Stirng 是 显示一行还是多行的选择。
order Stirng 否 desc: asc: 按时间由新到旧排列; 按时间由旧到新排列默认。
程序设计中将查询的参数构造为一个接口样式的 URL 字符串, 该字符串作为一个参数, 创建为一个 Java 中的 URL 对象, 然后由Java URL 打开一个 URLConnection, 将查询数据提交给服务器。
由 Java URL 流获得一个 Java InputStream, 通过该流可以获得服务器的反馈数据。
有关代码如下: //构造一个 URL 对象 URL url new URLhttp://api.kuaidi100.com/apiid1620f21aeedbecb6com this.strkuaidishang nu this.strkuaidihao show3muti1orderdesc //得到一个 URLConnection 对象 URLConnection con url.openConnection con.setAllowUserInteractionfalse //得到数据流对象 InputStream urlStream url.openStream //得到字符集的格式 String type URLConnection.guessContentTypeFromStreamurlStream byte b new byte10000 5300 数据库与信息管理 本栏目责任编辑:代 影第 8 卷第 22 期 2012 年 8 月 Computer Knowledge and Technology 电脑知识与技术 //直到流的末尾循环取出 while numRead -1 numRead urlStream.readb if numRead -1 String newContent new Stringb 0 numRead charSet content newContent strcontent urlStream.close//关闭数据流2.5 返回数据的解析处理 客户端通过服务端查询反馈的数据包括如下内容: Message 消息体、Data 数据集合、Time 每条数据的时间、Context 每条数据的状态、status 结果状态 1 (返回 0、 和 408。
0, 1, 408 表示无查询结果; 表示查询成功; 表示验证码出错 (仅适用于 APICode url ) state:快 、递单的状态 1、 3、 (返回 0、 2、 4。
0 表示状态未知 2 3 (不能根据查询结果判断出单号状态) 1 表示已发货; 表示疑难件; 表示已签收; ; 4表示已退货) 7 。
返回的数据格式可以是 JSON、 XML、HTML 和 Text 四种数据格式,该文中采用了 XML 格式。
典型的 XML 例子如下: 图 4 服务端返回数据例 对 XML 的解析,
Android 直接提供了 DOM 和 SAX 两种解析方法。
其中 SAX 方法内存占用小,更适合在手机程序开发,故该文中采用了 SAX 方法。
下面是构建一个 SAX 解析器的相关代码。
public List parseString xmlPath List messagesnull SAXParserFactory factorySAXParserFactory.newInstance SAXParser parserfactory.newSAXParser //获取事件源 XMLReader xmlReaderparser.getXMLReader //设置处理器 RiverHandler handlernew RiverHandler xmlReader.setContentHandlerhandler //解析 xml 文档 xmReader.parsenew InputSourcenew URLxmlPath.openStream messageshandler.getMessages return messages 本栏目责任编辑:代 影 数据库与信息管理 5301Computer Knowledge and Technology 电脑知识与技术 第 8 卷第 22 期 2012 年 8 月 经过分析处理后的反馈数据显示结果如图 5 所示。
图 5 测试结果3 结束语 该文通过手机平台上的物流信息查询系统的框架分析,提出了构建一个基于中间服务器平台的智能手机快递查询系统, 这样构建的系统可以很好的适应手机平台的软件的限制。
文中随后分析了在该系统架构下, 客户端软件的主要设计内容,开发的软件在模拟器和真实手机平台上都运行验证成功,可以实际使用。
后期主要改进的地方有: 其一,加强客服端软件的相关附加功能,使其具有一定的竞争性; 分析设计中间服务器的功能, 其二, 特别是与客户端的接口定义,使其具有一套完整的物流信息查询系统。
参考文献:1 王世江盖索林.Google
Android 开发入门指南 M. 2 版.北京:人民邮电出版社2009.2 Komatineni S.精通
Android 3M.北京:人民邮电出版社2011.3 李刚.疯狂
Android 讲义M.北京:电子工业出版社.2011.4 杨丰盛.
Android 技术内幕:系统卷M.北京:机械工业出版社.2011.5 杨丰盛.
Android 应用开发揭秘M.北京:机械工业出版社.2010.6 柯元旦.
Android 内核剖析M.北京:电子工业出版社.2011.7 快递 100.快递查询接口API介绍EB/OL. 2011 .http://www.kuaidi100.com/openapi/.(上接第 5294页)3 林葱蔡秀珊.校园一卡通系统的设计与管理J.科技广场20067:57-59.4 刘建张敦华.银证转账系统浅析J.计算机与数字工程20041.5 郭豫民.天津农行 IC 卡应用系统安全性研究D .成都:四川大学2003.6 李胜利孙名松王海涛李民.高校校园卡系统建设实践与思考J.厦门大学学报:自然科学版2007S2:162-165.7 Andrew S.Tanenbaumet.al.计算机网络M.4 版.潘爱民等译.北京:清华大学出版社2003. 5302 数据库与信息管理 本栏目责任编辑:代 影