《基于android平台的gps车辆定位系统的设计与实现学士学位论文.doc》由会员分享,可在线阅读,更多相关《基于android平台的gps车辆定位系统的设计与实现学士学位论文.doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、湖北民族学院科技学院毕业论文(设计)基于Android平台的GPS车辆定位系统的设计与实现系 别: 信息工程系 专 业: 计算机科学与技术论文答辩日期 答辩委员会主席 29摘 要基于GPS的车辆定位系统,对它的研究开始于二十世纪六十年代,是社会文明发展到一定阶段的必然产物。作为智能交通系统的一个重要组成部分,最初是为了解决汽车文明带来的日益严重的城市交通问题。它的发展融合了当今空间定位技术、无线通信技术和地理信息系统的最新成果。而当下日趋完善的智能手机系统为车辆监控提供了更为光明的发展前景。Android平台作为时下流行的智能手机操作平台,不仅功能强大,更有开放和免费的先天优势。本文所研究的基
2、于Android系统的GPS车辆定位系统正是将传统的课题研究与时下流行的技术相结合的应用型尝试。以手机为载体,运用谷歌地图技术将车辆的实时位置显示于手机屏幕上以实现车辆的实时定位。开发过程以Eclipse及Android虚拟机为主要工具。最终实现了核心的定位功能。关键词:车辆定位系统,智能手机平台,安卓系统,谷歌地图 AbstractGPS-based vehicle positioning system, its research began in the sixties the twentieth century is to a certain stage of development o
3、f social civilization and the inevitable outcome. Intelligent transportation systems as an integral part of the first to address the growing car culture have brought the city traffic problems. It incorporates the development of spatial orientation of todays technology, wireless communication technol
4、ogy and geographical information system the latest results. The current smart phones are maturing as a vehicle monitoring system to provide a more bright future. Android system as the popular smart phone operating system, not only powerful, more open and free of inherent advantages. This paper studi
5、ed the GPS-based Android system; vehicle location system is the traditional research techniques with the popular combination of applied attempt. Mobile phone as the carrier, using Google Maps technology to real-time location of vehicles displayed on the mobile screen in order to achieve real-time lo
6、cation of vehicles. Eclipse and the Android development process to a virtual machine as the main tool. Ultimately the core of the targeting.Key word: Vehicles positioning system, intelligent handset platform, Android system, Google Maps 目 录摘 要IAbstractII1 绪 言1.1 研究背景与意义11.2 国内外研究现状21.3 论文的主要工作32 系统开
7、发技术概述2.1手机地图服务42.2定位技术52.3 Google Maps72.4 Android系统相关类83 终端软件系统设计及相关技术3.1系统设计特点113.2开发环境需求113.3需求分析113.4系统功能模块123.5系统总体流程图123.6界面设计123.7系统关键技术144 终端软件功能的实现4.1主界面的实现及基础视图的设置174.2 当前地理信息的获取及转换184.3 绘图模块的实现194.4 刷新模块的实现205 系统测试5.1 GPS输入的虚拟225.2 GOOGLE MAP 的使用225.3程序测试246 总结与展望6.1总结266.2展望26致 谢27参考文献28
8、1 绪 言1.1 研究背景与意义 随着经济的高速发展和城市化进程的加快,交通运输的压力不断加剧,交通拥挤和堵塞的现象越来越普遍,严重影响了人们的生活,制约了社会的生产。如何科学的引导车辆的出行,避开拥挤路段,提高道路通行能力,是现代社会亟待解决的重要问题。与此同时,随着机动车辆的数量日益增多,许多与汽车密切相关的行业迅速发展壮大。例如,出租车,公交汽车,旅游客运,银行,医院急救,物流以及机械施工等诸多行业面临着所辖车辆机动性强,数量众多,难以管理的棘手问题。另外,有的行业对于安全性的要求很高,比如运钞车,夜间出行的出租车,运送重要物资的货车等等。如何有效的控制和管理这些车辆,对车辆进行合理的调
9、度,提高车辆的利用效率以及保证车辆的行驶安全,已成为政府和公众所关注的热点问题之一。为了很好的解决这些问题,ITS作为一种新型的技术被广泛提出。ITS是智能交通系统(ImelligentTransport System)的简称,它将先进的信息技术、数据通讯传输技术、电子传感技术、电子控制技术及计算机处理技术等有效的运用于整个地面交通管理系统 而建立的一种在大范围、全方位发挥作用的,实时、准确、高效的综合交通运物管理系统。作为智能交通系统的重要组成部分,车辆监控管理系统的研究和发展受到人们越来越多的重视。而车辆的定位正是监控系统的核心技术。交通运输是城市的命脉,是国民经济和社会发展的基础。随着社
10、会经济的不断发展,汽车已经成为现代交通运输不可或缺的重要工具。据德国汽车工业协会(VDA)的统计,仅2004年,全世界投入使用运行的汽车总数量已突破85亿辆大关。汽车数量的骤增势 必会对交通运输产生很大的压力,也对城市的发展和人们的生活提出了严峻的挑战。我国改革开放30年来,人们的生活发生了翻天覆地的变化,消费水平也有飞跃性的提高,汽车的购买已经不再是很多人可望而不可即的事情了。随着中国加入WTO,国内汽车市场的需求空间潜力巨大。车辆的增多,道路的老化,交通问题不可避免的凸现出来。交通效率成为让人们头疼的问题。车辆监控系统的应用,可以有效的缓解这一问题。例如,北京奥运会期间,奥运服务车上都安装
11、了车载GPS,监控中心通过对车辆的准确定位,结合道路监控录像,准确下发实时路况信息,有效的避免了服务车辆因交通堵塞而发生的潜在事故1,2。 随着交通运输行业的发展壮大,车辆的有效控制和管理越来越受到相关人员的关注。出租车公司,银行等希望实时监控车辆的位置,保证车辆的安全;公交公司希望根据车辆的位置和路况信息安排发车的间隔时间;施工单位希望监控机械工程车辆,根据其分布密度做出合理的调度;货运公司希望货车沿着指定路线行驶,以防司机私改路线等等。 另外,我国流动人口众多,社会治安形势严峻。偷窃、抢劫车辆的案件时有发生。司机遇到困难或者危险的时候,希望能与外界快速取得联系,获取帮助,紧急情况时公司也希
12、望能对车辆进行定位搜索。综上所述,车辆监控系统的研究有着重要的现实意义,它有效的缓解了交通压力,提高了汽车使用效率,对车辆进行控制和管理以及合理的安排,保证了车辆的安全。作为车辆监控的核心技术,车辆定位的有效性和成本控制更显得至关重要2,6。1.2 国内外研究现状GPS车辆应用系统一般分为两大类:车辆监控系统和车辆导航系统,两者的研究和发展相辅相成。现代车辆监控系统的雏形始于上世纪六十年代,美国联邦高速公路委员会开始了车辆电子路径制导系统(ERGS)的研究计划。到了七十年代,随着微处理器的出现,日本和欧洲加入到车辆导航与监控系统的研究中,从而推动了车辆监控技术的发展。七十年代末到八十年代初,出
13、现了第一代采用航位推算和早期地图匹配方法的实验系统,如欧洲的“CITY PILOT”,Philips公司的“CARIN”,德国的“ALL.SCOUT”,英国的“Auto Guide等车辆导航系统。八十年代末,GPS卫星定位技术的成熟,使其在车辆监控系统中得到了广泛的应用。但车载GPS接收机通常受到卫星信号状况和周围环境的影响,在不同的时间及不同的地区卫星信号的状况差别很大,特别是在城市地区,由于高层建筑、隧道以及起伏地形的遮挡,GPS信号强度有时只达到海用和空用GPS信号的25%,建筑物的多路径反射也对信号造成很大干扰,导致有时定位精度较低、可靠性不高。随着GPS定位技术的发展与GIS技术的出
14、现,从九十年代初开始,为了适应新兴的智能运输系统对车辆定位与调度技术的要求,国外开展了以GPS定位技术为主的导 航与定位系统的应用研究。目前推出的有法国的CARMINAT车辆定位与调度系统,美国General Motor公司研究实验室研制的TravTek车辆定位与调度系统,日本SUMITOMO电子公司研制的CruiseMate SNVAD20汽车电子导航系统,Liikkuva公司采用GPS和NavTech地图导航数据库的StreetPC98车辆导航系统,美国Clarion公司开发的基于WinCE操作系统的AutoPC车辆定位与调度系统,美国Clarion公司的TravelPiolt RGS08
15、车辆定位与调度系统以及Street Guard车辆导航与监控系统,这些系统的共同特别是能提供精确、连续、直观的车辆位置,并且定位与监控系统的稳定性和可靠性也大大提高。我国GPS车辆监控系统始于上世纪九十年代初期。由于当时市场尚未形成,用户还没有迫切需求,而且技术途径尚不完善,做成的大多是实验室内刚出笼的,还达不到商品化程度,所以成功者不多。19961998年期间,GPS车辆监控系统市场经历了整顿、巩固、充实和提高,在对原有的不良系统进行改造的同时,也有新的系统相继出现,还有多个具有水平的集群系统出现。19992000年GPS车辆监控系统市场又出现了新的一波,出现了快速增长的势头,此时的市场逐步
16、趋于成熟,我国的GPS车辆监控系统的技术有了较大的提高与发展。值得指出的是,在GPS车辆监控系统上,我国在应用面和规模上在国际上居于领先地位,但是从系统的技术水平和产品的质量和成熟程度来说,我们还处在发展时期14。1.3 论文的主要工作本课题主要研究车辆监控系统中车载手机端GPS 定位技术的实现。最终目的为将车辆当前位置的实时信息实时显示于车载手机端的模拟地图上。研究的主要内容包括:Google地图的使用、Android系统卫星定位的实现以及将定位信息表现于Google地图。此外车载端软件具有可扩展性,可在后续的开发中实现导航与监控等实用功能。论文的主要内容:第一章为绪言,介绍了课题的研究背景
17、及意义,国内外现状等。第二章介绍了课题研究所需的技术支持,包括手机地图服务的解释,定位技术的概述,GOOGLE MAP的介绍以及ANDROID系统下的相关类。第三章为软件的设计及相关技术介绍,包括系统的特点,环境及需求分析,模块介绍,系统流程和相关技术。第四章阐述了系统的各功能模块的实现。第五章为系统的测试和测试相关图片。第六章是对课题的总结,并对以后的发展方向做了展望。 2 系统开发技术概述本章主要分析了手机地图服务的结构框图及相关的定位技术,并对本系统用到的Google Maps进行了阐述,还给出了Android平台下的位置服务类和地图类。2.1手机地图服务2.1.1 手机地图服务的的介绍
18、手机地图服务是指在手机上利用GPS或者网络实现精确定位,并使用WAP方式或客户端方式,通过移动通信网络与手机地图应用服务器之间的互联通信,查找自己的位置、搜索地点、查询行车路线的一种与地理信息相关的位置业务。用户在查询过程中,不仅可以得到相关的文字信息,还可以通过手机终端友好的人机界面得到直观的地图信息15。手机地图查询中的客户端为用户提供了查询的输入接口和与服务器连接的接口,并在手机上显示查询后的地图。服务器端以HTTP方式接收客户端的请求,并根据请求将地图数据以栅格数据的方式返回给客户端。手机地图查询系统的结构如图2.1所示。以HTTP方式发送请求返回数据图片以HTTP方式发送请求客户端(
19、手机)服务器端输入具体查询的地点根据请求查询具体地点显示地图根据请求制作地图图片对地图进行放大,缩小或移动图21地图查询结构框图手机端地图是安装在手机上的简易地图文件,详细的地图信息,要通过发送到网络端应用服务器的查询命令解析执行后,再下发到终端进行异步下载。目前的手机地图业务为用户提供地图下载、浏览和各种操作的集合(放大、缩小、查询),以图形、文字的方式显示给用户,满足了用户基本的地图服务要求。手机地图服务中最重要的就是定位技术16。2.2.2手机地图服务的发展趋势(1) 大众化随着社会的发展,人们对地理信息的需求越来越多,从地图服务中人们得到的不仅仅是方便,还有效率和效益。由于人们日常生活
20、中不可能随时随地通过网络获取地图服务,而通过手机获取地图服务是解决这个问题的很好方案,因此手机地图服务的推广必将大大方便人们的生活。(2) 行业化手机地图服务作为一项高新技术产业,对行业的影响是积极的。一方面,将位置服务与地图相结合可以提高一些相关行业服务的效率。例如在安全救援行业,手机地图服务可以通过手机定位,及时获取救援对象的位置,并在地图上标识出来,给救援工作带来了极大的便利。另一方面,对一些传统行业加以改造,实现其在新环境下的飞跃。最典型的例子便是物流管理,运用基于手机平台的位置服务,将货物的物理位置在地图上标识出来,并以此为基础,处理物流业务的各个环节。(3) 电子化。随着技术的不断
21、发展,手机地图服务将会渗透到更多的行业,但还存在一些限制条件。比如移动通讯网的覆盖范围,虽然目前我国移动通讯网络的覆盖已经非常广泛,但一些偏远地区还存在盲区。2.2定位技术移动终端的定位是通过检测移动终端和基站之间传播信号的特征参数来获得其几何位置,根据进行定位估计位置的不同分为两种:基于移动终端定位和基于网络定位。2.2.1基于移动终端定位基于移动终端定位是根据目标与各通信基点通信时的相关位置信息来确定几何位置,在蜂窝网络中又叫做前向链路定位。移动终端定位技术包括全球定位系统(GPS)、基于移动终端发送/接收信号的定时或角度的覆盖三角技术(TOA)以及起源蜂窝小区(COO) 17-20。(1
22、) 全球定位系统(GPS)GPS是由美国国防部在70年代开始联合研制的新型卫星导航系统,历时20年,耗资200亿美元,于1994年全面建成。它采纳了子午仪系统的成功经验,具有全球性,全天候、高精度三维定位的特点。GPS系统主要由三大部分组成:GPS卫星星座(空间部分)、地面监控系统(控制部分)和GPS信号接收机(用户部分)。GPS的定位原理就是根据高速运动的卫星瞬间位置作为已知的数据,采用空间距离后方交会的方法,确定待测点的位置21。(2) 抵达时间TOA(Time Of Arrival)基于测量信号从移动终端发送出去并到达消息测量单元(3个或更多基站)的时间来定位。移动台位于以基站为圆心、移
23、动台到基站的电波传播距离为半径的圆上。通过多个基站进行计算,移动台的二维位置坐标可由3个圆的交点确定。与E-OTD不同的是,它没有使用位置测量单元,因此,必须通过与在基站上安装了全球定位系统(GPS)或原子钟的无线网络之间的同步来实现22。(3) 起源蜂窝小区(COOCell Of Origin)起源蜂窝小区定位技术是根据移动终端所处的小区标识号ID来确定用户的位置23。移动终端在当前小区注册后,在系统的数据库中就会有相对应小区的ID号。只要系统能够把该小区基站设置的中心位置(在当地地图中的位置)和小区的覆盖半径广播给小区范围内的所有移动台,这些移动台就能知道自己处在什么地方,查询数据库即可获
24、取位置信息。该定位方案的优点是无需对网络和手机进行修改,响应时间短。它的定位精度取决于小区的半径。2.2.2基于网络定位基于网络定位是多个固定的通信基点接收目标发送的信号,根据其中相关的位置信息来确定目标的定位信息,在蜂窝网络中又叫反向链路定位。该技术要求定位终端发送或广播一些特定的信号,网络系统负责收集这些信号并担负起定位计算的任务。该定位服务中心的结构如图2.2所示24。手机定位是基于网络的实现,通过移动电信运营商的网络固定通信基点获取移动终端用户的位置信息。移动位置中心组件将定位技术的选择和应用服务的选择隔离起来。位置中心运行于无网络内部,我们可以对它进行修改以适应具体移动设备的能力。当
25、用户通过拨号、发短消息或者WAP发起数据请求时,位置中心的交换机将客户的位置信息发送给相应的位置应用。从信号中获取定位信息包括两个过程:定位参数的测量以及定位算法。因此获得可靠的定位参数是保证高精度定位的前提。从统计的角度来看,由于受到设备测量误差以及信号本身固有的随机性的影响,从定位信号中获得的参数有一定的噪声误差。网络定位技术主要是增强型观测时间差(E-OTD)。该技术的实现原理是:收集对服务小区基站和周围几个基站进行测量的结果,算出测量数据之间的时间差,并用此计算用户相对于基站的位置。增强型观测时间差定位技术是基于网络的定位方案,是目前使用最多的技术,也是欧洲电信标准化组织(ETSI)建
26、议使用的主要技术25。定位方法移 动 定位 中 心E-OTDCODGPS基于位置的付账基于位置的信息追 踪安 全图2.2定位服务中心结构图2.3 Google Maps2004年10月Google收购了总部位于美国加州山景城以矢量地图测绘为主要业务的Keyhole公司26。2005年4月,Google正式推出Google Maps,它是一种开放式的免费地图服务,有传统地图、卫星地图和混合地图三种模式。传统地图能为用户规划路线,指引、帮助用户直接确定方向;卫星地图则可以使用户获得当前位置的实拍鸟瞰图;混合地图能让用户更加准确地获得方向感。2.3.1 Google Maps的特点(1) 地图预览生
27、成地图不是根据用户的请求动态生成,而是预先处理成为图片金字塔,切块后做四叉树编码,存放在服务器端。当用户对地图进行移动或者缩放操作时,只需要下载新的图片来填充新的区域27.28。(2) 开发成本Google Maps提供的API为免费资源,只需要申请一个Key便能使用Google Maps,从地图服务和开发两个方面降低了二次开发的门槛,提高了地图服务水平,对于开发地图服务应用有重要的意义。(3) 数据更新Google Maps以矢量地图和高分辨率卫星影像两种数据源提供地图服务,并由Google不定期进行地图更新,用户可以同步享受最新地图信息服务。2.3.2 Google Maps显示相关理论G
28、oogle Maps向用户提供的地图数据和卫星影像数据,在客户端上显示的都是常见的栅格图像。这两套数据采用了相同的空间参考系统:基准面为WGS84,投影方式为墨卡托投影。根据缩放的详细程度不同,Google Maps提供了0.17共18个缩放等级,其中0级缩放最详细,不管是地图数据还是卫星影像数据都采用了图像切片技术,将各个缩放等级的全球数据分割成大小为256*256的prig图块,而且这些图块的URL都是不变的。参数v为图源数据版本参数zoom为缩放等级,取值范围为017。在普通地图的URL中,X为经度方向斟片编号,Y为纬度方向图片编号,X、Y的取值范围则为0-217-zoom-1;在卫星地
29、图的URL中,参数t是“qrst”四个字符排列而成的字符串表示卫星地图的图块编号。Google Maps的地图和卫星影像数据预先参照金字塔模式按照不同的缩放等级分别存储。通过简单的URL预载入图块的方式获得。为获取某经纬度图块的URL,就需要把经纬度转化为X,Y坐标。Google地图坐标的计算公式如(2.1)所示。 (2.1)其中PL为圆周率;为东经,取值范围为-180+180度;为北纬。Google对普通地图和卫星地图使用了两种不同的算法对其子图片的位置进行了编码。2.4 Android系统相关类Android是一个包含操作系统、中介架构层及应用程序所产生出来的软件堆栈架构。由下而上,其核心
30、为嵌入式Linux 2.6作业系统,向上搭配Google为Android开发的类库及Android运行时,再配合应用程序架构,来开发各种不同的应用程序26。2.4.1定位服务类 Android包含了地理定位服务的包android. location,它可以用来获取当前设备的地理位置,另外系统还为应用程序提供了基于GPS和基于网络的定位服务。前者的定位数据来源于位置提供者GPS_PROVIDER,它负责获取GPS模块的定位信息,一般用于设备自身的定位;后者的定位数据来源于位置提供者NETWORK_PROVIDER,它负责从网络获取其它设备或用户的位置信息。androidlocation中包含了下
31、面一些比较重要的功能类27如图2.3。位置类(Location)用来代表程序中使用的某个位置,该位置包含经度、纬度、标准时间、高度、测量速度、方位角等内容。定位管理类(Location Manager)提供访问定位服务的功能,以实时获取设备的位置信息。当应用程序定义了一个Location Manager对象后,就会搜索系统中所有的Location Provider,从中获取最新的位置信息,还可以指定Location Provider内位置数据的更新周期,及时获取设备位置的变化信息。管理监听位置服务设置标准打开或关闭获取位置信息提供定位服务Location类Criteria类LocationMa
32、nager类LocationListener类LocationProviderr类图2.3位置定位的相关类位置提供者(Location Provider)定位提供者的抽象类。定位提供者具备周 期性报告设备地理位置的功能。系统中有许多Location Provider,它们提供了各种类型的位置信息。Location Provider既有系统默认的(如GPS PROVIDER),也可以根据应用程序的需要自行定义。所有Location Provider都有各自的使用标准。定位监听类(Location Listener)提供定位信息发生改变时的回调功能,但 必须事先在定位管理器中注册监听器对象。位置数
33、据标准类(Criteria)使应用能够通过在Location Provider中设置的属性来选择合适的定位提供者28。2.4.2地图服务类Android平台提供了一个map包com.google.android.maps来支持基于地图服务的应用程序开发,它包含了一系列用于在Google Maps上显示,控制和层叠信息的功能类,如图2.4所示。提供地图控制服务提供地图绘制服务提供显示地图的组件MapActivity类MapView类MapController类Overlay类图2.4 Google Maps类以下是其中比较重要的几个类:地图类(Map Activity)-用于显示Google M
34、aps的Activity类,此类需要连接底层网络。显示类(Map View)-用于显示地图的View组件,它必须和Map Activity配合使用。控制类(Map Controller)-用于控制地图的移动。应用程序用它来设置地图的显示方式。层叠类(Overlay)-是一个可显示于地图之上的可绘制的对象。3 终端软件系统设计及相关技术本章主要阐述了手机地图服务系统的需求分析、功能模块的设计、系统流程和界面设计,并对系统实现过程中所用到的关键技术进行了介绍。3.1系统设计特点本系统建立在Android平台上,有以下特点:开源性:Android操作系统的核心基于Linux的,是典型的开源系统。可扩
35、展性:满足了手机用户基本的地图服务要求,可进一步扩展系统的功能。易用性:系统界面设计简单美观,用户不需要培训就可直接使用该服务。3.2开发环境需求硬件环境:由于Android开发需要使用SDK(虚拟机),虚拟机需要PC空出一块内存来模拟手机内存卡(一般500M)。所以PC本身的内存应不小于1G。软件环境:Eclipse 开发工具;JAVA JDK6.0或以上;JAVA JRE6或以上;ANDROID SDK。3.3需求分析手机地图的主要功能是以图形、文字的形式为用户提供地图服务,并提供友好、方便、快捷的操作界面。一个成功的Android应用程序往往需要提供良好的用户体验。良好的用户体验体现在以
36、下几点:(1)界面友好用户界面要简洁直观,并且易于操作。本系统中地图能够进行放大、缩小和移动;(2)快速响应快速处理用户的输入或请求,对于有些需要较多时问的应用程序,可以在它处理时,给用户一个提示,让用户知道程序还在运行中;(3)可扩展性车辆定位距更有价值的车辆监控及控制还有一定距离,所以程序需要有足够的扩展性,为以后相应功能的添加提供基础。可扩展的功能包括,界面的扩展,位置查询,导航功能,与主机的实时监控功能等。3.4系统功能模块系统旨在建立Android系统的地图服务,主要有如下几个核心功能模块。利用GPS提供的定位服务,确定用户目前在城市中所处的地理位置,将位置显示在地图上,并给出用户当
37、前的地址和经纬度,且能随着位置的变化而实时更新,使用户能实时得到最新、最准确的位置信息,如图3.1所示。定 位 系 统数据处理模块GPS接收模块MAP绘制模块Android系统自带结构,程序中以代码调用调用。将卫星数据处理为地址值,以于MAP具象化。程序调用Android画图API以将MAP绘于屏幕。绘制基础的容器视图。视图初始模块图3.1 定位系统功能结构图3.5系统总体流程图启动模拟器后,系统首先打开GPS模块得到当前地理位置,然后将该地理位置转换为可定位于MAP的地址。同时系统初始化屏幕上的基础视图以供后续绘制。之后系统内置控制器完成将所得地址具象化于地图的过程。最后系统中的绘图模块完成
38、将已定位的地图绘于屏幕。紧接着实时刷新模块启动。界面实时更新。整个流程如图3.2所示。3.6界面设计程序启动后,屏幕上直接以map的形式显示。当前位置以绿色图标标示,地图可放大缩小及拖动。随着终端的移动,地图实时刷新。设计效果如图3.3所示。启 动GPS模块转换为MAP地址视图初始模块控制器拿到当前位置地图获得经纬度当前位置的MAP初始视图绘图模块主页面刷新模块 图3.2 系统总体流程图图3.3 用户界面效果图3.7系统关键技术在Android平台下开发手机地图服务采用的关键技术如下。3.7.1 Android权限的获取问题Android安全中的一个重要的设计点是在默认情况下应用程序没有权限执
39、行对其它应用程序、操作系统或用户的有害操作。这些操作包括读/写用户的隐私数据(例如联系方式或e.mail),执行网络访问,保持设备活动,等等。应用程序的进程是一个安全的黑盒子,它不能干扰其它应用程序,除非给它声明权限,现对权限的命名和获取问题做下说明。(1)权限命名一个基本的Android应用程序没有与其相关联的权限,意味着它不能做任何影响用户体验或设备中数据的有害操作。在应用程序需要时,可在AndroidManifestxml文件中列举一个或更多的标签来声明此权限。例如:需要监听来自SMS消息的应用程序将要指定如下内容:manifest xmlns:android=http/(2)在Andr
40、oidManifest.xml文件中支持权限通过AndroidManifest.xml文件可以设置高级权限,用来限制访问组件或应用程序。所以如果要访问某组件,需要在这个文件里声明一个权限,现对跟本系统有关的组件权限做以下说明。Activity权限(使用标签)限制能够启动与Activity权限相关联的组件或应用程序。此权限在Context.startActivity()和ActivitystartActivityForResult期间要经过检查;如果调用者没有请求权限,那么会为调用抛出一个安全异常。BroadcastReceiver权限(使用标签)限制能够为相关联的接收器发送广播的组件或应用程序
41、。在ContextsendBroadcast0J压_回后此权限将被检查,同时系统设法将广播递送至相关接收器。因此,权限失败将会导致抛回给调用者一个异常。3.7.2 Android用户界面构建问题在Android平台下开发应用软件,最重要的是布局问题。一个好看而又简洁的界面,是相当重要的,既能提高使用者的体验,又保证应用的高效执行。Android生成用户界面有三种方式:xml配置生成、通过用户自己的界面接口生成和直接用代码生成。对于一个Activity应用来说,android.app.Activity类是一个最基本的功能单元。一个Activity实例可以做很多的事情,但是它本身无法显示在屏幕上,
42、而是借助于View group和View,这两个是Android平台上最基本的两个用户界面表达单元。下面介绍下主要的布局对象:线性布局(Linear Layout):以单一方向对其中的显示对象进行排列显示。如以垂直排列显示,则布局管理器中将只有一列;如以水平排列显示,则布局管理器中将只有一行。同时,还可以对个别的显示对象设置显示比例。表格布局(Table Layout):以拥有任意行列的表格对显示对象进行布局,每个显示对象被分配到各自的单元格之中,但单元格的边框线不可见。绝对布局(Absolute Layout):允许以坐标的方式,指定显示对象的具体位置,左上角的坐标为(0,0),向下及向右,
43、坐标值变大。这种布局管理器由于对象的位置固定了,所以在不同的设备上,有可能会出现不一样的显示效果。相对布局(Relative Layout):允许通过指定显示对象相对于其它显示对象或父级对象的相对位置来布局。一个按钮可以放于另一个按钮的右边,或者可以放在布局管理器的中央。对于Android应用中的一个屏幕,它的屏幕元素是按层次结构来描述的。要将一个屏幕元素层次树绑定在一个屏幕上显示,Activity会调用它的setContentView()方法并且传入这个层次树的根节点引用。3.7.3地址与地理坐标的转换这两个功能的实现需要有Internet的连接。(1)地址向地理坐标的转换在Android中
44、用户可以通过Geocoder对象,利用程序控制的方式,输出地址的字符串,反查GPS地理坐标。Geocoder反查Address对象的服务没有任何限制,不过,实验证明以地址反查坐标的返回结果,似乎有笔数的限制,如果反查过多笔数,可能发生无返回地标的情况。所以,在输入地址查询时,应尽可能输入完整地址或者常用的地标语句。传入的地址,用Geocoder.getFormLocationName()方法来取回自Google服务器找到的搜索结果,以List存放,接着再以List.Get()来取出Address的对象,使用AddressgetLatitude()及Address.getLongitude()进
45、一步取得经纬度,最后以GeoPoint的对象作为返回值使用。(2)地理坐标向地址的转换通过传入的Location对象来反解GeoPoint的函数getGeoByPoint(),首先创建一个Geocoaer对象,然后取得地理的坐标经纬度。因为经纬度取得的地址可能有多行,所以首先需要判断下是否是多行地址,通过append方法进行追加,最后将获取到的地址组合后放到StringBuilder对象中输出。3.7.4资源的获取和使用问题资源是外部文件(不含代码的文件),它被代码使用并在编译时编入应用程序。Android支持不同类型的资源文件,包括XML、PNG以及JPEG文件。它们在运行的时候被解析,XM
46、L文件根据描述不同有不同的格式。源代码以及XML文件将资源打包并编译进二进制文件,这种模式能使得资源更快得被加载。字符串也同样被压缩成更高效的模式。由于这些原因,Android平台上可以有不同的资源类型。Android资源系统能跟踪所有非代码相关的应用程序。程序开发者可以使用资源类来访问应用程序的资源,资源的实例通常和应用程序联系在一起,可以通过ContextgetResources来访问。应用程序的资源在编译时就被编译到应用程序二进制代码里。为了使用某个资源,程序开发者需要将它放在对应的代码目录结构里,然后编译。作为编译过程的一部分,产生的资源代号可以在源代码里使用这就可以用编译器来验证程序代码和定义的资源是否相符。4 终端软件功能的实现4.1主界面的实现及基础视图的设置4.1.1主界面的实现主界面在运行之前的一系列参数需要在容器启动前设置完成。主界面的总体实现过程如下:首先创建基础容器布局。打开Layout里的mainxml,键入如下布局LinearLayout xmlns:android= android:orientation=vertical android:layout_