APP下载

基于安卓系统的西北地区旅游信息查询系统

2014-04-29陈德武等

计算机时代 2014年1期
关键词:S模式

陈德武等

摘 要: 为了方便快捷地为旅客提供旅游信息,设计并开发了一个基于安卓操作系统的西北地区旅游信息查询系统。该系统基于C/S模式,服务器端使用JSP语言和Struts2+Spring+Hibernate开源框架编写,实现旅游景点信息的浏览、添加、修改和删除,同时为客户端提供下载和更新数据的接口;客户端为基于Android平台的智能手机,可以浏览、搜索旅游景点信息,也可以通过无线网络从服务器端下载和更新旅游景点信息。实际应用表明,该系统稳定可靠,操作方便,应用前景很广。

关键词: Android操作系统; 旅游信息查询; C/S模式; Web Services; JSON

中图分类号:TP315 文献标志码:A 文章编号:1006-8228(2014)01-74-04

0 引言

现在人们生活水平普遍提高,外出旅游成为日常生活的一部分。目前,游客获取旅游信息的主要方式是咨询旅行社或者上网查询,这种方式获取的旅游信息比较粗略,不直观,不灵活。随着3G移动网络的飞速发展和安卓智能手机的普及,使游客在安卓智能手机上实现旅游信息方便快捷地查询成为可能性。本文设计了一种基于安卓系统的西北地区旅游信息查询系统,并且进行了编码实现,使用该系统,只要在无线网络覆盖的范围内,人们就可以通过安卓手机快捷实时地查询旅游信息,从而为制定旅游计划提供决策支持。

1 Android操作系统

Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称[1]。Android操作系统采用了分层的架构,它分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。

应用程序层由一系列Android系统内置的核心应用程序和用户开发的应用程序组成,这些应用程序是开发人员调用应用程序框架层的API函数使用Java语言来开发的。应用程序框架层包含开发应用程序所使用的API框架,这些框架包括丰富而又可扩展的视图、内容提供器、资源管理器、通知管理器和活动管理器等,可以开发出各式各样的应用。系统运行库层包含一些C/C++库,包括音频视频库、2D和3D图形库、Web浏览器引擎等,这些库能被Android系統中不同的组件使用,它们通过Android应用程序框架为开发者提供服务[1]。Linux内核层只用来提供基本功能,也就是系统的底层服务,它添加了一个名为Goldfish的虚拟CPU以及Android 运行所需的特定驱动代码,包括安全机制、内存管理、进程管理、网络堆栈及一系列的驱动模块[2]。

Android平台的开放性允许任何移动终端厂商加入到Android联盟中来,从而不存在以往任何阻碍移动产业创新的专有权障碍[2]。Android系统是一个对第三方软件完全开放的平台,其代码完全开源免费,并且开发其应用程序的Java语言也是开源免费的。

2 系统架构设计

该系统采用C/S模式:客户端为基于Android系统的智能手机,支持无线上网,用来从服务器端下载和更新旅游信息;服务器端为1台PC,所使用的服务器软件为Apache基金会的Tomcat,可以添加、删除、修改、查询旅游信息,并且为手机客户端提供下载和更新旅游信息的服务。系统整体架构如图1所示。

为了减少手机上网次数,节省移动数据流量,使用手机客户端Android系统自带的SQLite数据库,存储旅游信息。用户使用系统时,首先通过无线网络和Internet向服务器发出下载请求,服务器从MySQL数据库中查询到所要下载的旅游信息,发送到手机客户端,手机客户端将这些旅游信息存储到SQLite数据库中;当用户浏览旅游信息时,手机客户端就可以从SQLite数据库中读取旅游信息,显示在界面上;当服务器端的旅游信息被修改时,用户也可以同步更新手机客户端SQLite数据库中所存储的旅游信息。

3 系统软件设计

3.1 服务器端软件设计

服务器端主要实现旅游景点信息的浏览、添加、修改、删除,同时为客户端提供下载和更新数据的接口,服务器端主界面如图2所示。服务器端软件使用MyEclipse集成开发工具,基于JSP语言和目前流行的Struts2+Spring+Hibernate开源框架编写,采用MVC开发模式,分为DAO、Service和Action三层,如图3所示。DAO层类包含一些对数据库进行增删改查的细粒度的方法,Service层类的方法调用DAO层的方法实现业务逻辑的功能,Action层类的方法调用Service层类的业务逻辑方法对客户端的请求进行处理和响应[3]。

存储旅游景点信息的服务器端数据库表结构如图4所示,手机客户端数据表结构中没有更新标记字段,其他字段与服务器端相同。其中,所在城市字段是通过省市联动的选择方式获取,图片字段存储的是十幅旅游景点图片名称(相邻两幅图片名称用#隔开),经纬度是通过在GoogleMap上点击旅游景点所在的位置自动获取的(纬度和经度用#分隔)。当添加或修改旅游景点信息时,图片名称和其他字段数据保存到MySQL数据表里,图片数据使用Struts2框架的多文件上传方式保存到服务器应用目录的upload文件夹,供手机客户端下载。更新标记字段标记旅游景点信息是否被修改,如果被修改,设置为1,否则设置为0。

服务器端为客户端提供的下载和更新旅游信息的接口为InterestsAction类的一些方法,手机客户端通过访问这些方法便可得到所需要的旅游景点信息。

3.2 手机客户端软件设计

本系统手机客户端的主要功能是用户可以浏览、下载、更新和搜索旅游景点信息,如图5所示。本系统客户端采用Eclipse集成开发工具下的Android 2.3模拟器插件进行开发,调用了Android API的GUI组件类库。

当用户进入主界面时,手机客户端从SQLite数据库中将所有的旅游景点信息查询出来,用ExpendableListView组件分类显示,如图6所示。当用户浏览某个旅游景点信息時,客户端根据该旅游景点的名称从SQLite数据库中查询到其详细信息,将一些基本信息显示到界面上,其他更详细的信息可通过点击用GridView组件实现的菜单按钮来浏览,如图7所示。其中天气信息查询使用Web Services技术从中国气象局的天气预报Web服务网站http://www.webxml.com.cn/上获取,如图8所示。景点地图浏览使用的是GoogleMap API,可以以普通地图视图、卫星视图和混合视图的形式显示,如图9所示。显示景点图片时,客户端根据旅游信息中的图片名称字段从SDCard中动态获取图片数据,以画廊的形式显示出来,用户可以很方便地拖动浏览。

用户下载旅游景点信息的流程如图10所示。

当服务器端的旅游景点信息被修改时,更新标记字段updated被设置为1。用户更新手机客户端的旅游景点信息与服务器同步的流程如图11所示。

3.3 技术难点

在用户浏览旅游景点的天气信息时,使用的是Web Services技术。Web Services是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Services能与其他兼容的组件进行互操作[4]。使用该技术可以进行天气预报、股票行情、火车飞机时刻表、邮政编码以及IP地址等查询。本系统调用Web Services使用的是ksoap2库,ksoap2是JAVA环境下的一个轻量级Web Services客户端库,被设计用在Applets和J2ME中。KSOAP2-Android是其在Android平台下的移植,它提供了一个高效的SOAP库,借助于ksoap2我们就能够访问Web Services服务[5],本系统使用ksoap2库查询天气信息的具体步骤如下(具体代码略):

⑴ 导入ksoap2-Android的jar包ksoap2-android-assembly-

2.4-jar-with-dependencies.jar及其依赖库到工程;

⑵ 指定WebService的命名空间和调用的方法名,然后设置调用方法的参数值;

⑶ 生成调用WebService方法的SOAP请求信息,该消息由SoapSerializationEnvelop对象描述;

⑷ 创建AndroidHttpTransport对象,并发送请求给服务器;

⑸ 接受服务器相应,并序列化SOAP消息,最后使用getResponse方法获得WebService方法的返回结果;

⑹ 对返回结果进行解析,得到详细的天气信息。

手机客户端下载和更新每个旅游景点的信息,需要从服务器端下载十幅图片的数据,为了提高下载速度,节约下载时间,本系统采用多线程并行下载的方式。每次下载时,运行五个线程,每个线程下载两幅图片。下载线程使用HttpURLConnection连接对象获得服务器端图片数据的InputStream输入流,然后从该输入流中读取字节数据以RandomAccessFile对象的方式写到SDCard的文件中。

当下载旅游景点的详细信息时,从服务器端向客户端传输的是旅游景点信息表的一些记录组成的字符串。为了减少这些字符串所占用的字节数,并且便于生成和解析,这里使用目前最流行的JSON数据格式来表示。JSON(JavaScript Object Notation)是一种轻量级的完全独立于语言的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它有两种基础结构:对象结构和数组结构。对象结构表示为将一些键值对用逗号隔开并将它们用“{}”括起来,数组结构是将一些字段值用“[]”括起来的表示形式,使用对象、数组这两种基础结构就可以组合成复杂的数据结构了。本系统传输旅游景点详细信息所使用的JSON数据格式表示为:{"旅游景点信息": [{"旅游景点1": [{"名称": "名称1", "类别": "类别1", "所在城市": "所在城市1", …, "图片名称": "图片名称1", "经纬度": "经纬度1" }], "旅游景点2": [{ "名称": "名称2", "类别": "类别2", "所在城市": "所在城市2", …, "图片名称": "图片名称2", "经纬度": "经纬度2"}],... }]}。

3.4 测试结果

将本系统客户端的apk文件安装到一部某国产安卓手机(双核1GHz主频的CPU,512M RAM),服务器端部署到一台PC的Tomcat服务器软件上,在无线网络覆盖的区域,用客户端进行旅游景点信息的浏览、下载和更新测试。结果表明,整个系统运行流畅,下载和更新旅游信息的速度也比较快,达到了预期效果。

4 结束语

在目前3G移动网络飞速发展的条件下,针对普及的安卓智能手机设计并开发了一款西北地区旅游信息查询系统。测试结果表明,该系统运行流畅,操作简便,具有很高的可用性和可靠性,并且本系统客户端基于Android平台开发,还可以移植到装有安卓操作系统的平板电脑、智能电视等终端上,这种跨平台的可移植性拓宽了其应用范围。

参考文献:

[1] 冷威龙.android_百度百科[EB/OL].百度百科.

[2] 李 琴,陈立定,任志刚.基于Android智能手机远程视频监控系统的

设计[J].电视技术,2012.36(7):134

[3] 符钰.基于Struts2+Hibemate3+Spring3框架的Web应用研究[J].

金华职业技术学院学报,2013.13(3):61

[4] 张和平.web services_百度百科[EB/OL].百度百科.

[5] 彭海文.Android Web Services应用研究[J].电脑知识与技术,2011.7

(12):2851

猜你喜欢

S模式
学生考勤系统开发
基于Web的毕业设计管理系统设计与实现
明日博客系统的设计与实现
基于B_S模式的游戏化学习系统研究
集团公司OA系统的研究与开发
S模式空管二次雷达询问与监视技术研究
铝材B2B电子商务系统设计与实现 
基于ASP.NET的就业见习管理信息系统设计与实现
基于B/S模式的数据结构实验平台设计
航空发动机管理信息系统研究