毕业论文:基于Android平台的旅游服务软件设计与实现.doc_第1页
毕业论文:基于Android平台的旅游服务软件设计与实现.doc_第2页
毕业论文:基于Android平台的旅游服务软件设计与实现.doc_第3页
毕业论文:基于Android平台的旅游服务软件设计与实现.doc_第4页
毕业论文:基于Android平台的旅游服务软件设计与实现.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Android平台的旅游服务软件设计与实现 数学与计算机科学系 计算机科学与技术专业 【摘要】在快节奏的现代生活中,旅游成为人们休闲娱乐、放松自己的好方式。本文提出并实现了一款基于android平台的旅游服务软件,本软件以eclipse为开发平台,使用java语言,调用百度地图应用程序接口,并且在android虚拟机上运行。用户通过该应用能得到移动设备上人性化和智能化的旅游地图服务。该软件界面简洁,运行流畅,主要功能包括地图浏览、地址搜索、路线规划、景点浏览、定位报警等,是人们出行娱乐的好帮手。使得人们出行更加方便、更有效率。 【关键词】 Android;eclipse;虚拟机;百度地图 目录1、绪论21.1.软件开发的目的21.2软件开发意义22、开发环境的搭建23、软件需求分析33.1 软件可行性分析33.2 技术可行性分析33.3 软件所要实现的功能描述34、软件设计44.1总体设计44.2功能模块设计44.3软件总体流程图75、软件实现75.1软件框架简介75.2软件主菜单界面及帮助界面的实现85.3地图浏览界面的实现105.4地址搜索界面的实现115.5路线规划界面的实现125.6景点推荐界面的实现135.7定位报警界面的实现146、软件测试166.1欢迎界面测试:166.2主界面、帮助界面测试:176.3地图浏览界面测试:176.4地址搜索界面测试:186.5路线规划界面测试:196.6景点推荐界面测试:206.7定位报警界面测试:217、总结与心得21 参考文献 .21 1、绪论1.1.软件开发的目的 当今社会科技发展,智能手机成为人们随身携带的不可缺少的科技产品。它不仅可以用来通话,人们可以用手机上网、娱乐、聊天,电脑能够实现的大部分功能手机也能实现,你不能随身携带一个开机的电脑出行,手机却可以办到。基于android系统的手机,通过硬件底层集成的GPS模块,传感器模块,能够获得用户实时的位置信息,以及其他信息,将电子地图和GPS技术有效的结合在一起。开发出基于位置信息的旅游地图服务系统,其应用发展空间十分广阔。1.2软件开发意义 在以前人们出行的时候,首先要先规划好路线,到达一个陌生的地方要开始询问路人或者警察来获得位置的信息,十分的繁琐。在当今快节奏生活中,出行旅游成为人们休闲娱乐和精神享受重要方式之一,这无疑为人们造成了很多的不便,浪费了极大的时间且不可避免存在人为误差。因此,开发一款简洁实用的手机地图软件,其能在海量的信息中精确得到人们关心的位置信息,提高人们的出行效率具有很大的实用意义。2、开发环境的搭建 本次设计所使用的软件是eclipse,从网上就可以下载最新版本的Eclipse安装程序。本次设计所使用的版本是3.8.所使用的开发平台是Android4.22,根据安卓官网的提示下载SDK,下载地址Http:/。本次设计所使用的是4.22版,接着安装ADT,启动eclipse依次点击Help/Install New SoftWare,再单击Add按钮,在Location栏中输入ADT的下载地址,按提示完成安装,最后再创建虚拟设备并运行模拟器。 项目中需要使用百度地图的功能,因此要先申请百度地图的Api Key,申请地址/apiconsole/key,先注册一个百度账号,点击创建密钥,系统将为我们自动生成密钥,还需对密钥进行配置,点击设置,Key type 选择“for mobile”,安全码是Android签名证书的证书指纹 (SHA1)值 + “;” + 应用程序包名,配置好了API key 不能随意更换应用程序的包名, 如果更换了包名需要重新配置API key。 接着需要在工程中引用百度地图API开发包,下载地址/map/sdkandev-download.htm,下载Android SDKv2.1.3 lib库就行了。至此,本软件的开发环境搭建完成,可以开始本次课题的开发。3、软件需求分析3.1 软件可行性分析 本软件是为了使得人们出行旅游效率更高、更方便而开发的。目前市面上有很多基于android手机的地图服务软件,大多数软件只提供地址搜索和定位等简单功能,也有功能全面复杂的,但操作界面不友好。本软件简洁易懂、操作容易,基于android系统。现在android系统在各类手机上都得到额应用,从运行环境市场来讲也为本软件提供了更广阔的发展前景。3.2 技术可行性分析 本软件是基于android平台,用java语言开发的,在之前都已经学习过。所使用的开发环境软件eclipse也在日常学习中接触过,并且能在一定程度上熟练使用。本次所做的软件是为了向人们提供出行更加方便的服务,网络市场上有多种类的手机地图服务,这为软件的功能实现提供了很好的借鉴和指导。所以从技术上也是可行的。3.3 软件所要实现的功能描述 本次毕业设计所要开发的软件是手机地图服务软件1。对于软件所要实现的功能有:启动软件,进入欢迎界面,由欢迎界面进入主菜单界面,主菜单界面由一组操作按钮组成:地图浏览,地址搜索,路线规划,景点推荐,定位报警。 (1)地图浏览功能够通过缩放和移动等操作浏览电子地图的任意地址。 (2)地址搜素功能能够根据输入所在城市和地址名在电子地图中精确定位地点。 (3)路线规划功能能够根据自定义起始点和目的地来为你的出行规划路线。 (4)景点推荐通过文字和照片墙为用户推荐值得一游的景点。 (5)定位报警通过为相关地点划定半径,输入要提示信息。使得用户经过该 地点半径范围内时,软件通过文字和音乐进行事物提醒2。 4、软件设计4.1 总体设计 由前面对本次要开发的软件所做的分析,可以将软件分为界面设计,软件功能两部分组成。软件总体模块可以由图41清楚看到。 4.2功能模块设计 界面设计:包括主界面和功能模块界面。简单明了的界面更容易让用户在第一时间了解整个软件,好的界面设计不仅可以增添软件的视觉效果,更能吸引新用户对软件的兴趣。界面运行流程应如图42所示。 菜单界面主要是列出软件的所有功能,使得用户一目了然,通过单击选择所要使用的功能,六个功能界面由菜单界面进入完成相应的操作后退出到菜单界面结束。软件功能:包括地图浏览,地址搜索,路线规划,景点推荐,定位报警五个功能。这个模块主要就是对这五个功能的具体实现,完成整个软件,让这个软件具有可操作性和实用性。 地图浏览功能用来显示地图信息,包括一个悬浮的控件,用户能够通过缩放和平移来操作地图,查看任意位置的地图信息。使得用户对电子地图有初步的了解。这部分内容比较简单,地图浏览模块流程图4-3如下。 图4-3 地图浏览模块流程图 地址搜索界面的主要功能是提供地址搜索服务,通过输入所在城市的具体地点如超市,学校,商店来定位出地点所有相关的位置。在电子地图上标注出来,通过,点击标注会显示地点名称。地址搜索模块流程图4-4如下。 图4-4地址搜索模块流程图 路线规划模块根据起始点和目的地提供公交站之间信息和要乘坐公交线路的查询,步行线路和自驾游线路提供用户最佳的路径(算法由地图供应商提供)。路线规划模块流程图如下。 图4-5路线规划模块流程图 景点推荐通过照片墙和文字的介绍的方式向用户推荐景点、介绍景点的特色,用户可以参考推荐的景点在地址搜索界面上搜索地址,路线规划界面查询路线。景点推荐模块流程图如下。 图4-5景点推荐模块流程图 定位报警功能能够实现为指定的位置设定半径范围,当用户从当前位置移动到指定位置的半径范围内时,软件会以音乐和文字的形式提醒用户将要离开或者走进该范围。定位报警模块流程图如下。 图4-6定位报警模块流程图4.3软件总体流程图 根据总体设计和功能模块的分析,初步画出如图4-7所示的流程图。 图4-7软件流程图5.软件实现5.1 软件框架简介 文件总体结构如图5-1所示: 图 51 文件结构文件用途【3】如表格5-2所示: 文件名 用途MainActivity.java扩展activity得到,软件的入口,指定加载应用时候运行该java文件。主界面。MapShow.java地图浏览界面,可以对地图进行操作。PoiSearchDemo.java地址搜索界面,向用户提供地址搜索服务。RoutePlan.java路径规划界面,提供公交、步行、驾车路线规划。SceneryIntroduce.java景点推荐界面,通过文字和照片墙介绍景点。GeoCoderDemo.java定位报警界面,提供用户越境消息警告。HelpInfo.java帮助界面,静态向用户介绍软件,实现退出软件。BMapUtil.java对地图上的图片标注图片进行处理。ConvertUtil.java与地图服务供应商服务器进行交互。DemoApplication.java常用事件监听,用来处理通常的网络错误 表5-2文件用途5.2软件主菜单界面及帮助界面的实现 欢迎界面主要由一个文本框(TextView)和网格视图(GridView)组成,文本框用来显示软件的名称“带你玩”。网格视图在界面上按行、列分布的方式来显示多个组件,用以来展示主菜单界面的各个功能模块的按钮。创建网格视图,添加组件。其代码实现如下图5-3 图5-4: grid01=(GridView)findViewById(R.id.gridView1);ArrayListHashMap listItems = new ArrayListHashMap();HashMap map0= new HashMap();map0.put(Image,R.drawable.dituliulan);map0.put(Text,地图浏览);HashMap map1= new HashMap();map1.put(Image,R.drawable.dizhiss);map1.put(Text,地址搜索);HashMap map2= new HashMap();map2.put(Image,R.drawable.luxiangh);map2.put(Text,路线规划);HashMap map3= new HashMap();map3.put(Image,R.drawable.jindiantj);map3.put(Text,景点推荐);HashMap map5= new HashMap();map5.put(Image,R.drawable.tianqiyb);map5.put(Text,越界通知);listItems.add(map0);listItems.add(map1);listItems.add(map2);listItems.add(map3);listItems.add(map5); SimpleAdapter adapter =new SimpleAdapter(this,listItems,R.layout.activity_grid_view,newStringImage,Text,new intR.id.ImageView1,R.id.TextView1 ); grid01.setAdapter(adapter); 图 5-3 网格视图XML文件代码实现 图 5-4 为网格视图添加组件代码实现 帮助界面的实现比较简单点击Menu按钮会在手机底部跳出退出按钮和帮助按钮。退出按钮实现退出软件,帮助按钮会实现跳转到帮助界面,该界面以静态文字的形式介绍整个软件。帮助界面代码实现如下图5-5: 图5-5 帮助界面代码实现5.3地图浏览界面的实现 地图浏览能够使得用户通过点击缩放按钮来放大、缩小电子地图。也可通过双击放大地图,平移等操作对电子地图进行浏览4。使得用户对电子地图有初步的了解,地图浏览界面通过自定义一个MapView组件来实现百度电子地图的显示。地图浏览界面代码实现如下图5-6、图5-7、图 5-8所示。 图5-6 自定义组件MapView代码实现 图 5-7 检测软件网络是否正常代码实现 获取地图控制器、设置地图是否响应点击事件、设置地图缩放级别、显示缩放控件、初始化地图后地图定位显示指定坐标处的地图。实现代码如下图5-8所示: 图 5-8代码实现5.4地址搜索界面的实现 地址搜素功能能够根据用户输入所要搜寻地址的具体城市和地址名在电子地图中精确定位地点5。地址搜索界面包括EditText组件、AutoCompleteTextView组件及两个Button组件。EditText组件用于输入搜索城市,AutoCompleteTextView组件能够实现当用户输入一定字符后,会显示一个下拉菜单供用户选择,当用户选择某个菜单项之后,组件会自动填写文本框。实现代码如下图5-9所示: 图 5-9代码实现 搜索按钮根据用户输入的地址实现在地图上的精确定位地点,其他数据按钮用于显示相关地址。提供更多的信息。poiSearchInCity(String city,String key)城市poi检索,异步函数,返回结果在MKSearchListener里的onGetPoiResult方法通知.实现代码如下图 5-10所示: 图 5-10代码实现5.5路线规划界面的实现 路线规划功能能够根据用户自定义的起始点和要到的目的地,来为用户的出行规划路线。界面采用线性布局和相对布局的布局方式,能够提供驾车、公交、步行等线路信息。MKPlanNode是路线结点信息类,drivingSearch(String startCity, MKPlanNode start, String endCity, MKPlanNode end) 驾乘路线搜索。transitSearch(String city, MKPlanNode start, MKPlanNode end) 公交路线搜索.walkingSearch(String startCity, MKPlanNode start, String endCity, MKPlanNode end) 步行路线搜索.实现代码如下图 5-11所示: 图 5-11代码实现 5.6景点推荐界面的实现 景点推荐通过照片墙和文字介绍的方式向用户推荐景点、介绍景点的特色,用户可以参考推荐的景点在地址搜索界面上搜索地址,路线规划界面查询路线。界面包括一个ImageView组件及一个TextView组件,ImageView组件用来显示照片墙,用户可以点击按钮前翻后翻图片墙的文字,如果不操作点击按钮,照片墙会实现自己轮转图片6。TextView组件用于显示每张图片的景点文字介绍。实现代码如下图 5-12、图5-13所示。/定义一个访问图片的数组int jdimage = new intR.drawable.lijiang,R.drawable.qiao,R.drawable.shuangta,R.drawable.shui,R.drawable.xiangbi,;int currentImg = 2;/定义默认显示的图片 private int alpha = 255;/定义图片的初始透明度 图 5-12代码实现 当新线程发送消息时,使用Handler处理消息7,通过Timer周期性地执行指定任务,TimerTask对象的本质是启动一条新线程,程序在新线程里发送一条消息,通知系统更新ImageView组件。final Handler myHandler= new Handler()public void handleMessage(Message msg)if(msg.what=0x1233)mainPicture.setImageResource(jdimagecurrentImg+);if (currentImg 4)currentImg = 0 ;if(currentImg =0)jskwb.setText(丽江); else if(currentImg =1)jskwb.setText(桥桥); else if(currentImg =2)jskwb.setText(双塔); else if(currentImg =3)jskwb.setText(水水); else if(currentImg =4)jskwb.setText(象鼻);new Timer().schedule(new TimerTask()Overridepublic void run() Message msg =new Message();msg.what=0x1233;myHandler.sendMessage(msg);, 0, 10000); 图 5-13代码实现5.7定位报警界面的实现 定位报警通过为相关地点划定半径,输入要提示信息。使得用户经过该地点半径范围内时,软件通过文字和音乐进行事物提醒。界面包括输入指定地址和提示内容的文本框及半径选择组件SeekBar。用户点击选择好半径及要所想要的提示内容后,点击确认按钮。选择半径长度8,在TextView组件中显示,实现代码如下图 5-14所示。sBradius.setOnSeekBarChangeListener(new OnSeekBarChangeListener()Overridepublic void onProgressChanged(SeekBar arg0, int jindu, boolean arg2) if(jindu0&jindu100&jindu=200)mile.setText(200m); 图 5-14代码实现 当用户进入所要定位提醒的位置的规定半径之内,软件会响起内置的音乐声,并且在界面上弹出一个Toast提醒用户注9意事项,该注意事项是用户之前在提醒输入框中输入的文字,或者当用户走出定位位置规定内半径范围时,对用户进行提醒,该功能可以用于防止队友走散,走出规定的地点。实现代码如下图 5-15所示。 MediaPlayer mediaplayer=MediaPlayer.create(GeoCoderDemo.this, R.raw.earth); if(myradiusdistance & In.isChecked()String message=messagetold.getText().toString();String strInfo = String.format(提示:%s ,message);Toast.makeText(GeoCoderDemo.this, strInfo, Toast.LENGTH_LONG).show(); mediaplayer.start(); 图 5-15代码实现 根据用户输入的地址名,转换成为地址的经纬度,再通过将经纬度转换成地图坐标显示在电子地图上10,再根据之前选择的半径范围对定位地址在电子地图上显示出规定半径的半透明圆,圆的设置实现代码如下图 5-16所示。 geo.setCircle(p, myradius); Symbol circleSymbol = new Symbol(); Symbol.Color circleColor = circleSymbol.new Color(); circleColor.red = 0; circleColor.green = 200; circleColor.blue = 0; circleColor.alpha = 80; circleSymbol.setSurface(circleColor, 1, 1); Graphic gra = new Graphic(geo,circleSymbol); glay.setData(gra); /清除地图其他图层mMapView.getOverlays().clear();/添加一个标注ItemizedOverlay图层mMapView.getOverlays().add(itemOverlay);/执行刷新使生效 mMapView.getOverlays().add(glay); mMapView.refresh(); 图 5-15代码实现 测量用户当前位置和提醒地点之间距离的函数,定位报警功能有两种设置,当用户和所定位的报警地址的距离小于等于设定的半径的时候,会触11发提醒代码,系统调用音乐和弹出文字提示用户,另一种是当用户与定位地址的距离大于等于设定半径的时候,系统发出提醒音乐和文字,距离函数实现代码如图 5-16所示。 图 5-16代码实现6、软件测试(1)欢迎界面测试: 如图:6-1、 6-2所示。 图6-1 欢迎界面 图 6-2 欢迎界面(2) 主界面、帮助界面测试: 如图:6-3、 6-4所示。 图 6-3 主菜单界面 图 6-4 帮助界面(2)(3)地图浏览界面测试: 如图:6-5、6-6所示。 图 6-5 地图浏览界面(1) 图 6-6 地图浏览界面(2) (4)地址搜索界面测试:如图:6-7、 6-8所示。 图 6-7 地址搜索界面(1) 图 6-8地址搜索界面(2) (5)路线规划界面测试:如图:6-9、 6-10所示。 图 6-9 路线规划界面(1) 图 6-10路线规划界面(2) (6) 景点推荐界面测试:如图:6-10、6-11所示。 图 6-10景点推荐界面(1) 图 6-11景点推荐界面(2) (7) 定位报警界面测试: 如图:6-12、6-13所示。 图 6-12 定位报警界面(1) 图 6-13定位报警界面(2)7、总结与心得 经过两个月的学习与努力,所选课题基于android手机平台的旅游应用软件基本完成了,大部分预期效果以及功能也基本实现,非常感谢郭永宁老师的指导,也特别感谢同学们不厌其烦的帮助,因为有大家我才能完成这个毕业设计。在这个软件开发的过程中让我感受颇深,当初选择做这个课题,是因为我热爱旅游,每每出行总是有很多的不便,需要考虑的事情十分的繁杂,市面上的手机地图服务应用功能十分的全面,但是操作起来不够简洁,于是萌发了想要做一款手机地图服务应用,我想只要认真的研究和不懈的努力总能完成相应的功能。但在研发过程中才能体会到它没那么容易,其中的问题不是一点点而是很多,而自己的基础知识也有一定的欠缺。虽然过程很不容易,但开发过程中在同学们的鼓励和帮助下,每一个困难的克服,都让我有难以言表的喜悦。通过这次软件的开发使得我更加熟悉android的许多编程知识,对于以前所学的知识也有相当程度的巩固,锻炼了动手能力。 本软件功能比较简单,要成为使用的一款软件,还有很长的路要走,还要不断的进行优化升级,解决一些BUG日臻完善,对于软件开发还是缺乏经验,要好好学习,在以后的开发中不断的提升自己。参考文献 1 夏飞阳.基于Android手机平台的自助旅游系统的设计与实现J.信息通信,2013,39-42 2 李刚.疯狂Android讲义M.北京:电子工业出版社,2011,573-575. 3 金泰延.Android框架揭秘M.北京:人民邮电出版社,2012,257-325. 4 刘正, 陈强. 基于 Android 的 GPS 应用中的研究与开发J. 中国西部科技, 2013,15-16. 5 闫伟.基于Android平台的手机地图服务系统的设计J.浙江师范大学,2012,28-31. 6 耿祥义,张跃平.JAVA大学实用教程(第3版)M.北京:电子工业出版社,2012,147-153. 7 叶剑栲.多线程技术在android手机开发中的应用J.信息通信,2012,28-31. 8 于志龙,郑名杰.AndroidSDK开发范例大全M.北京:清华大学出版社,2009,395-495. 9 李兴华.JAVA开发实战经典M.北京:清华大学出版社,2009,404-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论