1、I论文题目 基于 Android 的智能导游系统的设计与实现专 业 年 级 学 号 姓 名 指导老师 II目 录1 绪论 .11.1 课题背景 .11.2 课题内容 .11.3 课题目的及其意义 .22 系统开发环境及相关技术 .22.1 Android 开发介绍与环境搭建 .22.2 JSON 简介 .32.3 Struts2 框架简介与环境搭建 .32.4 Baidu Maps API 简介 .43 系统分析 .43.1 研究目标 .43.2 需求分析 .43.3 性能分析 .54 系统设计 .54.1 用户界面设计 .54.2 数据库设计 .64.3 程序模块设计 .85 系统功能模块设
2、计 .95.1 文件结构与用途 .95.2 后台定位服务 .115.3 MapApplication.java 类 .135.4 登录模块 .155.5 首页模块 .155.6 导航模块 .205.7 周边信息查询模块 .215.8 个人资料模块 .236 系统测试 .257 总结 .26参考文献 .27致 谢 .281基于 Android 的智能导游系统的设计与实现摘 要 :本文首先分析讨论 Android 手机软件开发主要技术,以及国内景区导游系统与智能导游的现状。然后讲述了基于百度地图 Android SDK 以及定位 SDK技术所设计的 Android 平台智能导游系统的实现。该系统设
3、计实现了后台定位、景点导航、景点信息浏览与下载、周边查询等实用功能,具有良好的通用性与灵活性。关键字:Android;智能导游;导航软件;移动开发;百度地图1 绪论1.1 课题背景中国工业和信息部最新公布数据表明,中国智能手机的市场增长率不断攀升,而且,随着移动 3G 和 Wifi 热点的不断覆盖,用户对手机的互动娱乐体验也提出了更高要求,各种应用软件开始进入,手机日渐成为互动娱乐的焦点。有关资料显示,我国的旅游业发展实力巨大。首先,是旅游收入增长迅速:2013 年春节黄金周全国接待游客达到 2.03 亿人次,实现旅游收入 1170.6 亿元人民币,同比增长达到 15.1%和 15.4%1;其
4、次,固定资产投入力度的不断加大:2009 年 12 月, 关于加快发展旅游业意见首次提出“中国旅游日”的概念,旅游业已经出现在了中国国家战略性产业中。然而,国内旅游业的迅猛发展使得传统的人工导游方式不能满足新时代用户的多元化需求。长期以来,游客在景点旅游时只能走马观花,对景点的多媒体信息了解甚少,就本人经验来说,对于外来游客来说更会由于语言的障碍而使得游览质量下降!于是,基于上述,手机终端的智能导游应用便应运而生。1.2 课题内容本课题结合现代景区的相关特性和用户需求,使用 JAVA 语言,应用百度地图、百度定位(GPS+基站) 、JSON 数据交换和无线通讯等技术,开发一个基2于 Andro
5、id 的 C/S 式智能导航软件系统。这软件使得用户可以利用无线网络以及手机的便捷性无时无刻地享受到景点信息查询、自身位置查询、周边查询、导航等功能所带来的畅快旅游体验。1.3 课题目的及其意义本课题的主要目的是将 Javaweb 后台服务端、百度地图、定位导航技术与景区导游相结合,从而实现景区导游系统的真正智能化。智能导游系统可以储存大量的景区景点信息,不仅可以广泛传播,而且科学环保、方便快捷。此外,系统还提供了自定位、导航的实用功能,让用户可以彻底抛弃纸质地图,减少路痴的认路障碍。这不仅能直接为游客带来更畅快的旅游体验,同时还完善了景区的旅游管理体制。2 系统开发环境及相关技术2.1 An
6、droid 开发介绍与环境搭建Android 是 Google 公司开发的基于 Linux 内核的开源操作系统。它包括:操作系统、用户界面和应用程序,而且不存在任何以往阻碍移动产业创新的专有权障碍 2。Android 系统提供了四大基本组件,包括:Activity、Contentprovide 、 Service、Intentreceiver,每个组件都是一个视图(view) 。但上述四大组件对于一个 Android 应用程序来说,却并不是必须的,可能只需要其中的几种酒可以满足设计需求。Manifext.xml 配置文件时 Android应用程序不可或缺的一个 XML 配置文件,其中定义了程序
7、所用到的组件、组件功能以及一些必要条件和权限。Android 的上层应用程序一般是由 java 语言开发,所以首先应该有由 SUN公司提供的 Java SDK(其中包括 JRE:Java Runtime Environment)以及 Java 主流集成开发环境 Eclipse IDE。此外,还需要 Android 开发专用 Google 提供的Android SDK 和安装在 Eclipse 的插件 Android ADT,为 Android 开发提供开发工具的升级或者变更,是 Eclipse 下开发工具的升级下载的工具 3。Android 开发平台搭建步骤 4:(1)首先到 http:/ww
8、w.eclipse.org/downloads/下载 Eclipse 集成开发环境并且解压,这里推荐下载 Java EE 集成版本,可以为平台的搭建省下不少工作。接3着再去 http:/ 站点下载 SDK 后安装,下载 http:/ SDK1.5后解压。(2)双击 Eclipse 解压后目录中的 eclipse.exe 然后启动,选择 Eclipse 菜单中的 Help- Install New Software- 选项卡上的 Available Software,点击右侧的“Add”输入 http:/dl- with”下拉菜单中选择刚才输入的网址。过一会就会出现一个 Developer To
9、ols 选项,勾上以后点击 Next 以后 Eclipse 会自动网上查找 Android 开发工具插件,然后找到 Android DDMS 和 Android Development Tools,选中这两个点击Finish, Eclipse 就会自动下载并安装 Android 插件了,最后会提示重启Eclipse。(3)重启后选择 Eclipse 菜单中的 Windows- Preferences 在左侧的 Android项目中 SDK Location 中填入 Android SDK 解压后的目录,然后点击 Apply。(4)在 Windows7 的系统变量中的 path 变量中添加一个值
10、,该值指向解压后的 Android SDK 目录下的 tools 文件夹。2.2 JSON 简介JSON( javaScript Object Notation)是一种轻量级的数据交换格式,它基于javascript 却采用了完全独立于语言的文本格式。JSON 基于“名称/值”对的集合和值的有效序列表这两种格式,用 JSON 表示一组值时不但可以减少复杂性也能提高可读性,是网络编程中数据交换的常用格式。2.3 Struts2 框架简介与环境搭建Struts 是采用 Java Servlet/JavaServer Pages 技术,开发 Web 应用程序的开放源码的 Framework。采用 S
11、truts 能开发出基于 MVC(Model-View-Controller)设计模式的应用构架。而 Struts2 是在原有 Struts 和 Webwork 的技术基础上进行合并的全新的框架,其体系结构而原有 Strcts 差异巨大。 Structs2 是以 Webwork 为核心,采用拦截器机制来处理用户请求,这样的设计也使得业务逻辑能够与Servlet API 完全分离,使应用结构更为合理。Struts2 框架的开发需要使用 Myeclipse 集成开发环境。由于 Myeclipse 是Eclipse 的一个插件,所以在这忽略 Eclipse 的安装。Myeclipse 的安装:首先应
12、该到 http:/ name =Downloads 在系统变量 Path 的值中“%JAVA_HOME%bin;“的后面加入以下内容:%CATALINA_HOME%bin; 到这里,Tomcat 安装完毕 6 。Structs2 框架的搭建,包括以下步骤:首先创建 web 项目并导入 Structs2 所需要的包 struts2 core-2.2.1.1.jar、xwork-core-2.2.1.1.jar、commonsfileupload-1.2. 1.jar comm.ons-io-1. 3.2.jar、freemarker-2.3.16.jar、ognl-3.0.jar 、javass
13、ist-3.7.ga.jar;配置 Structs 在当前 web 项目中,在 web.xml 中配置 Struts2 所需的核心过滤器。2.4 Baidu Maps API 简介百度地图 API 是为开发者免费提供的一套基于百度地图服务的应用接口,包括 JavaScript API、Web 服务 API、Android SDK 、iOS SDK、定位 SDK、车联网 API、LBS 云等多种开发工具与服务,提供基本地图展现、搜索、定位、逆/ 地理编码、路线规划、LBS 云存储与检索等功能,适用于 PC 端、移动端、服务器等多种设备,多操作系统下的地图应用开发 7。3 系统分析3.1 研究目标
14、(1) 学习熟悉 Android 应用程序的框架、开发过程;(2) 学习熟悉 Struts2 框架、开发过程;(3) 基于 Android 的智能导游软件主要实现 Android 系统访问服务端,利用基于 JAVA 的网络编程(Apache HttpClient 项目)与 Webservice 调用,针对手机所在的地理位置,实时查询相关景点的基本信息与天气信息,并智能导航;5(3) 学习熟悉基于 Android 的地图 GIS 开发。3.2 需求分析本软件是一个基于 Android 的智能导游系统,故使用者应该为成分构成比较广泛的游客,所以 UI 必须简洁大方,有显浅易懂。而要实现智能导游,首
15、先就必须要求软件起码如人工导游般,能够为用户提供景点的基本信息讲解、位置描述、导航等服务考虑到景区信息与用户信息等的数据量可能十分巨大,本系统应该使用本地/服务器模式以节省用户的移动设备储存空间以及数据流量。综上所述,本系统应该完成以下功能:(1) 采用 C/S 模式,基于 Struts2 框架服务端储存用户信息以及显示地图所必须的静态信息,供 Android 客户端的查询浏览与下载;(2) 用户信息管理,包括:登录与注册、本地景点信息的管理;(3) 以城市为基本的景点信息查询与模糊查询,包括:名称、地址、图片、经纬度、票价及其优惠活动等,并提供景点信息的本地缓存、下载;(4) 用户自定位,景
16、点位置的地图显示与导航;(5) 周边餐饮、卫生间、住宿、医院、加油站等信息的查询。3.3 性能分析本项目的目标是提升游客的旅游体验,所以对程序的性能要求较高,程序应该具有以下的良好性能:(1) 响应速度快。(2) 安全性高(3) 信息处理速度快4 系统设计4.1 用户界面设计根据设计,本软件系统有以下几个界面:登录界面、景点查询综合界面、景点信息显示界面、景点信息本地收藏界面、周边查询界面、景点导航界面。景点查询综合界面是软件的首页,其主体是百度地图。它能根据当前城市(自选或定位默认)或模糊查询用百度地图显示出景点的分布情况。景点信息显示界面为用户显示当前景点的详细情况,包括:名称、地址、6电
17、话、门票、优惠、简介、图片等资料,并能根据用户意愿选择下载当前景点信息。景点信息本地收藏界面,其主体是一个 ListView。它能够显示出用户的本地景点信息,并实现管理(删除) 。周边查询界面,其主体是一个百度地图。用户可以通过它来查询到周边诸如餐饮、酒店、加油站等信息。景点导航界面,其主体是一个百度地图。它可以为用户进行实时导航服务。根据对用户界面显示内容的分析,绘制出用户界面的草图,如图 4-1、4-2所示。首页城市景点信息景点简介搜索图 4-1 用户界面草图景点 我的收藏7目的地导航 周边查询图 4-2 用户界面草图4.2 数据库设计本软件中有一下数据需要存储:用户信息、景点信息、景点信
18、息收藏、全国城市名称。考虑到用户信息与景点信息的庞大数据量,本系统将其存储在服务器端的 MySQL 数据库,需要时再请求;城市名称数据量较少,为减少用户数据流量,将其存储在手机的 SQLite 数据库中;而景点信息收藏则存放于 SD卡的文件中,综上所述,本系统数据库设计如下:在服务端的 MySQL 数据库中建立新数据库 maps_traverse,并建立新表,包括用户信息表 gpsuser 和景点信息表 spot。如表 4-1 和表 4-2 所示。表 4-1 用户信息表 gpsuser 的结构属性 数据类型 说明id Int(11) 自动增加的主键username varchar(50) 用户
19、名password varchar(50) 密码Email varchar(50) 电子邮箱地址registertime varchar(50) 注册时间powerlimits varchar(50) 权限state varchar(50) 用户登录状态表 4-2 景点信息表 spot 的结构属性 数据类型 说明id Int(11) 自动增加的主键name varchar(45) 景点名称8address varchar(45) 地址phone varchar(45) 咨询电话imageurl varchar(45) 图片路径Introduction TEXT 简介Lat DOUBLE 经度L
20、ng DOUBLE 纬度Fares FLOAT 门票价city varchar(45) 所在城市编号btime TIME 始开放时间ntime TIME 终开放时间Favourableinfo varchar(45) 优惠信息由于全国城市的分布是相对固定的,为了减少操作的麻烦,本软件直接将整个城市数据库 city.s3db 导入到 Android 项目的 res/raw 目录中,直接使用。其中包括省表 province,城市表 city。如表 4-3 和表 4-4 所示。表 4-3 省表 province 的结构属性 数据类型 说明_id integer 自动增加的主键code varchar
21、(6) 省编号name varchar(60) 省名表 4-2 城市表 city 的结构属性 数据类型 说明_id Integer 自动增加的主键code varchar(6) 城市编号name varchar(60) 城市名pcode varchar(6) 城市所在省编号从设计思路上考虑,储存在手机本地的景点信息收藏数据包括 JSON 文本和 JPG 格式的图片,将其直接写入 SD 卡目录以指定规则命名的目录,此方案可以简化对其的读写操作。4.3 程序模块设计从功能需求上分析,整个软件应划分为首页、个人资料、导航、周边查询,四个模块。首页负责景点信息的各类查询、城市的切换、定位,是整个软件的核心;个人资料模块负责管理用户的信息以及本地景点数据;导航负责对用户进行景