基于android的智能导航系统的设计与实现Word格式.docx
- 文档编号:22910074
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:35
- 大小:716.75KB
基于android的智能导航系统的设计与实现Word格式.docx
《基于android的智能导航系统的设计与实现Word格式.docx》由会员分享,可在线阅读,更多相关《基于android的智能导航系统的设计与实现Word格式.docx(35页珍藏版)》请在冰豆网上搜索。
本课题结合现代景区的相关特性和用户需求,使用JAVA语言,应用XX地图、XX定位(GPS+基站)、JSON数据交换和无线通讯等技术,开发一个基于Android的C/S式智能导航软件系统。
这软件使得用户可以利用无线网络以及手机的便捷性无时无刻地享受到景点信息查询、自身位置查询、周边查询、导航等功能所带来的畅快旅游体验。
1.3课题目的及其意义
本课题的主要目的是将Javaweb后台服务端、XX地图、定位导航技术与景区导游相结合,从而实现景区导游系统的真正智能化。
智能导游系统可以储存大量的景区景点信息,不仅可以广泛传播,而且科学环保、方便快捷。
此外,系统还提供了自定位、导航的实用功能,让用户可以彻底抛弃纸质地图,减少路痴的认路障碍。
这不仅能直接为游客带来更畅快的旅游体验,同时还完善了景区的旅游管理体制。
2系统开发环境及相关技术
2.1Android开发介绍与环境搭建
Android是Google公司开发的基于Linux内核的开源操作系统。
它包括:
操作系统、用户界面和应用程序,而且不存在任何以往阻碍移动产业创新的专有权障碍[2]。
Android系统提供了四大基本组件,包括:
Activity、Contentprovide、Service、Intentreceiver,每个组件都是一个视图(view)。
但上述四大组件对于一个Android应用程序来说,却并不是必须的,可能只需要其中的几种酒可以满足设计需求。
Manifext.xml配置文件时Android应用程序不可或缺的一个XML配置文件,其中定义了程序所用到的组件、组件功能以及一些必要条件和权限。
Android的上层应用程序一般是由java语言开发,所以首先应该有由SUN公司提供的JavaSDK(其中包括JRE:
JavaRuntimeEnvironment)以及Java主流集成开发环境EclipseIDE。
此外,还需要Android开发专用Google提供的AndroidSDK和安装在Eclipse的插件AndroidADT,为Android开发提供开发工具的升级或者变更,是Eclipse下开发工具的升级下载的工具[3]。
Android开发平台搭建步骤[4]:
(1)首先到http:
//www.eclipse.org/downloads/下载Eclipse集成开发环境并且解压,这里推荐下载JavaEE集成版本,可以为平台的搭建省下不少工作。
接着再去站点下载SDK后安装,下载SDK1.5后解压。
(2)双击Eclipse解压后目录中的eclipse.exe然后启动,选择Eclipse菜单中的Help->
InstallNewSoftware->
选项卡上的AvailableSoftware,点击右侧的“Add”输入http:
//dl-with”下拉菜单中选择刚才输入的网址。
过一会就会出现一个DeveloperTools选项,勾上以后点击Next以后Eclipse会自动网上查找Android开发工具插件,然后找到AndroidDDMS和AndroidDevelopmentTools,选中这两个点击Finish,Eclipse就会自动下载并安装Android插件了,最后会提示重启Eclipse。
(3)重启后选择Eclipse菜单中的Windows->
Preferences在左侧的Android项目中SDKLocation中填入AndroidSDK解压后的目录,然后点击Apply。
(4)在Windows7的系统变量中的path变量中添加一个值,该值指向解压后的AndroidSDK目录下的tools文件夹。
2.2JSON简介
JSON(javaScriptObjectNotation)是一种轻量级的数据交换格式,它基于javascript却采用了完全独立于语言的文本格式。
JSON基于“名称/值”对的集合和值的有效序列表这两种格式,用JSON表示一组值时不但可以减少复杂性也能提高可读性,是网络编程中数据交换的常用格式。
2.3Struts2框架简介与环境搭建
Struts是采用JavaServlet/JavaServerPages技术,开发Web应用程序的开放源码的Framework。
采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。
而Struts2是在原有Struts和Webwork的技术基础上进行合并的全新的框架,其体系结构而原有Strcts差异巨大。
Structs2是以Webwork为核心,采用拦截器机制来处理用户请求,这样的设计也使得业务逻辑能够与ServletAPI完全分离,使应用结构更为合理。
Struts2框架的开发需要使用Myeclipse集成开发环境。
由于Myeclipse是Eclipse的一个插件,所以在这忽略Eclipse的安装。
Myeclipse的安装:
首先应该到name=Downloads&
req=viewsdownload&
sid=15下载文件MyEclipse_5.5.1GA_E3.2.2_FullStackInstaller.exe并安装。
安装完毕后将其安装目录下的feature和plugin两个目录覆盖到Eclipse的安装目录下,最后卸载刚才安装的Myeclipse[5]。
Tomcat应用服务器的安装:
首先,到安装文件,在安装时选择路径把路径选到JDK的安装路径下的jre。
最后配置环境变量:
在“我的电脑”上点右键—>
“属性”—>
“高级”—>
“环境变量(N)”。
新建系统变量CATALINA_HOME:
C:
\ProgramFiles\ApacheSoftwareFoundation\Tomcat5.5(我的tomcat安装目录,你写你自己的)在系统变CLASSPATH的值的后面加入:
%CATALINA_HOME%\common\lib;
在系统变量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、commons–fileupload-1.2.1.jarcomm.ons-io-1.3.2.jar、freemarker-2.3.16.jar、ognl-3.0.jar、javassist-3.7.ga.jar;
配置Structs在当前web项目中,在web.xml中配置Struts2所需的核心过滤器。
2.4BaiduMapsAPI简介
XX地图API是为开发者免费提供的一套基于XX地图服务的应用接口,包括JavaScriptAPI、Web服务API、AndroidSDK、iOSSDK、定位SDK、车联网API、LBS云等多种开发工具与服务,提供基本地图展现、搜索、定位、逆/地理编码、路线规划、LBS云存储与检索等功能,适用于PC端、移动端、服务器等多种设备,多操作系统下的地图应用开发[7]。
3系统分析
3.1研究目标
(1)学习熟悉Android应用程序的框架、开发过程;
(2)学习熟悉Struts2框架、开发过程;
(3)基于Android的智能导游软件主要实现Android系统访问服务端,利用基于JAVA的网络编程(ApacheHttpClient项目)与Webservice调用,针对手机所在的地理位置,实时查询相关景点的基本信息与天气信息,并智能导航;
(3)学习熟悉基于Android的地图GIS开发。
3.2需求分析
本软件是一个基于Android的智能导游系统,故使用者应该为成分构成比较广泛的游客,所以UI必须简洁大方,有显浅易懂。
而要实现智能导游,首先就必须要求软件起码如人工导游般,能够为用户提供景点的基本信息讲解、位置描述、导航等服务考虑到景区信息与用户信息等的数据量可能十分巨大,本系统应该使用本地/服务器模式以节省用户的移动设备储存空间以及数据流量。
综上所述,本系统应该完成以下功能:
(1)采用C/S模式,基于Struts2框架服务端储存用户信息以及显示地图所必须的静态信息,供Android客户端的查询浏览与下载;
(2)用户信息管理,包括:
登录与注册、本地景点信息的管理;
(3)以城市为基本的景点信息查询与模糊查询,包括:
名称、地址、图片、经纬度、票价及其优惠活动等,并提供景点信息的本地缓存、下载;
(4)用户自定位,景点位置的地图显示与导航;
(5)周边餐饮、卫生间、住宿、医院、加油站等信息的查询。
3.3性能分析
本项目的目标是提升游客的旅游体验,所以对程序的性能要求较高,程序应该具有以下的良好性能:
(1)响应速度快。
(2)安全性高
(3)信息处理速度快
4系统设计
4.1用户界面设计
根据设计,本软件系统有以下几个界面:
登录界面、景点查询综合界面、景点信息显示界面、景点信息本地收藏界面、周边查询界面、景点导航界面。
景点查询综合界面是软件的首页,其主体是XX地图。
它能根据当前城市(自选或定位默认)或模糊查询用XX地图显示出景点的分布情况。
景点信息显示界面为用户显示当前景点的详细情况,包括:
名称、地址、电话、门票、优惠、简介、图片等资料,并能根据用户意愿选择下载当前景点信息。
景点信息本地收藏界面,其主体是一个ListView。
它能够显示出用户的本地景点信息,并实现管理(删除)。
周边查询界面,其主体是一个XX地图。
用户可以通过它来查询到周边诸如餐饮、酒店、加油站等信息。
景点导航界面,其主体是一个XX地图。
它可以为用户进行实时导航服务。
根据对用户界面显示内容的分析,绘制出用户界面的草图,如图4-1、4-2所示。
图4-1用户界面草图
图4-2用户界面草图
4.2数据库设计
本软件中有一下数据需要存储:
用户信息、景点信息、景点信息收藏、全国城市名称。
考虑到用户信息与景点信息的庞大数据量,本系统将其存储在服务器端的MySQL数据库,需要时再请求;
城市名称数据量较少,为减少用户数据流量,将其存储在手机的SQLite数据库中;
而景点信息收藏则存放于SD卡的文件中,综上所述,本系统数据库设计如下:
在服务端的MySQL数据库中建立新数据库maps_traverse,并建立新表,包括用户信息表gpsuser和景点信息表spot。
如表4-1和表4-2所示。
表4-1用户信息表gpsuser的结构
属性
数据类型
说明
id
Int(11)
自动增加的主键
username
varchar(50)
用户名
password
密码
电子邮箱地址
registertime
注册时间
powerlimits
权限
state
用户登录状态
表4-2景点信息表spot的结构
name
varchar(45)
景点名称
address
地址
phone
咨询电话
imageurl
图片路径
Introduction
TEXT
简介
Lat
DOUBLE
经度
Lng
纬度
Fares
FLOAT
门票价
city
所在城市编号
btime
TIME
始开放时间
ntime
终开放时间
Favourableinfo
优惠信息
由于全国城市的分布是相对固定的,为了减少操作的麻烦,本软件直接将整个城市数据库city.s3db导入到Android项目的res/raw目录中,直接使用。
其中包括省表province,城市表city。
如表4-3和表4-4所示。
表4-3省表province的结构
_id
integer
code
varchar(6)
省编号
varchar(60)
省名
表4-2城市表city的结构
Integer
城市编号
城市名
pcode
城市所在省编号
从设计思路上考虑,储存在手机本地的景点信息收藏数据包括JSON文本和JPG格式的图片,将其直接写入SD卡目录以指定规则命名的目录,此方案可以简化对其的读写操作。
4.3程序模块设计
从功能需求上分析,整个软件应划分为首页、个人资料、导航、周边查询,四个模块。
首页负责景点信息的各类查询、城市的切换、定位,是整个软件的核心;
个人资料模块负责管理用户的信息以及本地景点数据;
导航负责对用户进行景点、指定位置的目的地导航;
周边查询负责为用户提供周边信息的查询。
系统模块功能图如图4-2。
图4-2系统模块功能图
5系统功能模块设计
5.1文件结构与用途
在程序开发阶段,首先确定“基于Android的智能导游系统”的工程名为guidemap。
工程源代码的结构如图5-1所示。
为了使源代码文件的结构更加清晰,guidemap工程设置了多个命名空间,分别用来保存用户界面、数据库、后台服务和工具实体的源代码文件,源代码文件的名称以及说明如表5-1所示。
图5-1guidemap工程的源代码文件
表5-1guidemap工程的文件用途说明
包名称
文件名
说明
com.guidemap.adapter
MyAdapter.java
资源适配器
mon
Constants.java
公共工具类
com.guidemap.control
ImageLoader.java
远程图片加载类
MapApplication.java
Application
MyOverLay.java
景点覆盖层类
OverItemT.java
定位覆盖层类
Urler.java
url公共类
com.guidemap.db
DAO.java
城市信息数据库操作
DBManager.java
SQLite管理类
com.guidemap.entity
MyListItem.java
地图Item实体类
Position.java
景点位置实体类
Spot.java
景点信息实体类
User.java
用户信息实体类
com.guidemap.service
GetLocationService.java
后台定位service类
com.guidemap.view
CityActivity.java
城市切换选择
GuideActivity.java
导航
MainActivity.java
主框架
MapsActivity.java
首页
SearchActivity.java
周边查询
SpotActivity.java
景点信息查询
Android的资源文件保存在/res的子目录中。
/res/drawable/目录中保存的是图像文件,/res/values目录中保存的是用来自定义字符串和选项列表的文件;
/res/layout目录中保存的是布局XML文件;
/res/raw保存的是城市信息数据库文件;
而/res/anim保存的是动画效果文件。
所有在程序开发阶段可以被调用的资源都保存在这些目录中AndroidManifest.xml文件主要是Activity、Service类的注册和相关权限的许可设置。
5.2后台定位服务
GetLocationService.java类的后台定位服务是整个软件的基础,它绑定在软件的Application,从软件运行开始,贯穿整个软件生命周期的始末。
其主要功能是不断为系统提供实时的所在经纬度以及所在城市,并存放到公共类Constants的City变量。
考虑到本应用的用户对象主要为国内用户,在地图方案上采用了由XX公司开发的免费地图BaiduMapsAPI。
而定位方案采用了BaiduLocationAPI,通过调用此API来实时获取当前位置坐标将其存入Binder类中,而当前城市信息的获取通过XX地图SDK中MKSearch来获取。
此模块的实现流程图如图5-2所示。
其核心代码如下。
MapApplicationapp=(MapApplication)this.getApplication();
if(app.bMap==null)
{
app.bMap=newBMapManager(getApplication());
app.bMap.init(app.MAP_KEY,newMapApplication.MyGeneralListener());
}
图5-2后台定位服务模块功能流程图
app.bMap.start();
finalMKSearchmMKSearch=newMKSearch();
mMKSearch.init(app.bMap,newGeoCoderParser());
Log.d("
servicemap"
"
started"
);
mLocationListener=newLocationListener(){
@Override
publicvoidonLocationChanged(Locationlocation)
//Log.d(TAG,"
locationchange"
if(location!
=null)
StringstrLog=String.format("
经度:
%f\r\n"
+"
纬度:
%f"
location.getLongitude(),location.getLatitude());
pt=newGeoPoint((int)(location.getLatitude()*1E6),(int)(location.getLongitude()*1E6));
mMKSearch.reverseGeocode(pt);
app.setPt(pt);
else
{
Log.v("
Service"
getLocationerror!
}
}};
MKSearch的查询结果在GeoCoderParse.onGetResult方法中给出。
publicvoidonGetAddrResult(MKAddrInfoarg0,intarg1)
if(arg1!
=0)
Stringstr=String.format("
%d"
arg1);
Log.d(TAG,str);
return;
MKGeocoderAddressComponentaddress=arg0.addressComponents;
Constants.CITY=address.city;
Log.d(TAG,"
Locationinfo:
+address.province+address.city+address.district+address.street+address.streetNumber);
5.3MapApplication.java类
该类是整个软件的基石,它绑定了后台定位服务,初始化了XX地图SDK,诸如:
BMapManager、MKSearch、MKSearchListener等公共类,避免了各Activity之间的冲突与提高了系统的流畅性,它还定义了软件的公共变量。
综上,系统可以通过它来控制着整个软件的行为。
首先,应该在androidmanifest.xml文件中声明。
<
application
android:
icon="
@drawable/i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 android 智能 导航系统 设计 实现