毕业论文-基于android的手机公交查询系统开发设计_第1页
毕业论文-基于android的手机公交查询系统开发设计_第2页
毕业论文-基于android的手机公交查询系统开发设计_第3页
毕业论文-基于android的手机公交查询系统开发设计_第4页
毕业论文-基于android的手机公交查询系统开发设计_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

本科毕业设计题目基于ANDROID的手机公交查询系统开发设计作者杨岳峰专业计算机科学与技术网络工程指导教师何鹏完成日期2012年6月6日摘要随着无线移动通信的高速发展及各种移动业务种类的快速增长,一切互联网上的业务都在移动通信系统中得到应用。然而,由于用户需求的原因,或者终端支持与否的因素,并非所有手机都能正确显示同一信息内容。而且随着客户端设备的类型越来越多,人们对个性化服务的要求越来越高,个性化信息服务成为将来网络信息服务发展的一个重要的方向。移动终端是一种采用先进通信协议栈的复杂系统,它需要具有与许多网络设备互操作、支持先进而丰富的多媒体的应用程序。而且,所有这些都必需在一个资源有限的嵌入式系统的约束条件下实现。ANDROID技术提供了跨平台的能力,并支持多种器件设备。ANDROID技术为无线设备创建了一个全新的开发平台,可以让移动通信设备发挥出最大的潜能。ANDROID手机作为移动终端为今后移动通信发展提供了很好的解决方案。本文对ANDROID系统的特征,系统架构及应用程序构建、开发都做了比较详细的分析。同时结合BAIDUMAPS、GPS定位技术、对在ANDROID上定位和导航进行了深入的研究,并设计了基于ANDROID系统的公交路线查询应用。系统使用JAVA语言和ECLIPSE开发工具进行编写。同时给出了详细的系统设计过程、部分界面图及主要功能运行流程图,本文还对开发过程遇到的问题和解决方法进行了讨论。本系统的主要实现的功能有换乘查询,还有线路查询和站点查询功能,不仅能显出查询的结果,而且还能够根据用户选择的线路实现电子地图的显示,使系统更加直观。关键词ANDROID,公交路线查询,BAIDUMAPSABSTRACTWITHTHERAPIDDEVELOPMENTOFWIRELESSMOBILECOMMUNICATIONANDTHERAPIDGROWTHOFTHEMOBILEBUSINESSTYPES,ALLBUSINESSONTHEINTERNETINAMOBILECOMMUNICATIONSYSTEMHOWEVER,DUETOREASONSOFUSERNEEDS,ORWHETHERORNOTTHETERMINALSUPPORTSTHEFACTORS,NOTALLPHONESCANCORRECTLYDISPLAYTHESAMEINFORMATIONCONTENTANDMOREANDMOREWITHTHETYPEOFCLIENTDEVICE,MOREANDMOREPERSONALIZEDSERVICEREQUIREMENTS,PERSONALIZEDINFORMATIONSERVICEHASBECOMEIMPORTANTDIRECTIONOFTHEFUTUREDEVELOPMENTOFANETWORKINFORMATIONSERVICEMOBILETERMINALISACOMPLEXSYSTEMWITHADVANCEDCOMMUNICATIONPROTOCOLSTACK,ITNEEDSTOHAVEINTEROPERABILITYWITHMANYNETWORKDEVICES,ANDSUPPORTADVANCEDRICHMULTIMEDIAAPPLICATIONSMOREOVER,ALLOFWHICHMUSTBEIMPLEMENTEDINARESOURCELIMITEDEMBEDDEDSYSTEMUNDERRESTRICTEDCONDITIONSANDROIDTECHNOLOGYPROVIDESCROSSPLATFORMCAPABILITY,ANDSUPPORTSAVARIETYOFDEVICESDEVICESANDROIDTECHNOLOGYFORWIRELESSDEVICESTOCREATEANEWDEVELOPMENTPLATFORMTHATLETSMOBILECOMMUNICATIONSEQUIPMENTTOPLAYTHEGREATESTPOTENTIALANDROIDPHONEASAMOBILETERMINALPROVIDESAGOODSOLUTIONFORTHEFUTUREDEVELOPMENTOFMOBILECOMMUNICATIONINTHISPAPER,THEANDROIDSYSTEMCHARACTERISTICS,SYSTEMARCHITECTUREANDAPPLICATIONBUILD,DEVELOPERSHAVEDONEAMOREDETAILEDANALYSISCOMBINATIONBAIDUMAPS,GPSPOSITIONINGTECHNOLOGY,POSITIONINGANDNAVIGATIONANDROIDCONDUCTEDINDEPTHRESEARCHANDDESIGNOFBUSROUTESANDROIDBASEDQUERYAPPLICATIONTHESYSTEMUSESTHEJAVALANGUAGEANDECLIPSEDEVELOPMENTTOOLSTOWRITEATTHESAMETIMEGIVESADETAILEDSYSTEMDESIGNPROCESS,PARTOFTHEINTERFACEDIAGRAMANDOPERATIONFLOWCHARTOFTHEMAINFUNCTIONOFTHEDEVELOPMENTPROCESS,THEPAPERALSOENCOUNTEREDPROBLEMSANDSOLUTIONSAREDISCUSSEDTHESYSTEMFUNCTIONSOFTHEMAINTRANSFERQUERYLINEQUERYANDSITESEARCHFUNCTION,NOTONLYCANSHOWTHERESULTSOFTHEQUERY,BUTALSOTOTHEELECTRONICMAPDISPLAYBASEDONUSERSELECTEDLINE,TOMAKETHESYSTEMMOREINTUITIVEKEYWORDSANDROID,BUSROUTESQUERIES,THEBAIDUMAPS目录第1章绪论111课题的研究意义112移动终端的发展现状113公交查询现状214本次课题研究内容3第2章需求分析421服务器端需求分析421客户端需求分析5第3章技术背景介绍631GPS6311全球定位系统简介6312GPS系统的组7313GPS的功能8314应用前景932ANDROID平台9321ANDROID特征9322ANDROID架构10323ANDROID应用的构成和工作机制1233本章小结14第4章平台的搭建1641ANDROID开发环境的搭建16411JDK的安装16412ECLIPSE的安装17413ANDROIDSDK安装17414ADT安装19415创建AVD2042ECLIPSE简介20第5章程序设计2151系统体系结构2152BAIDUMAPSAPI申请及使用21521申请BAIDUMAPKEY21522获取坐标和地址22523地图自动定位23524百度地图地址解析服务GEOCODER23第6章系统设计与实现2561欢迎界面的实现2562主要功能的实现2663截图及运行说明164软件可以改进之处9第7章系统测试1071手动测试方案1072工具测试方案10721单元测试10722系统测试1173测试用例1174辅助测试工具11结论13参考文献14致谢16第1章绪论11课题的研究意义出行是人们日常生活中不可或缺的一部分,而公交车是大多数人出行首选的交通工具,如何才能随时随地、方便快捷的获取公交线路的信息,合理安排自己的出行线路,是很多人非常关心的问题。建设智能公交系统,利用当代高新技术电子、信息、通信、计算机、GPS、GIS等,将交通系统中的人、交通设施和交通工具有机的联系起来,建立智能公交系统,如公交优先系统、公交查询系统、智能化行车系统等,为乘客提供实时的更多更全面的出行信息,更好的为乘客服务。在智能公交系统中,公交查询系统的服务是目前最贴近乘客日常生活的,也是最能让乘客亲身体会公交服务水平高低的方面。因此,如何给乘客提供一个良好的平台,让乘客选择或是推荐合适的乘车方案出行,以节约乘车时间,缩短到达目的的乘坐距离,减少乘坐的票款成本,才是提高公交服务水平最值得关注的问题之一。越来越多的人倾向通过上网获得和共享信息,随着网络应用的普及而不断的发展,INTERNET的应用成了世人关注的焦点。公交路线查询系统既提供全面的公交信息,更具有实用性、便利性、多样性。因此我们提出开发并设计了一个基于ANDROID平台的公交路线查询系统。用户可以在任意一款ANDROID手机中安装此工具。通过此查询工具可以查看线路,查找任意两地的乘车方案等,更方便用户出行,节约时间,减缓交通压力。12移动终端的发展现状当今在全球信息与通信领域中,无线移动通信的发展之快最引人注目。在中国,仅蜂窝移动通信用户早已跨过3亿大关,而在全球15亿的移动用户已成事实。中国在全球范围内不仅用户数增长最快,而且移动用户与固定电话用户之比的增长率也是全球第一。按照无线移动终端的发展历程大致将其分为三类第一类是以语音通信为主的手机,也就是我们传统意义上的手机,目前主要面向低端市场,这类手机的硬件都是围绕一个单一的基带处理器搭建的,该处理器执行电信和其它简单的应用任务。第二类是增值业务手机,也叫多功能手机,这是目前需求量最大的手机。这些手机一般面向特定应用,一个功能强大的基带处理器芯片实现移动终端的主要功能,如果基带处理器不能满足诸如视频处理等功能,可以配套使用一个应用协处理器,它面向特定应用。第三类是智能手机,即高端手机,曾被定义为“拥有操作系统并支持第三方应用的手机”。这类手机中应用处理器成为系统的核心,而GSMGPPS等通信MODEM则成为实现连接功能的外设之一,此外还有其它通信外设,如WLAN、蓝牙、USB等,并且可能提供统一的扩展接口。智能手机通常要采用复杂的嵌入式操作系统为上层应用提供统一的应用接口。并且,智能手机多备有较大显示屏,具有计算和文字处理方面的功能。从移动业务的角度看,目前现有的业务种类已经是琳琅满目,一切互联网上的业务都在移动通信系统中得到应用,当然,由于现有网络质量和带宽的限制,它还远不能给用户以有线网络的体验,而且有些业务在目前条件下也只是概念上的炒作。然而,并非所有的业务都能顺利推出,其中有用户需求的原因,也有终端支持与否的因素,并非所有终端都能对统一网站的内容正确显示,并非所有手机都能正确显示同一信息内容而且随着客户端设备的类型越来越多,人们对个性化服务的要求越来越高,个性化信息服务成为将来网络信息服务发展的一个重要的方向。13公交查询现状国外许多国家都十分重视公交查询的研究和应用。其目的在于通过提供及时准确的信息和服务,吸引更多的出行者使用公共交通,促进公交的大力发展,减缓城市的交通压力。尤其是美国,他们的研究取得了较好的效果。他们发展公交查询系统的特点是能够提供快捷、方便的电话咨询服务;与定位技术相结合,提供实时信息服务;触摸屏在公共场所的广泛使用以及查询与网络的结合。欧洲一些国家,如芬兰、意大利等,他们在研究公交查询方面也取得了不小的成果。近年来,我国的公交查询系统也在迅速地发展,不少城市也都有拥有公交线路查询系统,网络上也可以下载到许多不同的版本。不过公交查询系统在发展的同时也存在一些问题,需要不断地改进和完善。比如早期的公交查询系统脱离了网络,只是一种供人下载后方可查询的程序,是一种单机程序。这样的信息不够准确,也不够及时。有一部分公交查询系统,它们只是简单地将各个线路和站点的信息一一罗列出来,让用户自己去一条条查找。而真正意义上的公交查询系统应该是用户输入想要查询的内容,系统能够自动查询出结果,而不是靠用户人工进行查询。还有一部分网上的公交查询系统,它们的系统功能比较完善,实现站点、线路查询以及换乘查询,更加完善一点的系统还有电子地图查询等功能,但是对城市有代表性的地点介绍和查询的功能,做得好的比较少。还有就是手机上的公交查询系统,可以采用短消息的形式进行查询,但也有一定的局限性。硬件方面,比如遇到服务器、网络繁忙时或者信号盲区,导致用户请求长时间得不到回应。软件方面,运营商不一定提供此类的查询服务。现行的公交车系统或多或少都还是存在一些缺陷的。但是随着技术的更新以及不断的改进,相信可以做出更人性化、更完善的公交查询工具。14本次课题研究内容本次毕业设计要研究的内容是学会界面的设计,进行数据库的设计并学会使用SQLITE数据库,学会在BAIDUMAP的基础上进行地图开发。论文第一部分介绍了目前公交路线查询的现状,第二部分为关键技术介绍,主要介绍本系统中所涉及到的主要关键技术,第三部分是关于系统总体结构设计,主要介绍系统的功能模块和数据库的设计与实现。第四和第五部分就是系统详细的设计与实现及测试结果等,然后对整个毕业设计进行了总结,最后部分为致谢。第2章需求分析手机公交线路查询软件最基本的功能是能够有效的为用户提供查询服务,在最短的时间内给用户一条或多条到达目标地的路径。整个查询过程中,只有数据信息是依靠服务器同步获取,其余功能均在手机端完成。在此分别对手机公交线路查询软件的服务器端和客户端做需求分析。21服务器端需求分析服务器作为后台,需要专业人员对服务器操作和维护,一般情况可由非专业人员借助管理软件对服务器进行常规维护。服务器可以通过数据库同步,为客户端数据库提供数据。通过仔细分析服务器需求之后,服务器端要完成以下功能1、服务器后台管理功能服务器后台管理是针对数据库进行操作,具有增、删、改、查功能。2、数据同步功能。采用REST协议,响应客户端请求,返回给客户端一端数据流,该数据流按照JSON格式,返回给客户端,由客户端进行解析。服务器端功能模块划分如图21所示。图21服务器端功能模块21客户端需求分析客户端主要是手机,用户无法通过手机对本地数据库进行操作,也无法对服务器数据库操作,管理员可以通过手机浏览器登录到服务器管理员页面对数据库进行操作,可以使用一些功能。该软件应满足若干要求,比如能够随时掌握公交信息,动态更新最新数据等。也要考虑作为手机软件可能会出现查询速度慢,数据流量过大,过度依赖服务器等问题。通过仔细分析用户需求之后,该软件要完成以下功能1、查询线路功能获得线路经过的每个站点信息以及线路的票价信息和发车时间信息。2、地图查询功能借助BAIDUMAP,完成公交查询并显示地图线路。3、数据更新功能服务器响应客户端请求返回一段数据流,客户端接收此数据流后,按照JSON格式规范对数据流进行解析,解析后将数据存入客户端数据库。第3章技术背景介绍31GPS311全球定位系统简介全球定位系统(英语GLOBALPOSITIONINGSYSTEM,通常简称GPS),又称全球卫星定位系统,是一个中距离圆型轨道卫星导航系统。它可以为地球表面绝大部分地区(98)提供准确的定位、测速和高精度的时间标准。系统由美国国防部研制和维护,可满足位于全球任何地方或近地空间的军事用户连续精确的确定三维位置、三维运动和时间的需要。该系统包括太空中的24颗GPS卫星;地面上的1个主控站、3个数据注入站和5个监测站及作为用户端的GPS接收机。最少只需其中3颗卫星,就能迅速确定用户端在地球上所处的位置及海拔高度;所能收联接到的卫星数越多,解码出来的位置就越精确。该系统由美国政府于1970年代开始进行研制并于1994年全面建成。使用者只需拥有GPS接收机即可使用该服务,无需另外付费。GPS信号分为民用的标准定位服务(SPS,STANDARDPOSITIONINGSERVICE)和军规的精确定位服务(PPS,PRECISEPOSITIONINGSERVICE)两类。由于SPS无须任何授权即可任意使用,原本美国因为担心敌对国家或组织会利用SPS对美国发动攻击,故在民用讯号中人为地加入选择性误差(即SA政策,SELECTIVEAVAILABILITY)以降低其精确度,使其最终定位精确度大概在100米左右;军规的精度在十米以下。2000年以后,克林顿政府决定取消对民用讯号的干扰。因此,现在民用GPS也可以达到十米左右的定位精度。GPS系统拥有如下多种优点使用低频讯号,纵使天候不佳仍能保持相当的讯号穿透性;全球覆盖(高达98);三维定速定时高精度;快速、省时、高效率;应用广泛、多功能;可移动定位;不同于双星定位系统,使用过程中接收机不需要发出任何信号增加了隐蔽性,提高了其军事应用效能。312GPS系统的组GPS系统主要由空间星座部分、地面监控部分和用户设备部分组成。空间星座部分GPS卫星星座由24颗卫星组成,其中21颗为工作卫星,3颗为备用卫星。24颗卫星均匀分布在6个轨道平面上,即每个轨道面上有4颗卫星。卫星轨道面相对于地球赤道面的轨道倾角为55,各轨道平面的升交点的赤经相差60,一个轨道平面上的卫星比西边相邻轨道平面上的相应卫星升交角距超前30。这种布局的目的是保证在全球任何地点、任何时刻至少可以观测到4颗卫星。GPS卫星是由洛克菲尔国际公司空间部研制的,卫星重774KG,使用寿命为7年。卫星采用蜂窝结构,主体呈柱形,直径为15M。卫星两侧装有两块双叶对日定向太阳能电池帆板BLOCKI,全长533M接受日光面积为72。对日定向系统控制两翼电池帆板旋转,使板面始终对准太阳,为卫星不断提供电力,并给三组15AH镍镉电池充电,以保证卫星在地球阴影部分能正常工作。在星体底部装有12个单元的多波束定向天线,能发射张角大约为30度的两个L波段(19CM和24CM波)的信号。在星体的两端面上装有全向遥测遥控天线,用于与地面监控网的通信。此外卫星还装有姿态控制系统和轨道控制系统,以便使卫星保持在适当的高度和角度,准确对准卫星的可见地面。由GPS系统的工作原理可知,星载时钟的精确度越高,其定位精度也越高。早期试验型卫星采用由霍普金斯大学研制的石英振荡器,相对频率稳定度为/秒。误差为14M。1974年以后,GPS卫星采用铷原子钟,相对频率稳定度达到/秒,误差8M。1977年,BOKCKII型采用了马斯频率和时间系统公司研制的铯原子钟后相对稳定频率达到/秒,误差则降为29M。1981年,休斯公司研制的相对稳定频率为/秒的氢原子钟使BLOCKIIR型卫星误差仅为1M。地面监控部分地面监控部分主要由1个主控站(MASTERCONTROLSTATION,简称MCS)、4个地面天线站(GROUNDANTENNA)和6个监测站(MONITORSTATION)组成。主控站位于美国科罗拉多州的谢里佛尔空军基地,是整个地面监控系统的管理中心和技术中心。另外还有一个位于马里兰州盖茨堡的备用主控站,在发生紧急情况时启用。注入站目前有4个,分别位于南太平洋马绍尔群岛的瓜加林环礁,大西洋上英国属地阿森松岛,英属印度洋领地的迪戈加西亚岛和位于美国本土科罗拉多州的科罗拉多斯普林斯。注入站的作用是把主控站计算得到的卫星星历、导航电文等信息注入到相应的卫星。注入站同时也是监测站,另外还有位于夏威夷和卡纳维拉尔角2处监测站,故监测站目前有6个。监测站的主要作用是采集GPS卫星数据和当地的环境数据,然后发送给主控站。用户设备部分用户设备主要是GPS接收机,主要作用是从GPS卫星收到信号并利用传来的信息计算用户的三维位置及时间。313GPS的功能精确定时广泛应用在天文台、通信系统基站、电视台中工程施工道路、桥梁、隧道的施工中大量采用GPS设备进行工程测量勘探测绘野外勘探及城区规划中都有用到导航武器导航精确制导导弹、巡航导弹车辆导航车辆调度、监控系统船舶导航远洋导航、港口/内河引水飞机导航航线导航、进场着陆控制星际导航卫星轨道定位个人导航个人旅游及野外探险定位车辆防盗系统手机,PDA,PPC等通信移动设备防盗,电子地图,定位系统儿童及特殊人群的防走失系统精准农业农机具导航、自动驾驶,土地高精度平整授时用于给电信基站、电视发射站等提供精确同步时钟源314应用前景随着中国国民经济的快速增长的西部大开发的实施,我省的高等级公路建设迎来前所末有的发展机遇,这就对勘测设计提出了更高的要求,随着公路设计行业软件技术和硬件设备的发展,公路设计已实现CAD化,有些软件本身还要求提供地面数字化测绘产品的支持;建立勘测、设计、施工、后期管理一体化的数据链,减少数据转抄、输入等中间环节,是公路勘测设计“内外业一体化”的要求,也是影响高等级公路设计技术发展的“瓶颈”所在。目前公路勘测中虽已采用电子全站仪等先进仪器设备,但常规测量方法受横向通视和作业条件的限制,作业强度大,且效率低,大大延长了设计周期。勘测技术的进步在于设备引进和技术改造,在目前的技术条件下引入GPS技术应当是首选。32ANDROID平台ANDROID是一个移动设备的软件平台,是由LINUXJAVA构成的开源软件,它提供包括SDK、KEYAPPS、MIDDLEWARE、LINUXKERNEL四个部分在内的全套手机软件方案。它开放了基于LINUX内核以上的开发工具,从而保证了内容的可移植性和多样性。ANDROID平台为我们开发应用程序提供了一套很好的框架,我们可以在这个平台的基础上开发不同的应用程序,也可以开发新的组件供应用程序调用1。321ANDROID特征DALVIK虚拟ANDROID采用的JAVA虚拟机是自主开发的代号为DALVIK的虚拟机技术,在保证API方面兼容的同时DALVIK针对移动手机进行了大幅优化,占用资源更小,运行效率更高。内嵌浏览器基于开源的浏览器网页排版引擎WEBKIT。优化的图形强大的自定义二维图形库。基于OPENGLES1O标准的3D图形功能,在移动3D开发中有着至关重要的地位。SQLITE数据库SQLITET提供结构化的数据存储。它是一款轻型免费的且开源的数据库,它的设计目标是嵌入式的,它占用的资源非常低、需要的内存空间少、处理速度比较快和支持事务处理功能等。多媒体支持支持各种通用的音视频和静态图像格式,如MP3、JPG、PNG等。OPENCORE是ANDROID多媒体框架的核心,所有ANDROID平台的音视频采集,播放的操作都是通过它来实现的。通过OPENCORE,程序员可以方便快速的开发出想要的多媒体应用程序。GSM技术依赖硬件GLOBALSYSTEMFORMOBILECOMMUNICATIONS,全球移动通讯系统,俗称“全球通”,是第二代移动通信技术,其开发EL的是让伞球各地可以共同使用一个移动电话网络标准,让用户使_一部手机就能行遍全球。蓝牙,EDGE,3G,ANDWIFI是一种短距离的无线连接技术,在短距离内可以实现话音和数据的无线传输。EDGEENHAILCEDDATARATEFORGSMEVOLUTION,是增强型数据速率GSM演进技术。CAMERA,GPS,COMPASS,ANDACCELEROMETER依赖硬件GPSGLOBALPOSITIONINGSYSTEMITTI驯全球定位系统。它是一个由覆盖全球的24颗1J星组成的卫星系统。COMPASS是个开放源代码的JAVA搜索引擎框架。强大的开发环境包括一个设备模拟器,调试工具,内存和性能检测,以及ECLIPSEIDE的开发插件。ECLIPSE是个集成开发环境2。322ANDROID架构ANDROID的架构是LINUX内核、C/C函数库、DALVIK虚拟机、应用框架以及关键应用程序构成的,如图21。通过编译基于框架的应用程序可以降低开发负荷。应用软件原则上是在DALVIKVM上运行的。图31ANDROID架构图ANDROID平台内包含一些关键应用程序,如邮件收发客户端程序、短信收发程序、日历和网页浏览器等,开发者可以在其平台上开发更多有特色的应用程序。开发语言是JAVA。ANDROID应用程序的开发基于框架和组件。ANDROID本身已在其框架中提高了许多的组件供应用程序调用,当然开发者也开放新的组件,并将组件放入应用程序框架中,以供自己和其它应用程序调用。ANDROID应用程序框架之下是一套C/C函数库,它们服务于ANDROID应用程序组件,其功能通过组件间接提供给开发者。这些函数库包括标准C函数库、媒体功能库、浏览器引擎、2D和3D图形库、基于WEB应用的的安全协议SSL、用于点阵和矢量字体渲染的FREETYPE以及SQLITE引擎等。ANDROID的JAVA程序运行环境包含一组JAVA核心函数库及DALVIK虚拟机,它们有效地优化了JAVA程序的运行过程。所有的ANDROID应用都运行在它自己的进程里,该进程是一个DALVIK虚拟机的实例,DALVIK被设计成能在一台设备上高效的运行多个虚拟机实例。DALVIK虚拟机的可执行文件被封装成DALVIK可执行格式DEX。这是被优化过的最小内存依赖的格式。JAVA编译器DX工具将注册了的和运行时用到的类编译成DEX格式。DALVIK虚拟机依赖于底层LINUX内核提供的功能,如线程机制,和内存管理机制等。ANDROID系统平台是基于优化了的LINUX内核,是其系统平台的核心。它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机软硬件的连接层,提供了一个屏蔽层用于屏蔽硬件和上层软件。323ANDROID应用的构成和工作机制对于一个ANDROID应用程序来说,是由ACTIVITY、INTENTRECEIVER、SERVICE、CONTENTPROVIDER四部分组成,但并不是每一个ANDROID应用程序都必须由这四部分组成。在应用程序中使用时,需要在配置文件ANDROIDMAINFESTXML中进行配置。这个配置文件是每个ANDROID应用程序所必需的,用于定义应用程序的组件、组件的功能以及必要条件等。ACTIVITY是构成应用程序中最重要的构造块,在ANDROID应用程序中,几乎都是通过ACTIVITY来与用户进行交互,所以ACTIVITY主要负责的就是创建与用户进行交互的显示窗口,你可以在这些窗口里通过调用SETCONTENTVIEWVIEW方法来显示你自己的用户界面。1活动生命周期活动ACTIVITY在系统中以活动栈的形式进行管理。当一个新的活动启动后,被放到了栈项,成为了运行活动,而新活动之前的活动在活动栈里总位于新活动之下,直到新的活动退出才重新回到前台。ACTIVITYSTARTSONCREATEONSTARTNEWACTIVITYISSTARTEDONRESUMEACTIVITYISRUNNINGONSTOPYOURACTIVITYISNOLONGVISIBLEONPAUSEONDESTROYACTIVITYISSHUTDOWNUSERNAVIGATESBACKTOYOURACTIVITYPROCESSISKILLEDOTHERAPPLICATIONNEEDMEMORYONRESTARTYOURACTIVITYCOMESTOTHEFOREGROUNDYOURACTIVITYCOMESTOTHEFOREGROUND图32ACTIVITY状态变换路径图从图22可以看出,ACTIVITY有三个关键的循环1活动的整个生命期从首次调用ONCREATEBUNDLE开始,到最终调用ONDESTROYO结束。在ONCREATE中进行所有初始化,在ONDESTROYO时进行清理工作,释放资源。2活动的可见生命期从调用ONSTART开始,到ONSTOP被调用为止。在这段时间内,即使活动不与用户进行交互,用户也可以在屏幕上看到它。在这两个方法调用之间,可以维护活动显示给用户的资源。ONSTART和ONSTOP方法可以多次调用,因为活动随时可以在可见和隐藏之间进行转换。3活动的后台生命期从调用ONRESUME开始,到ONPAUSE被调用为止。在这段时间内活动处于其它所有活动之前,并与用户进行交互。一个活动可以不断在RESUMED状态和PAUSED状态之间变换4。2活动之间的切换ANDROID使用了INTENT类来实现活动之间的切换工作。INTENT负责对应用中一次操作的动作、动作涉及的数据和附加数据进行描述。根据INTENT的描述,负责找到对应的组件,将INTENT传递给调用的组件并完成组件的调用。因此,INTENT起着一种媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。在应用中,我们可以以两种形式来使用INTENT直接INTENT,指定了COMPONENT属性的INTENT,通过指定具体的组件类,通知应用启动对应的组件。间接INTENT,没有指定COMONENT属性的INTENT,则需要包含足够的信息,这样系统才能根据这些信息,在所有的可用组件中,确定满足此INTENT的组件。INTENTRECEIVERT是用于对外部事件的响应,当外部事件发生时,会使用NOTIFICATIONMANAGER通知用户。当一个INTENTRECEIVER被触发时,系统会在需要的时候启动对应的应用程序。如在本系统中,当用户正在其它界面进行操作时,有好友发送消息过来,就会以通知的形式发送到当前界面的正上方来通知用户。各种应用还可以通过使用CONTEXTBROADCASTINTENT将它们的INTENTRECEIVER广播给其它的应用程序,实现应用之间的通讯。SERVICE是提供连续信息的应用程序。它是运行于应用程序后台的服务,在用户进行其它活动的时候,这个服务将一直运行在基于ANDROID平台的即时通讯系统的研究与实现后台直到用户停止该服务或服务运行结束。本系统客户端扩展功能的音乐播放就是采用SERVICE来进行设计和开发的,使用户可以边聊天边听音乐。CONTENTPROVIDER应用程序能够将它们的数据保存到文件、SQL数据库和其它的存储设备中。当应用程序需要使用存储设备中的数据时,可以使用CONTENTPROVIDER来完成。使用CONTENTPROVIDER能够灵活的替换底层使用的存储设备,使开发者可以专著于应用逻辑的开发,不用考虑底层存储设备的细节,从而使应用系统具有良好的数据。33本章小结本章对ANDROID平台的特征、架构以及ANDROID应用的构成和工作机制进行了详细的分析。对于ANDROID应用程序来说,主要由ACTIVITY、INTENTRECEIVER、SERVICE和CONTENTPROVIDER四部分组成,但并不是对于每一个应用程序,这四部分都是必须的。ACTIVITY是应用程序中最重要的一种构造块,我们对其进行了详细的分析,包括ACTIVITY的生命周期以及ACTIVITY之间的切换。第4章平台的搭建41ANDROID开发环境的搭建ANDROID平台为开发者提供了源码开放的软件开发包SDK,它包含了使用JAVA语言开发ANDROID平台应用的必要工具和组件API。进行开发前先要建立合适的开发环境,其中基于JAVA的整合型可扩展平台ECLIPSE是我们的首选。搭建环境所需要的软件操作系统WINDOWSXP或LINUX;软件包ANDROIDSDK,ADT;IDE环境ECLIPSEIDEADTECLIPSE33以上;JDKJAVARUNTIMEENVIRONMCNT,JDK;411JDK的安装下载JDK并且一路NEXT进行安装,这里主要讲解JDK的环境变量如何配置1我的电脑属性高级环境变量系统变量中添加以下环境变量2JAVA_HOME值为ADPROGRAMFILESJAVAJDK160_18(安装JDK的目录)3CLASSPATH值为AJAVA_HOMELIBTOOLSJARJAVA_HOMELIBDTJARJAVA_HOMEBIN4PATHA在开始追加JAVA_HOMEBIN安装完成之后,可以在检查JDK是否安装成功。打开CMD窗口,输入JAVAVERSION查看JDK的版本信息。出现类似如图31的画面表示安装成功了图31验证JDK安装是否成功412ECLIPSE的安装下载如图32所示的ECLIPSEIDEFORJAVADEVELOPERS(92M)的WIN32BIT版(选择自己适合的版本)解压之后即可使用。图32ECLIPSE下载413ANDROIDSDK安装在ANDROIDDEVELOPERS下载ANDROIDSDK_R05WINDOWSZIP,下载完成后解压到任意路径。运行SDKSETUPEXE,点击AVAILABLEPACKAGES。如果没有出现可安装的包,请点击SETTINGS,选中MISC中的“FORCEHTTPS/“这项,再点击AVAILABLEPACKAGES。选择希望安装的SDK及其文档或者其它包,点击INSTALLATIONSELECTED、ACCEPTALL、INSTALLACCEPTED,开始下载安装所选包在用户变量中新建PATH值为ANDROIDSDK中的TOOLS绝对路径(本机为DANDROIDDEVELOPANDROIDSDKWINDOWSTOOLS)。图33设置ANDROIDSDK的环境变量“确定”后,重新启动计算机。重启计算机以后,进入CMD命令窗口,检查SDK是不是安装成功。运行ANDROIDH如果有类似如图34的输出,表明安装成功图34验证ANDROIDSDK是否安装成功414ADT安装打开ECLIPSEIDE,进入菜单中的“HELP“INSTALLNEWSOFTWARE“点击ADD按钮,弹出对话框要求输入NAME和LOCATIONNAME自己随便取,LOCATION输入HTTP/DLSSLGOOGLECOM/ANDROID/ECLIPSE。如图35所示图35ADDSITE确定返回后,在WORKWITH后的下拉列表中选择我们刚才添加的ADT,我们会看到下面出有DEVELOPERTOOLS,展开它会有ANDROIDDDMS和ANDROIDDEVELOPMENTTOOL,勾选他们。如图36所示图36选择插件然后就是按提示一步一步NEXT。完成之后选择WINDOWPREFERENCES;在左边的面板选择ANDROID,然后在右侧点击BROWSE并选中SDK路径,本机为DANDROIDDEVELOPANDROIDSDKWINDOWS。点击APPLY、OK。配置完成。415创建AVD为使ANDROID应用程序可以在模拟器上运行,必须创建AVD。1、在ECLIPSE中。选择WINDOWSANDROIDSDKANDAVDMANAGER2、点击左侧面板的VIRTUALDEVICES,再右侧点击NEW3、填入NAME,选择TARGET的API,SDCARD大小任意,SKIN随便选,HARDWARE目前保持默认值4、点击CREATEAVD即可完成创建AVD42ECLIPSE简介ECLIPSE是一个开放源代码的、基于JAVA的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,ECLIPSE附带了一个标准的插件集,包括JAVA开发工具(JAVADEVELOPMENTKIT,JDK)。虽然大多数用户很乐于将ECLIPSE当作JAVA集成开发环境(IDE)来使用,但ECLIPSE的目标却不仅限于此。ECLIPSE还包括插件开发环境(PLUGINDEVELOPMENTENVIRONMENT,PDE),这个组件主要针对希望扩展ECLIPSE的软件开发人员,因为它允许他们构建与ECLIPSE环境无缝集成的工具。由于ECLIPSE中的每样东西都是插件,对于给ECLIPSE提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于JAVA开发工具。尽管ECLIPSE是使用JAVA语言开发的,但它的用途并不限于JAVA语言;例如,支持诸如C/C和COBOL等编程语言的插件已经可用,或预计将会推出。ECLIPSE框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于ECLIPSE的应用程序的一个突出例子是IBMRATIONALSOFTWAREARCHITECT,它构成了IBMJAVA开发工具系列的基础。第5章程序设计51系统体系结构图51系统体系结构52BAIDUMAPSAPI申请及使用521申请BAIDUMAPKEY百度地图ANDROIDSDK是一套基于ANDROID15及以上版本设备的地图开发工具。可以使用该套SDK开发适用于ANDROID系统移动设备的地图应用,通过接口,可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图应用程序。该套SDK提供的服务是免费的,接口无使用次数限制。但需先申请密钥(KEY,才可使用该套SDK。申请地址为HTTP/DEVELOPERBAIDUCOM/MAP/ANDROIDMOBILEAPPLYKEYHTM然后随便输入软件名称,即可得到对应的KEY522获取坐标和地址自200版本开始,获取定位坐标的方法请参考定位SDK中的说明,如下获取定位坐标的方法只针对135及以前的版本有效。使用MKLOCATIONMANAGER类的REQUESTLOCATIONUPDATES注册位置监听事件,在重写的回调函数ONLOCATIONCHANGED中,可获得定位的坐标(详见BMAPAPIDEMOMAIN例程的MYLOCATIONJAVA),通过调用MKSEARCH类的REVERSEGEOCODE接口,得到地址。OVERRIDEPUBLICVOIDONLOCATIONCHANGEDLOCATIONLOCATIONIFLOCATIONNULLPTSETLATITUDEE6INTLOCATIONGETLATITUDE1E6PTSETLONGTITUDEE6INTLOCATIONGETLONGTITUDE1E6MSEARCHREVERSEGEOCODEPTPUBLICVOIDONGETADDRRESULTMKADDRINFORES,INTERRORIFERROR0STRINGSTRSTRINGFORMAT“错误号D“,ERRORRETURNSTRINGSTRINFOSTRINGFORMAT“纬度F经度F地址SRN“,RESGEOPTGETLATITUDEE6/1E6,RESGEOPTGETLONGTITUDEE6/1E6,RESADDRESSCOMPONENTSCITYRESADDRESSCOMPONENTSDISTRICTRESADDRESSCOMPONENTSSTREET523地图自动定位此部分是针对135及以前版本的说明,自200版本以后,定位功能已从ANDROIDSDK中分离。首先在程序中打开相关的权限,然后将MYLOCATIONOVERLAY实例添加到MAPVIEW中,并调用ENABLEMYLOCATION方法,即可实现当前位置的显示,如果想让地图跟随当前位置移动,需要继承MYLOCATIONOVERLAY并实现其ONLOCATIONCHANGED方法,调用MAPVIEWGETCONTROLLERANIMATETO方法移动地图位置。524百度地图地址解析服务GEOCODER地址解析服务在MKSEARCH类中有两个接口REVERSEGEOCODE、GEOCODE。初始化搜索类MKSEARCH并注册结构监听对象MKSEARCHLISTENER/初始化搜索模块,注册事件监听MSEARCHNEWMKSEARCHMSEARCHINITAPPMBMAPMAN,NEWMYSEARCHLISTENER实现MYSEARCHLISTENER的ONGETADDRRESULT获取得到的地址信息OVERRIDEPUBLICVOIDONGETADDRRESULTMKADDRINFORES,INTERRORIFERROR0STRINGSTRSTRINGFORMAT“错误号D“,ERRORRETURNSTRINGSTRINFOSTRINGFORMAT“纬度F经度F地址SRN“,RESGEOPTGETLATITUDEE6/1E6,RESGEOPTGETLONGTITUDEE6/1E6,RESADDRESSCOMPONENTSCITYRESADDRESSCOMPONENTSDISTRICTRESADDRESSCOMPONENTSSTREETGEOCODE根据地址名称获取地址信息MSEARCHGEOCODE“天安门“,“北京“第6章系统设计与实现61欢迎界面的实现(1)欢迎界面的设计SPLASHACTIVITY类是本系统的欢迎界面。SPLASHACTIVITY继承自ACTIVITY。本系统的欢迎界面由两张图片组成。一张图片负责显示LOGO,一张图片负责显示脚注。XML布局文件整体使用LINEARLAYOUT线性布局。(2)TIMER类使用TIMER类实现定时执行任务的功能,本程序定时3秒钟自动跳转至主页面,主要代码如下IMPORTJAVAUTILTIMERIMPORTJAVAUTILTIMERTASKIMPORTANDROIDAPPACTIVITYIMPORTANDROIDCONTENTINTENTIMPORTANDROIDOSBUNDLEPUBLICCLASSSPLASHACTIVITYEXTENDSACTIVITYTIMERTIMERNEWTIMERTIMERTASKTASKNEWTIMERTASKPUBLICVOIDRUNINTENTINTENTNEWINTENTSPLASHACTIVITYTHIS,MAINTABACTIVITYCLASSSTARTACTIVITYINTENTFINISHOVERRIDEPUBLICVOIDONCREATEBUNDLESAVEDINSTANCESTATESUPERONCREATESAVEDINSTANCESTATESETCONTENTVIEWRLAYOUTSPLASHTIMERSCHEDULETASK,300062主要功能的实现(1)换乘查询的实现换乘查询主要实现的是提供从出发站到目的站的乘车方案。实现该模块功能有关的类DBHELPER类、SWITCHLINEACTIVITY类SWITCHLINEACTIVITY类的主要变量和函数的介绍START_ID_SEARCH_KEY起始线路IDEND_ID_SEARCH_KEY结束线路IDSTART_SEARCH_KEY起点站END_SEARCH_KEY到达站方法SELECTSWITCHLINESTRINGSTART,STRINGEND是描述搜索过程中的方法,比如说从车站A通过线路L可以到达车站B,如图41所示。START_SEARCH_KEYLINEEND_SEARCH_KEY图41SWITCHLINE结点(2)线路查询的实现线路查询主要实现的是查询该线路经过的所有站点,下图42是线路查询的流程图。图62线路查询流程当进入线路查询界面时,当按下查询按钮后,通过判断表单中的每一个文本框是否为空,如果为空,使用TOAST弹出提示框否则就执行DBHELPER类中的SELECTONELINEBYNAME方法,即到数据库中查找该线路经过的站点,然后再判断返回的结果是否为空,为空则弹出提示框。否则将返回的结果通过HANDLEMESSAGE()方法显示的界面上,该方法主要实现的是先为获取显示内容,然后把字符串进行换行处理,再将需要显示的文本放入TEXTVIEW中,再将TEXTVIEW放到LINEARLAYOUT中,得到每一行列表要显示的内容。(3)站点查询的实现站点查询主要实现的是查找与该站点相关的线路信息,下图43是站点查询的流程图。输入

温馨提示

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

评论

0/150

提交评论