毕业论文-基于android平台的公交查询软件设计_第1页
毕业论文-基于android平台的公交查询软件设计_第2页
毕业论文-基于android平台的公交查询软件设计_第3页
毕业论文-基于android平台的公交查询软件设计_第4页
毕业论文-基于android平台的公交查询软件设计_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

学位论文基于ANDROID平台的公交查询作者姓名冀虹颖学科专业电子信息工程学号092022106指导教师索静讲师完成日期2012610太原工业学院TAIYUANINSTITUTEOFTECHNOLOGY基于ANDROID平台的公交查询摘要在我国,随着经济的快速发展,和城市化的快速发展,城市公交系统也随之迅速扩大,且更加复杂化,公交车已成为城市居民出行的主要交通工具。当公交线路较少时,乘客很容易找到一条可选路线,但由于随着城市扩建城市公交线路四通八达,选择一条经济的乘车路线就不是一件容易的事,找不到合适的乘车路线的事情经常发生,更别说是在不知道公交车站牌的情况下选择合适的路线。当前,复杂的公交系统使得用户往往处于迷惑的状态,给出行带来诸多不便,而手基于ANDROID的移动公交查询系统的选题也正是基于该背景。以ANDROID作为平台,能为客户随时随地提供公交信息的查询,用最短的时间到达想要的目的地。尤其目前太原的交通系统只能通过网上查询才能选择合适的班车,这是出行者也感到许多不便。为了解决这一问题,本论文专门设计了与地图相结合的公交查询,不仅能解决自家在外迷路的问题,还可以让出行者随时随地根据自己所在位置选择最近的公交站,并直接可以在地图上读取想要的公交车信息,选择最适合自己的出行路线。关键词ANDROID,地图,公交查询BUSQUERYBASEDONTHEANDROIDPLATFORMABSTRACTINOURCOUNTRY,WITHTHERAPIDDEVELOPMENTOFECONOMY,ANDTHERAPIDDEVELOPMENTOFURBANIZATION,URBANPUBLICTRANSPORTSYSTEMHASBEENEXPANDEDRAPIDLY,ANDMORECOMPLICATED,THEBUSHASBECOMETHEMAINTRANSPORTATIONOFCITYRESIDENTSWHENBUSLINESISSMALL,THEPASSENGERISEASYTOFINDANALTERNATIVEROUTE,BUTDUETOTHECONVENIENTWITHURBANEXPANSIONOFTHECITYBUSLINES,CHOOSEABUSLINEOFECONOMY,ITISNOTANEASYTHING,THEROUTETOFINDTHINGSHAPPENOFTEN,LETALONEINTHECASEOFDONTKNOWWHATISTHEBUSSTOPTOCHOOSETHEAPPROPRIATEROUTECURRENTLY,COMPLEXBUSSYSTEMALLOWSTHEUSEROFTENISINASTATEOFCONFUSION,BRINGINCONVENIENCE,TOTRAVELANDHANDMOBILEBUSQUERYSYSTEMBASEDONANDROIDSTOPICISALSOBASEDONTHISBACKGROUNDWITHANDROIDASAPLATFORM,CANPROVIDECUSTOMERSANYTIME,ANYWHEREWITHTHEBUSINFORMATIONQUERY,WANTTOTHEDESTINATIONINTHESHORTESTTIMEESPECIALLYATPRESENT,TAIYUANTRAFFICSYSTEMCANONLYCHOOSETHERIGHTBUSBYONLINEQUERY,THISISTRAVELERALSOFEELALOTOFINCONVENIENCEINORDERTOSOLVETHISPROBLEM,THISPAPERDESIGNEDTHECOMBINEDWITHAMAPOFBUSQUERY,CANNOTONLYSOLVETHEPROBLEMOFTHEIRLOSTOUTSIDE,STILLCANLETPEOPLEANYTIME,ANYWHEREBASEDONTHEIRLOCATIONCHOICETHENEARESTBUSSTATION,ANDDIRECTLYCANBEREADONTHEMAPTOBUSINFORMATION,SELECTTHEMOSTSUITABLEFORTHEIROWNTRAVELROUTESKEYWORDSANDROID,MAP,BUSQUERY目录诚信申明I基于ANDROID平台的公交查询V摘要VABSTRACTVI目录VII1绪论111问题的提出112研究的背景与意义113主要实现的功能214论文的整体结构22开发平台和开发语言简介321ANDROID操作系统的介绍3211ANDROID简介3212ANDROID的特点3213ANDROID架构422开发工具和开发语言的介绍5221开发工具ECLIPSE简介5221开发语言简介53开发中的关键技术631关于界面布局的几种方式632ANDROID的定位接口(LOCATION)633ANDROID的地图接口(MAP)734数据库SQL835ANDROID中GPS接口和类简介836GOOGLEMAP介绍114公交查询的系统设计1241公交查询线路设计1242公交查询站点设计1343交查询数据库设计1444公交特色查询设计155公交查询的系统实现1651我的位置功能实现1652公交查询功能实现17521公交查询线路功能实现17522公交查询站点功能实现17523公交查询数据库实现1753地图浏览功能实现186公交查询系统的测试运行1961进入软件的主界面1962入公交查询的主界面1963公交车站查询22631公交车站站查询22632周围公交车站的查询2364特色查询247总结及展望2571总结2572不足及展望26参考文献271绪论11问题的提出城市污染日益严重,汽车尾气排放严重影响了人们的生活质量,低碳环保已经成为城市的口号。公交作为最提倡的环保交通工具,更应成为人们的出行首选。国外许多国家都十分重视公交查询的研究和应用。其目的在于通过提供及时准确的信息和服务,吸引更多的出行者使用公共交通,促进公交的大力发展,减缓城市的交通压力。尤其是美国,他们的研究取得了较好的效果。他们发展公交查询系统的特点是能够提供快捷、方便的电话咨询服务;与定位技术相结合,提供实时信息服务。我国的公交查询系统也在迅速地发展,不少城市也都有拥有公交线路查询系统,网络上也可以下载到许多不同的版本。不过公交查询系统在发展的同时也存在一些问题,需要不断地改进和完善。比如有一部分公交查询系统,它们只是简单地将各个线路和站点的信息一一罗列出来,让用户自己去一条条查找。用户使用起来很不方便。还有一部分网上的公交查询系统,它们的系统功能比较完善,实现站点、线路查询以及换乘查询,更加完善一点的系统还有电子地图查询等功能,但是对于公交的相关信息却不是很完整。没有把公交到站时间与查询功能很好的结合起来。现行的公交车系统或多或少都还是存在一些缺陷的。但是随着技术的更新以及不断的改进,相信可以做出更人性化、更完善的公交查询工具。12研究的背景与意义随着现在社会的发展,我们的生活也朝着电子化不断发展,如交通电子眼在交通管理中越来越普及;而经济的不断发展,避免不了人们都要到某些城市去公干或其他的事情。一旦你对这个城市不熟悉,你的出门就会举步维艰。打的,对于一些因公出差的人来说算不了什么,但是对于个人来说就不是很好的选择。因此,开发一个城市的公交车查询系统就显得十分必要,可以说是关系到一个城市的形象问题。因此公交查询将帮助出行人士方便、高效的安排自己的行程。此外随着空间信息技术、移动通信技术、INTERNET技术以及移动终端技术的快速发展,人们对所处位置以及与位置相关的信息需求愿望实现成为可能。应运而生的移动公交查询系统是上述技术的有机集成,它将INTERNET上的海量信息和地理信息系统的强大应用服务功能扩展到移动终端上,为移动用户基于位置的信息交换、信息获取、信息共享和信息发布提供了便捷、经济的技术途径。ANDROID是一个真正意义上的开放性移动设备综合平台,基于ANDROID进行移动公交查询系统开发,可以很容易地利用GOOGLEMAPS地图资源以及开放的API接口,可以说,基于ANDROID的移动公交查询系统,是移动终端MGIS开发道路上的一个里程碑。13主要实现的功能本课题设计的主要任务是将地图与公交查询结合在一起,设计出一款能随时查询公交车站及其信息的手机软件。帮助解决由于复杂的公交系统给用户带来的困惑与不便的问题,帮助出行人士方便、高效的安排自己的行程。用户不仅能解决在外迷路的问题,还可以让出行者随时随地根据自己所在位置选择最近的公交站,并直接可以在地图上读取想要的公交车信息,选择最适合自己的出行路线。14论文的整体结构本文基于ANDROID平台,选择ANDROIDSDK和JAVAECLIPSE等幵发工具,设计开发了公交查询模块,主要是以太原地区为主。本模块根据太原市公交集团提供的公共交通出行信息,采用XML语言设计系统框架,程序代码基于JAVA语言编写,从而实现了与地图相结合的公交线路、站点、换乘等详细信息的查询功能,为人们提供出行的便捷服务经过分析与研究,木文分为以下几个部分第1章,主要介绍课题的研究背景、目的及意义,以及本文的主要工作和论文的组织结构。第2章,介绍模块开发的相关技术的简介,分别介绍了ANDROID操作系统及开发工具的简介,包括ANDROID的特点,ANDROID系统框架等相关内容。第3章,介绍了在开发软件过程中主要采用的关键技术。第4章,阐述课题的总体设计,主要包括系统的主要功能、系统模块的划分和每个模块要实现的具体功能。同时,对数据库的设计、数据库中表单的关系及系统流程进行了详细的描述。第5章,主要介绍了课题的具体实现逻辑结构与程序编写。部分详细代码在附录中。第6章,主要介绍了程序运行的测试结果第7章,总结本文的主要工作并指出未来进一步工作的方向。2开发平台和开发语言简介21ANDROID操作系统的介绍211ANDROID简介ANDROID是GOOGLE在2007年11月宣布的基于LINUX平台的开源手机操作系统的名称,而在ANDROID系统底层方面,ANDROID使用C/C作为开发语言4。该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的解决方案。ANDROID系统就是一个开发式的手机和平台电脑操作系统5,早期由GOOGLE开发,后由开放手机联盟开发6。它提供了从底层操作系统到上层的程序界面的所有软件,使用这个平台无需缴纳任何的授权许可费用,同时不同的厂商还可以根据自身的需求修改和扩展ANDROID平台。212ANDROID的特点ANDROID开发平台是由谷歌与开放手机联盟合作开发的一个开放、自由的移动终端平台,它由操作系统、中间件、应用软件三部分组成。该平台备有完善的程序开发环境,包括模拟器、除错工具、程序执行所耗用存储器、性能评介等功能。ANDROID为开发人员提供了大量的使用库和工具,使得开发人员可以快速地创建自己的应用程序。平台提供了两个基于位置服务的地图API开发包ANDROIDLOCATION以及COMGOOGLEANDROIDMAPS通过对这两个地图API开发包内与位置服务相关的类的使用,配合设备本身的具备的定位定向等相关模块,可以很好地实现对用户移动空间信息服务应用程序开发。例如ANDROID将著名的GOOGLEMAP集成进来,开发人员通过简单的几行代码就可以快速的开发出基于地图的应用。在ANDROID平台下,除了应用程序运行的载体虚拟机之外,所有的ANDROID应用程序之间是完全平等的。所有的应用程序都运行在虚拟机上面,虚拟机提供了一系列用于应用程序和硬件资源间通信的API。ANDROID打破了应用程序之间的界限,在ANDROID平台下开发应用程序,可以很方便的实现应用程序之间的数据共享。一个应用程序不但可以通过API访问系统提供的功能,还可以通过申明自身的功能供其他应用程序调用7。213ANDROID架构ANDROID是首个基于LINUX平台的开源手机操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的软件。ANDROID手机系统是基于LINUX平台的开源手机操作系统,分为4个层,下面是对于每一层的具体介绍第一层底层的LINUXKERNEL,采用的是LINUXKERNEL26版,也是目前最新的版本,主要的功能包括硬件的驱动、网络、电源、以及系统安全和内存管理等。第二层LIBRARY函数库,有大多数幵放源代码的函数库所组成,例如标准的C函数库LIBC、OPENSSL、SQLITE等,还包括WEBKIT函数库,负责ANDROID网页浏览器的运行,还包括有OPENGL图形库等。当然在这层还有很重要的ANDROIDRUNTIME,在此提供ANDROID特有的JAVA内核函数库与可转换JAVA运行码BYTECODE,为ANDROID专属的DALVIKEXECUTABLEDEX文件格式的DALVIK虚拟机,可以通过JAVA语言编写ANDROID应用程序。第三层则是APPLICATIONFRAMEWORK应用软件架构),它是所有ANDROID重点应用程序FRAMEWORKAPI的集合,方便开发者使用这些API进行设计架构。常见的API包括了显示功能(按钮、内嵌式浏览器),消息提示功能(访问信息、分享信息),提示信息(显示警告信息),位置管理等。第四层JAVA应用程序,例如GOOGLEMAPS,EMAIL,浏览器、等应用程序。图213ANDROID的架构22开发工具和开发语言的介绍221开发工具ECLIPSE简介ECLIPSE最初是IBM的一个软件产品,前期投入了4000万美金。2001年11月,IBM宣布将其捐给开放源码组织ECLIPSEORG。目前ECLIPSE的市场占有率已经超过了BORLAND公司的JBUILDER,成为JAVA开发平台中的主流。ECLIPSE的设计思想是一切皆为插件。它自身的核心是非常小的,其它所有的功能都以插件的形式附加到该核心上。ECLIPSE是一个开放源代码的、基于JAVA的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,ECLIPSE附带了一个标准的插件集,包括JAVA开发工具(JAVADEVELOPMENTTOOLS,JDT)。虽然大多数用户很乐于将ECLIPSE当作JAVAIDE来使用,但ECLIPSE的目标不仅限于此。ECLIPSE还包括插件开发环境(PLUGINDEVELOPMENTENVIRONMENT,PDE),这个组件主要针对希望扩展ECLIPSE的软件开发人员,因为ANDROID手机查询公交信息系统的设计与实现6它允许他们构建与ECLIPSE环境无缝集成的工具。由于ECLIPSE中的每样东西都是插件,对于给ECLIPSE提供插件,以及给用户提供一致和统一的集成开发环境而言所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于JAVA开发工具。ECLIPSE框架还可用来作为与软件开发无关的其他应用程序类型的基础。ANDROID开发平台提供了在ECLIPSE中的集成工具ADTANDROIDDEVELOPMENTTOOLS,在ECLIPSE中开发ANDROID应用程序需要嵌入ADT。本文选择ECLIPSE作为幵发工具,主要原因是EDIPSE将会是未来最流行的集成幵发工具之一。它所具有的漂亮的界面、免费且强大的功能、国际化、灵活的插件式体系结构、支持多种操作系统平台等特点,无一不是其魅力所在。221开发语言简介以JAVA为基础的,但是开发环境不一样。在编写的过程中不是单纯的JAVA语言,而是与ANDROID相结合。3开发中的关键技术31关于界面布局的几种方式ANDROID应用程序最重要的部分就是界面布局,在开发中要提前设计好界面,然后在资源文件中的布局文件中写好对应的布局文件,布局文件都是以XML格式保存的。在ANDROID系统中,共有五种布局方式,各具特点,它们分别是FRAMELAYOUT框架布局),LINEARLAYOUT线性布局),ABSOLUTELAYOUT绝对布局),RELATIVELAYOUT相对布局),TABLELAYOUT表格布局)。1FRAMELAYOUTO框架布局,这个布局方式是一种叠层方式的布局,新添加的布局会叠加在以前的布局之上,这样以前的布局就会被遮盖住,因此这样的布局方式只能用在一些简单的布局当中。2LINEARLAYOUT。线性布局,这个布局类似HTML中的DIV,它是将元素一个个的从上往下罗列在屏幕上。每一个线性布局又可分为两种分布方式,垂直布局VERTICAL和水平布局(HORIZONTAL。使用垂直布局时,每一行就只有一个对象(也可以嵌套一个其它的布局),多个元素依次垂直摆放;使用水平布局时,每一列就只有一个对象(也可以嵌套一个其它的布局),每一个元素依次从左向右排列。3ABSOLUTELAYOUT。绝对布局,就是指定了元素在屏幕上的绝地位置,用屏幕上的像素坐标坐标来指定元素的位置,这种布局方式使用起来简单,但是元素的具体位置被固定了,缺少灵活性,用的场合也不多。4RELATIVELAYOUTO相对布局,这个布局是这样的,当一个元素的位置确定了,另外的元素可以以这个元素为参照物来定位的布局方式,这种布局方式很灵活,在元素比较多的时候,用起来比较方便。5TABLELAYOUTO表格布局,可以理解为HTML里面的TABLE。每一个表格布局里面有表格元素,每一个表格元素里面可以具体定义每一个元素,可以设定对应的对齐方式。每一个布局都有自己适用的场合,重要一点,就是这五个布局可以相互嵌套应用,做出灵活多变的界面。32ANDROID的定位接口(LOCATION)ANDROID的定位接口(ANDROIDLOCATION)包含几个与位置服务相关的类,并且提供LOCATIONMANAGER服务,这个服务提供定位与定向API。LOCATIONMANAGER服务不会被直接用来获取用户位置信息,它会通过GETSYSTEMSERVICE(CONTEXTLOCATION_SERVICE)来获得一个指向它的HANDLE,实现对它的有效应用。一但应用程序拥有了一个指向LOCATIONMANAGER的HANDLE,那么它将会拥有以下三种功能(1)查询LOCATIONMANAGER所掌握的全部LOCATIONPROVIDERS的最终位置信息列表(2)注册或者注销当前位置从一个LOCATIONPROVIDER提供的实时位置更新(3)当移动终端在一个给定的位置半径范围以内话,激活一个给定的INTENT,从而实现用户所需的空间信息功能。需要说明的是,开发阶段不能使用NETWORK、GPS等获取的真正的实时位置数据。为此,平台提供了模拟数据开发的功能模块,开发者可以使用DDMS或者GEO命令行导入模拟数据到模拟器中。通过DDMS工具,可以设定一个经纬度来更新当前位置、使用GPX恩见来进行路径回放操作、使用KML文件来进行回放的多个独立地标标注等。使用GEO命令时,通过GEOFIX来设定一个地理位置,他可以设定一个包含经纬度,高程可选的地理位置。DDMS与GEO操作均可以把模拟位置数据送入模拟器,对应用程序开发者来说,是一个很好的位置信息服务开发辅助工具。33ANDROID的地图接口(MAP)ANDROID的地图接口(COMGOOGLEANDROIDMAPS)包含了一系列与地图开发功能相关的类,这些类提供了渲染、控制以及绘制覆盖层等功能,开发者可以很容易地进行基于GOOGLEMAPS地图服务的开发。这些类中,最重要的要数MAPVIEW这个类了,只需在你的布局中加入一个MAPVIEW,屏幕上就绘出一个基本的GOOGLEMAP。开发平台把一切与MAP相关的ACTIVITY功能抽象为MAPACTIVITY,在执行MAPVIEW的ACIVITY中继承MAPACTIVITY这个接口,屏幕就会现显示GOOGLEMAP的效果,在你执行MAPVIEW的ACTIVITY中需要继承MAPACTIVITY这个接口。GOOGLEMAP服务要求开发者获取一个使用MAPVIEW的APIKEY,以便在使用应用程序时能加载地图数据,这个APIKEY的获取过程也很简单。创建了一个MAPVIEW后,用户需要获得对它的控制,那么将会用到GETCONTROLLER来获取MAPCONTROLLER,以便进行控制或激活这个MAPVIEW,同时通过ITEMIZEDOVERLAY以及OVERLAY在MAP上绘制OVERLAYS以及其他信息。这不是ANDROID库内的一个标准包,因此,在使用它时,开发者需要在ANDROIMAINFESTFILE里加上下面一行作为的子元素。34数据库SQLANDROID数据库使用的是系统内嵌的SQLITE,下面简单的介绍ANDROID平台下的SQLITE数据库的特点。SQLITE是遵守的关系型数据库管理系统,它包含在一个相对小的C库中。不像常见的客户服务器范例,SQLITE引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。SQLITE是一个非常流行的嵌入式数据库,它支持SQL语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。SQLITE由以下几个组件组成SQL编译器、内核、后端以及附件。SQLITE通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展SQLITE的内核变得更加方便。ANDROID运行时环境包含了完整的SQLITE。ANDROID在运行时(RUNTIME)集成了SQLITE,所以每个ANDROID应用程序都可以使用SQLITE数据库。对于熟悉SQL的开发人员来时,在ANDROID开发中使用SQLITE相当简单。这样的环境更有利于开发人员对项目的开发。因此SQLITE的特点可简单概括为开源性源代码完全公开,可以任意修改,使用。零配置不需要任何配置和管理的过程。简单简单易用使用的API。跨平台在LINUX,WINDOWS等系统下均可以运行SQLITE。因此可以很方便的进行不同平台的移植。支持大容量文件支持TB级别的数据库存储和GB级别的字符串。速度快大多数操作比起C/S的数据库要快。单个数据库文件SQLITE的数据库文件就是一个一般的文件。以此可以存放在手机SD卡中,供ANDROID系统调用。35ANDROID中GPS接口和类简介GPS的定位是利用卫星基本三角定位原理,GPS接收装置以测量无线电信号的传输时间来量测距离,以距离来判定卫星在太空中的位置,这是一种高轨道与精密定位的观测方式。ANDROID中GPS接口和类简介首先,重要的GPSFRAMEWORK接口和类作一简要介绍。接口GPSSTATUSLISTENER,收到通知的GPS状态当发生变化时。GPSSTATUSNMEALISTENER全球定位系统接收NMEA数据。LOCATIONLISTENER,接收的位置信息的变化,LOCATIONMANAGER通知。类,地址地址信息类,用于动态PROVIDERGEOCODER,设备选择,根据地理编码信息处理的标准。使用GPSSATELLITE以获取当前的卫星状态,GPSSTATUS用于获取当前GPS状态,位置位置信息类,的LOCATIONMANAGER用于获取和操作的GPS系统服务,LOCATIONPROVIDER抽象类用于提供位置(LOCATIONPROVIDER的8。GPS编程接口1首先在ANDROIDMANIFESTXML中添加位置服务权限。USESPERMISSIONANDROIDNAME“ANDROIDPERMISSIONRNTERNET“/USESPERMISSIONANDROIDNAME“ANDROIDPERMISSIONACCESS_COARSE_LOCATION“/2接着获取位置信息VIEWPLAINCOPY获取位置服务LOCATIONMANAGEILOCATIONMANAGERGETSYSTEMSERVICECONTEXTLOCATIONSERVICECRITERIACRITERIANEWCRITERIA获得最好的定位效果CRITERIASETACCURACYCRITERIAACCURACY_FINE设置为最大精度CRITERIASETALTITUDEREQUIREDTRAE获取海拔信息CRITERIASETBEARINGREQUIREDTRUE获取方位信息CRITERIASETCOSTALLOWEDTRUE是否允许付费CRITERIASETPOWERREQUIREMENTCRITERIAPOWER_LOW使用省电模式下面的方法是获得当前的位置提供者STRINGPROVIDERLOCATIONMANAGERGETBESTPROVIDERCRITERIA,TRUE获得当前的位置的方法LOCATIONLOCATIONLOCATIONMANAGERGETLASTKNOWNLOCATIONPROVIDERGEOCODERGCNEWGEOCODERTHISLISTADDRESSESNULLTRY根据经缂度获得地址信息ADDRESSESGCGETFROMLOCATIONLOCATIONGETLATITUDE,LOCATIONGETLONGITUDEO,1CATCHLOEXCEPTIONEEPRINTSTACKTRACEO;IFADDRESSESSIZE0获取ADDRESS类的成员信息SRINGMSG“”;MSG”ADDRESSLINE”ADDRESSESGET0GETADDRESSLINE0“N“MSG“COUNTRYNAME”ADDRESSESGET0GETCOUNTRYNAME“N“MSG“LOCALITY”ADDRESSESGET0GETLOCALITY“N“MSG“FEATURENAME“ADDRESSESGET0GETFEATURENAME3设置侦听,当位置信息发生变化时,自动更新相关信息匿名类,继承自LOCATIONLISTENER接口PRIVATEFINALLOCATIONLISTENERLOCATIONLISTENERNEWLOCATIONLISTENERPUBLICVOIDONLOCATIONCHANGEDLOCATIONLOCATIONUPDATEWITHNEWLOCATIONLOCATION更新位置信息PUBLICVOIDONPROVIDERDISABLEDSTRINGPROVIDERIIPDATEWITHNEWLOCATIONNULL更新位置信息PUBLICVOIDONPROVIDERENABLEDSTRINGPROVIDERPUBLICVOIDONSTATUSCHANGEDSTRINGPROVIDER,INTSTATUS,BUNDLEEXTRAS;更新位置信息PRIVATEVOIDUPDATEWITHNEWLOCATIONLOCATIONLOCATIONIFLOCATIONNULL获取经讳度DOUBLELATLOCATIONGETLATITUDEQDOUBLEINGLOCATIONGETLONGITUDE添加侦听的方法LOCATIONMANAGERREQUESTLOCATIONUPDATESPROVIDER,2000,10,LOCATIONLISTENER;36GOOGLEMAP介绍GOOGLEMAP是谷歌最为成功的一款网络服务之一,广泛应用在旅游景点的查询以线路导航等场合14。ANDROID中定义了一个名为COMGOOGLEANDROIDMAP的包,其中包含了一系列用于在GOOGLEMAP上显示、控制和叠层信息的功能类,以下是对该包中重要的几个类的介绍(1)MAPACTIVITY这个类是用于显示GOOGLEMAP的ACTIVITY类,它需要连接底层网络。MAPACTIVITY是一个抽象类,任何想要显示MAPVIEW的ACTIVITY都需要派生自继承MAPACTIVITY,并且子其派生类的ONCREATE中,都要创建一个MAPVIEW实例。(2)MAPVIEWMAPVIEW是用于显示地图的VIEW组件。它派生自ANDROIDVIEWVIEWGROUP它必须和MAPACTIVITY配合使用,而且只能被MAPACTIVITY创建,这是因为MAPVIEW需要通过后台的线程来连接网络或者文件系统,而这些线程需要MAPACTIVITY来管理。(3)OVERLAY这是一个可显示于地图之上的可绘制的对象。(4)GEOPOINT这是一个包含经纬度位置的对象15。4公交查询的系统设计41公交查询线路设计线路查询主要是针对那些明确乘车前往的地点,但是不清楚应该乘坐哪一条路,更不清楚这条线路的详细信息的查询用户设计的,它的主要功能在于给乘客提供所查询线路的所有信息。它主要包括两种功能1、提供线路信息。用户输入查询线路名称,如果输入错误,系统给出提示。系统根据用户输入的线路名称,在系统数据库中查询,如果存在相应的线路,则显示该线路的详细信息,如果不存在该线路,则提示“线路不存在”。流程图如图41、输入线路线路是否为空在数据库中进行查询,返回结果结果是否为空提示线路不能为空提示没有相关线路显示查询结果查询结束是否否是图41公交查询流程图由于任何一条公交线路名都存在上下行或环形线的区别,因此每条线路上的信息通过行驶方向来分别说明。针对单方向上的线路信息,查询后的结果包括以下几个方面内容(1)线路的行进方向,如上行或是下行。(2)线路在该方向上运行时的起始站名和终点站名。(3)线路的发车信息,包括首发时间、收班时间。(4)经过站点的数量。(5)线路依次经过的站点列表。从线路上的起始站点开始,依次说明经过的站点名称,直至到达终点站。2、分享功能。考虑到用户可能会在看到查询结果后,对某条线路上的某个站点信息感兴趣,用户可以将其分享给好友。42公交查询站点设计站点查询的功能主要是提供经过该站点的所有线路信息。它主要有以下几个方面的功能1、提供经过站点的线路信息。用户输入查询站点,系统在数据库中查询是否在经过该站点的公交线路,如果不存在,则显示没有查询到该站点,如果存在一条或者多条公交线路,则显示这些公交线路,用户点击某一条公交线路,系统则显示该线路详细信息。流程图如图34所示。经过某个站点的公交线路一般都会有很多条,特别是那些地理位置在很多线路交叉口地方的站点。为了让查询用户了解每条线路的详细信息,站点查询的结果需要根据站点经过的线路名分别给出线路的具体信息,这些信息与上节中的线路信息完全相同。2、模糊查询。由于用户在查询时可能并不清楚站点的具体名称,因此还必须同时提供模糊查询的功能。当用户输入站点名称时,系统能给出和输入名称相似的所有站点,经过用户进一步确认查询的站点后,再具体给出经过站点的线路信息。前面几部分是对系统前台功能设计,以下部分是对后台功能进行设计。后台部分主要是对城市中所有公交线路进行管理。当城市公交系统增加或者开辟新的公交路线,或是淘汰某条线路,或者修改某条线路时,完成对线路信息的信息添加、删除和修改操作。同时也对APK应用程序进行管理。43交查询数据库设计将概念模型里的实体及属性转换成关系模型,于是知道了本系统需要三张表,分别是线路表LINES,站名表STATION,线路关系表LS,以下将详细介绍每张表的结构。(1)线路表LINES用于记录线路的基本信息。表31LINES表字段名数据类型是否主键是否为空字段含义L_NUMBERINT是否线路编号L_NAMEVARCHAR220否是线路名称(2)公交车站信息表STATION用于记录公交车站的基本信息。表32STATION表字段名数据类型是否主键是否为空字段含义S_NUMBERINT是否站编号S_NAMEVARCHAR50否是站名称S_JDVARCHAR220否是站经度S_WDVARCHAR220否是站纬度(3)线站关系表LS用于记录公交线路与站之间的关系。表33LS表字段名数据类型是否主键是否为空字段含义LS_IDINT是否编号L_NUMBERINT否是线路编号S_NUMBERINT否是站编号44公交特色查询设计增加快速搜索功能,在此功能中增加了其他的搜索项目,具体设计图如下。图44公交特色查询设计5公交查询的系统实现51我的位置功能实现ANDROID系统中,对于定位的实现有两种方式,一种是利用从手机基站物理分布获得地理位置的方法。系统中称之为NETWORK。另外一种是利用手机中GPS模块获取GPS信号进行定位。系统中称之为GPS。这两种方式各有优缺点1NETWORK方式速度快,但是精度低。由于这种方式是提供手机获取相关基站信息,然后经过第三方LSPLOCATIONSERVICEPROVIDER,再由基站传递给手机后,解析出地址位置。由于基站的跨度大,故其精度低。2GPS方式精度高,基本可以达到50米内。但必须在户外可以获取卫星信号的地方使用。因此考虑两种优缺点,基本上先用NETWORK定位大概位置之后,再利用GPS获取一个精确的信息。具体实现过程FINALSTATICSTRINGPROVIDERLOCATIONMMAGGTNETWORKPROVIDER;FINALSTATICSTRINGPROVIDERLOCATIONMANAGERGPSPROVIDER搜索公交、美食美食快餐公交站休闲风景购物在本系统中,首先调用了ANDROID提供的LOCATIONMANAGER服务,来获得当前的位置信息和卫星信息。通过一个线程HANDLER调用LOCATIONMANAGER,接受子线程发送的经讳度,并用数据配合主线程更新UI。实现方法HANDLERMHANDLERNEWHANDLERPUBLICVOIDHANDLEMESSAGEMESSAGEMSGIFMSGWHAT0STRINGSERVICESTRINGCONIQXILOCATION_SERVICELOCATIONMANAGERLOCATIONMANAGERGETSYSTEMSERVICESERVICESTRINGTOAST_AE7XMYMAPTHIS,”等待更新获取经纟韦度。“,TOASTLGTHSHORTSHOW由于在模拟器上运行程序,ECLIPSE提供一个DDMSDALVIKDEBUGMONITORSERVICE,它可以为我们提供端口转发,显示LOGCAT显示系统调试信息),虚拟地理位置,电话,短信等功能。输入一个坐标值之后,点击SEND后,用户点击我的位置即可出现手机用户当前所在位置的提示。52公交查询功能实现521公交查询线路功能实现线路查询主要实现的是查询该线路经过的所有站点,下图42是线路查询的流程图。当进入线路查询界面时,标识界面值CURRWHICHVIEWXLCX_VIEW;当按下查询按钮后,通过FZGJACTIVITY类中的ISLEGAL()方法用于判断当前输入的文本是否为空,如果为空,使用TOAST弹出提示框否则就执行LOADUTIL类中的LINESEARCH方法,即到数据库中查找该线路经过的站点,然后再判断返回的结果是否为空,为空则弹出提示框。否则将返回的结果通过GOTOPASSSTATIONVIEW()方法显示的界面上,该方法主要实现的是先为LISTVIEW创建适配器,然后每一行使用一个LINEARLAYOUT,再将需要显示的文本放入TEXTVIEW中,再将TEXTVIEW放到LINEARLAYOUT中,得到每一行列表要显示的内容。522公交查询站点功能实现站点查询主要实现的是查找与该站点相关的线路信息,当进入站点查询界面时,标识界面值CURRWHICHVIEWZMCX_VIEW;同线路查询一样,当按下查询按钮后,先通过FZGJACTIVITY类中的ISLEGAL()方法判断当前输入的文本是否为空,如果为空,就弹出提示框。然后再判断是否有该站点的相关信息,如果没有,就弹出提示没有相关的车站信息。若不为空,LOADUTIL类中的STATIONSEARCH()方法是查找出经过该站点的所有线路,然后通过GOTOLISTVIEW()方法将结果显示在界面上。GOTOLISTVIEW()方法和GOTOPASSSTATIONVIEW()其实差不多,GOTOLISTVIEW()方法就是多了为每行LINEARLAYOUT添加监听器,当用户单击列表的某一项时,从数据库中取出对应的数据,即调用LINESEARCH()方法查找出该线路的详细信息,再将结果显示到PASSSTATION界面上。523公交查询数据库实现(1)数据库表的创建CREATTABLE类主要通过SQL语句建立表和插入部分数据,将所有SQL语句放入一个数组中,在通过循环调用的方法执行SQL语句即可实现建表和初始化数据功能。(2)数据库的相关操作LOADUTIL类是一个只提供功能的类,主要对数据库进行操作。其中连接数据库的方法是CREATEOROPENDATABASE,而查询数据库的方法是QUERY()方法,先连接数据库,然后将查询结果以CURSOR对象返回,再调用其MOVETONEXT方法进行遍历,最后返回查询结果向量。该类还提供了许多静态方法供其他对象调用。53地图浏览功能实现百度地图与GOOGLE地图在定位、缩放上API几乎没有区别但在搜索、路线、覆盖物图层方面区别巨大,百度地图开发的API较多,可以方便的搜索某个位置、某类地点、绘制公交路线、驾驶路线等等,而GOOGLEMAP暂时貌似没有开放。因此在设计中采用的是BAIDUAPI进行的。下面是引入地图及并对地图进行相应的操作的具体步骤1申请BAIDUAPI密钥2、新建项目新建ANDROID项目,注意BUILDTARGET选择GOOGLEAPIS而不是ANDROIDAPI。GOOGLEAPIS包含了ANDROID相应版本,同时加入了GOOGLE自己的一些服务,目前只有GOOGLEMAP。3、编写代码(1)LAYOUT中添加MAPVIEW修改对应的后台ACTIVITY继承自MAPACTIVITY而不是ACTIVITY,否则会提示MAPVIEW只允许在MAPACTIVITY之类中使用。(2)ANDROIDMANIFESTXML文件添加权限A在节点APPLICATION内添加表示引入MAPS库,否则会提示找不到MAPVIEW类B在节点MANIFEST内添加表示允许访问网络,否则MAPVIEW会显示空白如下6公交查询系统的测试运行61进入软件的主界面运行软件后直接进入主界面,主界面显示当前所在位置的地图。界面右上角可以选择图层设置。主界面中有主菜单,可以选择公交查询或其他设置。如图611和612。图611进入主界面图612主界面的各能62入公交查询的主界面点击公交查询后进入查询界面,在界面的文字框内输入起始点和终点,击搜索即可显示出公交路线。如图图621输入查询路线图622查询结果选择一条适合的路线后点击,即可出现详细的出行路线。如图623图623详细公交路线也可以点击地图图标,就能进入电子地图界面,地图上会显示具体的路线,用户可以根据地图上的路线到达相应的地方。如图624所示图624电子地图显示路线63公交车站查询631公交车站站查询在输入框内输入要查询的车次,如输入太原市36路,点击搜索,则会出现36路途中经过的所有车站站牌名称,用户可以根据自己的需求选择是否乘坐该车次出行。如图6311、6312及6313。图6311公交车次查询图6312公交车途经车站图6311公交车站站查询电子地图632周围公交车站的查询点击周边搜索,选择公交选项,则会出现用户当前周围附近的车站,也可以点击查看地图,用户可以再电子地图上看到周围车站的分布位置,并且点击车站的图标,屏幕下方会显示当前所点击的车站名称。图6321搜索周边图6322周边附近车站图6323周边车站在电子地图上的分布64特色查询点击主菜单中的快速搜索会进入特色查询中,里面有美食、酒店、风景等其他娱乐查询,用户可以根据自己的需求自主选择。这样也丰富了这款软件的内容,增加了实用性。但是其中有的功能还没有实现,需要以后继续完善。图641特色查询图642景点查询7总结及展望71总结公交查询系统能够帮助乘客快速地查询出行的线路和站点信息,选择出行路径、换乘路线等,附近车站查找。既提升了出行者的效率,又优化了公交资源的配置,提高了交通运输的效率和城市的信息服务化水平。现对本文研究内容进行总结(1)研究乘客出行的心理和行为,包括乘客获取公交信息的方式、途径,关注的要素,出行的考虑因素等,从用户角度分析得到系统需求。(2)依据系统需求分析和城市的公交线路特点,分析系统的开发环境和体系结构,提供设计系统的功能需求,根据系统功能划分子模块,介绍了每部分需要完成的功能。(3)依据系统的需求和开发现状,提出了系统功能设计和数据库的设计。(4)依据系统功能设计,对系统的实现进行了描述。(5)对系统功能测试进行了描述。(6)对本系统的不足和展望进行进行了描述。从开发的角度来看,本文设计的是一款面向智能手机查询公交信息的小型专用检索查询系统,它是智能手机在信息查询领域的一次应用。本系统的开发目的是为用户提供便捷、高效、方便的公交信息查询工具,为用户提供查询速度更快、质量更高的公交信息查询服务。本文设计的特色之处在于(1)将公交查询与电子地图结合在一起,这样可以将公交的一些信息展示在地图上,用户可以很清晰地了解自己所在地方及选择什么样的路线更适合自己。(2)本系统提供一些特色查询,和一般的公交查询相比内容更丰富。(3)用户对该程序的下载、安装和使用非常方便,可以随时随地查询公交信息,比较方便用户日常的出行,也方便用户在外地旅游和出差时对公交信息的实时查询。(4)具有庞大的用户群体和较广阔的应用前景,在以后的应用过程中将不断的进行补充和完善。历经几个月的毕业设计,我的收获还是很大的。从资料查找到课题的设计分析、数据库的设计、界面的设计、然后进行代码编写、程序调试等,整个开发过程都是一边摸索一边实践出来的。我深有体会的是要完成一个完善的系统是相当不容易,要考虑周全也是相当困难的。在这一步一步地学习摸索的过程中,我感到开心的就是能够将所学到的知识应用到设计中,使自己的设计能更加完善些。由于能力的限制,最终的系统还是没有那么令人满意,还是存在一些不足之处。希望在日后有机会对其继续改进。比如实现导航功能,换乘查询的算法能够更加完善等。总之,这次的毕业设计不仅让我学到了知识,还提高了我独立处理问题的能力,这对我将来的工作也有很大的帮助72不足及展望到目前为止,本系统已基本完成了所需功能要求的设计、开发,然而系统还有许多不足之处,仍存在一些需要提高、改进的地方(1)界面设置的还不够简洁,用户使用的便捷性还有待提高。(2)换乘的算法比较简单,没有进行最短路径的优化。(3)可以增加导航的功能,让用户可以直从附近搜索到的车站直接导航找到所要去车站的路线,这样可以更加方便用户的使用。(4)没有公交车进站的时间。站牌上只有公交车的运营时间,并没有到站时间。希望以后可以通过对公交车进行定位,经过一系列的算法可以计算出公交的到站时间。这样用户可以根据自己的需求查询将要到站的公交的到站时间,这样就可以省去很多等公交车的时间,也不会出现错过最近到站的公交车的机会。至此,本文已经完成了对基于ANDROID智能手机开发的城市公交信息查询系统,完成了从需求分析、设计、开

温馨提示

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

最新文档

评论

0/150

提交评论