基于ANDROID平台的GPS车辆定位系统的设计与实现毕业论文

基于ANDROID平台的GPS车辆定位系统的设计与实现毕业论文
基于ANDROID平台的GPS车辆定位系统的设计与实现毕业论文

毕业论文(设计)

基于Android平台的

GPS车辆定位系统的设计与实现

摘要

基于GPS的车辆定位系统,对它的研究开始于二十世纪六十年代,是社会文明发展到一定阶段的必然产物。作为智能交通系统的一个重要组成部分,最初是为了解决汽车文明带来的日益严重的城市交通问题。它的发展融合了当今空间定位技术、无线通信技术和地理信息系统的最新成果。而当下日趋完善的智能手机系统为车辆监控提供了更为光明的发展前景。Android平台作为时下流行的智能手机操作平台,不仅功能强大,更有开放和免费的先天优势。本文所研究的基于Android系统的GPS车辆定位系统正是将传统的课题研究与时下流行的技术相结合的应用型尝试。以手机为载体,运用谷歌地图技术将车辆的实时位置显示于手机屏幕上以实现车辆的实时定位。开发过程以Eclipse及Android虚拟机为主要工具。最终实现了核心的定位功能。

关键词:车辆定位系统,智能手机平台,安卓系统,谷歌地图

Abstract

GPS-based vehicle positioning system, its research began in the sixties the twentieth century is to a certain stage of development of 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 today's technology, wireless communication technology 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 studied 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 location 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

目录

摘要........................................................................................................ II Abstract ..................................................................................................... III 1 绪言

1.1 研究背景与意义 (1)

1.2 国内外研究现状 (2)

1.3 论文的主要工作 (3)

2 系统开发技术概述

2.1手机地图服务 (4)

2.2定位技术 (5)

2.3 Google Maps (7)

2.4 Android系统相关类 (8)

3 终端软件系统设计及相关技术

3.1系统设计特点 (11)

3.2开发环境需求 (11)

3.3需求分析 (11)

3.4系统功能模块 (12)

3.5系统总体流程图 (12)

3.6界面设计 (12)

3.7系统关键技术 (14)

4 终端软件功能的实现

4.1主界面的实现及基础视图的设置 (17)

4.2 当前地理信息的获取及转换 (18)

4.3 绘图模块的实现 (19)

4.4 刷新模块的实现 (20)

5 系统测试

5.1 GPS输入的虚拟 (22)

5.2 GOOGLE MAP 的使用 (22)

5.3程序测试 (24)

6 总结与展望

6.1总结 (1)

6.2展望 (1)

致谢 (2)

参考文献 (3)

1 绪言

1.1 研究背景与意义

随着经济的高速发展和城市化进程的加快,交通运输的压力不断加剧,交通拥挤和堵塞的现象越来越普遍,严重影响了人们的生活,制约了社会的生产。如何科学的引导车辆的出行,避开拥挤路段,提高道路通行能力,是现代社会亟待解决的重要问题。与此同时,随着机动车辆的数量日益增多,许多与汽车密切相关的行业迅速发展壮大。例如,出租车,公交汽车,旅游客运,银行,医院急救,物流以及机械施工等诸多行业面临着所辖车辆机动性强,数量众多,难以管理的棘手问题。另外,有的行业对于安全性的要求很高,比如运钞车,夜间出行的出租车,运送重要物资的货车等等。如何有效的控制和管理这些车辆,对车辆进行合理的调度,提高车辆的利用效率以及保证车辆的行驶安全,已成为政府和公众所关注的热点问题之一。为了很好的解决这些问题,ITS作为一种新型的技术被广泛提出。ITS是智能交通系统(ImelligentTransport System)的简称,它将先进的信息技术、数据通讯传输技术、电子传感技术、电子控制技术及计算机处理技术等有效的运用于整个地面交通管理系统而建立的一种在大范围、全方位发挥作用的,实时、准确、高效的综合交通运物管理系统。作为智能交通系统的重要组成部分,车辆监控管理系统的研究和发展受到人们越来越多的重视。而车辆的定位正是监控系统的核心技术。

交通运输是城市的命脉,是国民经济和社会发展的基础。随着社会经济的不断发展,汽车已经成为现代交通运输不可或缺的重要工具。据德国汽车工业协会(VDA)的统计,仅2004年,全世界投入使用运行的汽车总数量已突破8.5亿辆大关。汽车数量的骤增势必会对交通运输产生很大的压力,也对城市的发展和人们的生活提出了严峻的挑战。我国改革开放30年来,人们的生活发生了翻天覆地的变化,消费水平也有飞跃性的提高,汽车的购买已经不再是很多人可望而不可即的事情了。随着中国加入WTO,国内汽车市场的需求空间潜力巨大。车辆的增多,道路的老化,交通问题不可避免的凸现出来。交通效率成为让人们头疼的问题。车辆监控系统的应用,可以有效的缓解这一问题。例如,北京奥运会期间,奥运服务车上都安装了车载GPS,监控中心通过对车辆的准确定位,结合道路监控录像,准确下发实时路况信息,有效的避免了服务车辆因交通堵塞而发生的潜在事故[1,2]。

随着交通运输行业的发展壮大,车辆的有效控制和管理越来越受到相关人员

的关注。出租车公司,银行等希望实时监控车辆的位置,保证车辆的安全;公交公司希望根据车辆的位置和路况信息安排发车的间隔时间;施工单位希望监控机械工程车辆,根据其分布密度做出合理的调度;货运公司希望货车沿着指定路线行驶,以防司机私改路线等等。

另外,我国流动人口众多,社会治安形势严峻。偷窃、抢劫车辆的案件时有发生。司机遇到困难或者危险的时候,希望能与外界快速取得联系,获取帮助,紧急情况时公司也希望能对车辆进行定位搜索。

综上所述,车辆监控系统的研究有着重要的现实意义,它有效的缓解了交通压力,提高了汽车使用效率,对车辆进行控制和管理以及合理的安排,保证了车辆的安全。作为车辆监控的核心技术,车辆定位的有效性和成本控制更显得至关重要[2,6]。

1.2 国内外研究现状

GPS车辆应用系统一般分为两大类:车辆监控系统和车辆导航系统,两者的研究和发展相辅相成。现代车辆监控系统的雏形始于上世纪六十年代,美国联邦高速公路委员会开始了车辆电子路径制导系统(ERGS)的研究计划。到了七十年代,随着微处理器的出现,日本和欧洲加入到车辆导航与监控系统的研究中,从而推动了车辆监控技术的发展。七十年代末到八十年代初,出现了第一代采用航位推算和早期地图匹配方法的实验系统,如欧洲的“CITY PILOT”,Philips公司的“CARIN”,德国的“ALL.SCOUT”,英国的“Auto Guide’’等车辆导航系统。八十年代末,GPS卫星定位技术的成熟,使其在车辆监控系统中得到了广泛的应用。但车载GPS接收机通常受到卫星信号状况和周围环境的影响,在不同的时间及不同的地区卫星信号的状况差别很大,特别是在城市地区,由于高层建筑、隧道以及起伏地形的遮挡,GPS信号强度有时只达到海用和空用GPS信号的25%,建筑物的多路径反射也对信号造成很大干扰,导致有时定位精度较低、可靠性不高。

随着GPS定位技术的发展与GIS技术的出现,从九十年代初开始,为了适应新兴的智能运输系统对车辆定位与调度技术的要求,国外开展了以GPS定位技术为主的导航与定位系统的应用研究。目前推出的有法国的CARMINAT车辆定位与调度系统,美国General Motor公司研究实验室研制的TravTek车辆定位与调度系统,日本SUMITOMO电子公司研制的CruiseMate SNV.AD20汽车电子导航系统,Liikkuva公司采用GPS和NavTech地图导航数据库的StreetPC98车辆导航系统,美国Clarion公司开发的基于WinCE操作系统的AutoPC车辆定位与调度系统,美国Clarion公司的TravelPiolt RGS08车辆定位与调度系统以及

Street Guard车辆导航与监控系统,这些系统的共同特别是能提供精确、连续、直观的车辆位置,并且定位与监控系统的稳定性和可靠性也大大提高。

我国GPS车辆监控系统始于上世纪九十年代初期。由于当时市场尚未形成,用户还没有迫切需求,而且技术途径尚不完善,做成的大多是实验室内刚出笼的,还达不到商品化程度,所以成功者不多。1996~1998年期间,GPS车辆监控系统市场经历了整顿、巩固、充实和提高,在对原有的不良系统进行改造的同时,也有新的系统相继出现,还有多个具有水平的集群系统出现。1999~2000年GPS 车辆监控系统市场又出现了新的一波,出现了快速增长的势头,此时的市场逐步趋于成熟,我国的GPS车辆监控系统的技术有了较大的提高与发展。值得指出的是,在GPS车辆监控系统上,我国在应用面和规模上在国际上居于领先地位,但是从系统的技术水平和产品的质量和成熟程度来说,我们还处在发展时期[14]。

1.3 论文的主要工作

本课题主要研究车辆监控系统中车载手机端GPS 定位技术的实现。最终目的为将车辆当前位置的实时信息实时显示于车载手机端的模拟地图上。研究的主要内容包括:Google地图的使用、Android系统卫星定位的实现以及将定位信息表现于Google地图。此外车载端软件具有可扩展性,可在后续的开发中实现导航与监控等实用功能。

论文的主要内容:

第一章为绪言,介绍了课题的研究背景及意义,国内外现状等。

第二章介绍了课题研究所需的技术支持,包括手机地图服务的解释,定位技术的概述,GOOGLE MAP的介绍以及ANDROID系统下的相关类。

第三章为软件的设计及相关技术介绍,包括系统的特点,环境及需求分析,模块介绍,系统流程和相关技术。

第四章阐述了系统的各功能模块的实现。

第五章为系统的测试和测试相关图片。

第六章是对课题的总结,并对以后的发展方向做了展望。

2 系统开发技术概述

本章主要分析了手机地图服务的结构框图及相关的定位技术,并对本系统用到的Google Maps进行了阐述,还给出了Android平台下的位置服务类和地图类。

2.1手机地图服务

2.1.1 手机地图服务的的介绍

手机地图服务是指在手机上利用GPS或者网络实现精确定位,并使用WAP 方式或客户端方式,通过移动通信网络与手机地图应用服务器之间的互联通信,查找自己的位置、搜索地点、查询行车路线的一种与地理信息相关的位置业务。

用户在查询过程中,不仅可以得到相关的文字信息,还可以通过手机终端友好的人机界面得到直观的地图信息[15]。

手机地图查询中的客户端为用户提供了查询的输入接口和与服务器连接的接口,并在手机上显示查询后的地图。服务器端以HTTP方式接收客户端的请求,并根据请求将地图数据以栅格数据的方式返回给客户端。手机地图查询系统的结构如图2.1所示。

图2.1地图查询结构框图

手机端地图是安装在手机上的简易地图文件,详细的地图信息,要通过发送到网络端应用服务器的查询命令解析执行后,再下发到终端进行异步下载。目前的手机地图业务为用户提供地图下载、浏览和各种操作的集合(放大、缩小、查询),以图形、文字的方式显示给用户,满足了用户基本的地图服务要求。手机

地图服务中最重要的就是定位技术[16]。

2.2.2手机地图服务的发展趋势

(1) 大众化

随着社会的发展,人们对地理信息的需求越来越多,从地图服务中人们得到的不仅仅是方便,还有效率和效益。由于人们日常生活中不可能随时随地通过网络获取地图服务,而通过手机获取地图服务是解决这个问题的很好方案,因此手机地图服务的推广必将大大方便人们的生活。

(2) 行业化

手机地图服务作为一项高新技术产业,对行业的影响是积极的。一方面,将位置服务与地图相结合可以提高一些相关行业服务的效率。例如在安全救援行业,手机地图服务可以通过手机定位,及时获取救援对象的位置,并在地图上标识出来,给救援工作带来了极大的便利。另一方面,对一些传统行业加以改造,实现其在新环境下的飞跃。最典型的例子便是物流管理,运用基于手机平台的位置服务,将货物的物理位置在地图上标识出来,并以此为基础,处理物流业务的各个环节。

(3) 电子化。

随着技术的不断发展,手机地图服务将会渗透到更多的行业,但还存在一些限制条件。比如移动通讯网的覆盖范围,虽然目前我国移动通讯网络的覆盖已经非常广泛,但一些偏远地区还存在盲区。

2.2定位技术

移动终端的定位是通过检测移动终端和基站之间传播信号的特征参数来获得其几何位置,根据进行定位估计位置的不同分为两种:基于移动终端定位和基于网络定位。

2.2.1基于移动终端定位

基于移动终端定位是根据目标与各通信基点通信时的相关位置信息来确定几何位置,在蜂窝网络中又叫做前向链路定位。移动终端定位技术包括全球定位系统(GPS)、基于移动终端发送/接收信号的定时或角度的覆盖三角技术(TOA)以及起源蜂窝小区(COO) [17-20]。

(1) 全球定位系统(GPS)

GPS是由美国国防部在70年代开始联合研制的新型卫星导航系统,历时20

年,耗资200亿美元,于1994年全面建成。它采纳了子午仪系统的成功经验,具有全球性,全天候、高精度三维定位的特点。GPS系统主要由三大部分组成:GPS卫星星座(空间部分)、地面监控系统(控制部分)和GPS信号接收机(用户部分)。GPS的定位原理就是根据高速运动的卫星瞬间位置作为已知的数据,采用空间距离后方交会的方法,确定待测点的位置[21]。

(2) 抵达时间TOA(Time Of Arrival)

基于测量信号从移动终端发送出去并到达消息测量单元(3个或更多基站)的时间来定位。移动台位于以基站为圆心、移动台到基站的电波传播距离为半径的圆上。通过多个基站进行计算,移动台的二维位置坐标可由3个圆的交点确定。与E-OTD不同的是,它没有使用位置测量单元,因此,必须通过与在基站上安装了全球定位系统(GPS)或原子钟的无线网络之间的同步来实现[22]。

(3) 起源蜂窝小区(COOCell Of Origin)

起源蜂窝小区定位技术是根据移动终端所处的小区标识号ID来确定用户的位置[23]。移动终端在当前小区注册后,在系统的数据库中就会有相对应小区的ID号。只要系统能够把该小区基站设置的中心位置(在当地地图中的位置)和小区的覆盖半径广播给小区范围内的所有移动台,这些移动台就能知道自己处在什么地方,查询数据库即可获取位置信息。该定位方案的优点是无需对网络和手机进行修改,响应时间短。它的定位精度取决于小区的半径。

2.2.2基于网络定位

基于网络定位是多个固定的通信基点接收目标发送的信号,根据其中相关的位置信息来确定目标的定位信息,在蜂窝网络中又叫反向链路定位。该技术要求定位终端发送或广播一些特定的信号,网络系统负责收集这些信号并担负起定位计算的任务。该定位服务中心的结构如图2.2所示[24]。手机定位是基于网络的实现,通过移动电信运营商的网络固定通信基点获取移动终端用户的位置信息。

移动位置中心组件将定位技术的选择和应用服务的选择隔离起来。位置中心运行于无网络内部,我们可以对它进行修改以适应具体移动设备的能力。当用户通过拨号、发短消息或者WAP发起数据请求时,位置中心的交换机将客户的位置信息发送给相应的位置应用。从信号中获取定位信息包括两个过程:定位参数的测量以及定位算法。因此获得可靠的定位参数是保证高精度定位的前提。从统计的角度来看,由于受到设备测量误差以及信号本身固有的随机性的影响,从定位信号中获得的参数有一定的噪声误差。网络定位技术主要是增强型观测时间差(E-OTD)。该技术的实现原理是:收集对服务小区基站和周围几个基站进行测量的结果,算出测量数据之间的时间差,并用此计算用户相对于基站的位置。增强型观测时间差定位技术是基于网络的定位方案,是目前使用最多的技术,也是欧

洲电信标准化组织(ETSI)建议使用的主要技术[25]。

图2.2定位服务中心结构图

2.3 Google Maps

2004年10月Google收购了总部位于美国加州山景城以矢量地图测绘为主要业务的Keyhole公司[26]。2005年4月,Google正式推出Google Maps,它是一种开放式的免费地图服务,有传统地图、卫星地图和混合地图三种模式。传统地图能为用户规划路线,指引、帮助用户直接确定方向;卫星地图则可以使用户获得当前位置的实拍鸟瞰图;混合地图能让用户更加准确地获得方向感。

2.3.1 Google Maps的特点

(1) 地图预览生成

地图不是根据用户的请求动态生成,而是预先处理成为图片金字塔,切块后做四叉树编码,存放在服务器端。当用户对地图进行移动或者缩放操作时,只需要下载新的图片来填充新的区域[27.28]。

(2) 开发成本

Google Maps提供的API为免费资源,只需要申请一个Key便能使用Google Maps,从地图服务和开发两个方面降低了二次开发的门槛,提高了地图服务水平,对于开发地图服务应用有重要的意义。

(3) 数据更新

Google Maps以矢量地图和高分辨率卫星影像两种数据源提供地图服务,并由Google不定期进行地图更新,用户可以同步享受最新地图信息服务。

2.3.2 Google Maps 显示相关理论

Google Maps 向用户提供的地图数据和卫星影像数据,在客户端上显示的都是常见的栅格图像。这两套数据采用了相同的空间参考系统:基准面为WGS84,投影方式为墨卡托投影。根据缩放的详细程度不同,Google Maps 提供了0.17共18个缩放等级,其中0级缩放最详细,不管是地图数据还是卫星影像数据都采用了图像切片技术,将各个缩放等级的全球数据分割成大小为256*256的prig 图块,而且这些图块的URL 都是不变的。

参数v 为图源数据版本.参数zoom 为缩放等级,取值范围为0~17。在普通地图的URL 中,X 为经度方向斟片编号,Y 为纬度方向图片编号,X 、Y 的取值范围则为0-217-zoom -1;在卫星地图的URL 中,参数t 是“qrst”四个字符排列而成的字符串表示卫星地图的图块编号。

Google Maps 的地图和卫星影像数据预先参照金字塔模式按照不同的缩放等级分别存储。通过简单的URL 预载入图块的方式获得。为获取某经纬度图块的URL ,就需要把经纬度转化为X ,Y 坐标。Google 地图坐标的计算公式如(2.1)所示。

360

2*)180((int)17zoom

x -+=λ ??????

????????????????????+????????? ??-=-zoom pl y 1702*5.0*2246tan ln (int)? (2.1)

其中PL 为圆周率;λ为东经,取值范围为-180~+180度;φ为北纬。Google 对普通地图和卫星地图使用了两种不同的算法对其子图片的位置进行了编码。

2.4 Android 系统相关类

Android 是一个包含操作系统、中介架构层及应用程序所产生出来的软件堆栈架构。由下而上,其核心为嵌入式Linux 2.6作业系统,向上搭配Google 为Android 开发的类库及Android 运行时,再配合应用程序架构,来开发各种不同的应用程序[26]。

2.4.1定位服务类

Android包含了地理定位服务的包android. location,它可以用来获取当前设备的地理位置,另外系统还为应用程序提供了基于GPS和基于网络的定位服务。前者的定位数据来源于位置提供者GPS_PROVIDER,它负责获取GPS模块的定位信息,一般用于设备自身的定位;后者的定位数据来源于位置提供者NETWORK_PROVIDER,它负责从网络获取其它设备或用户的位置信息。android.location中包含了下面一些比较重要的功能类[27]如图2.3。

位置类(Location)——用来代表程序中使用的某个位置,该位置包含经度、纬度、标准时间、高度、测量速度、方位角等内容。

定位管理类(Location Manager)——提供访问定位服务的功能,以实时获取设备的位置信息。当应用程序定义了一个Location Manager对象后,就会搜索系统中所有的Location Provider,从中获取最新的位置信息,还可以指定Location Provider内位置数据的更新周期,及时获取设备位置的变化信息。

图2.3位置定位的相关类

位置提供者(Location Provider)定位提供者的抽象类。定位提供者具备周期性报告设备地理位置的功能。系统中有许多Location Provider,它们提供了各种类型的位置信息。Location Provider既有系统默认的(如GPS PROVIDER),也可以根据应用程序的需要自行定义。所有Location Provider都有各自的使用标准。

定位监听类(Location Listener).提供定位信息发生改变时的回调功能,但必须事先在定位管理器中注册监听器对象。

位置数据标准类(Criteria)使应用能够通过在Location Provider中设置的属性来选择合适的定位提供者[28]。

2.4.2地图服务类

Android平台提供了一个map包com.google.android.maps来支持基于地图服务的应用程序开发,它包含了一系列用于在Google Maps上显示,控制和层叠信

息的功能类,如图2.4所示。

图2.4 Google Maps类

以下是其中比较重要的几个类:

地图类(Map Activity)--用于显示Google Maps的Activity类,此类需要连接底层网络。

显示类(Map View)--用于显示地图的View组件,它必须和Map Activity配合使用。

控制类(Map Controller)--用于控制地图的移动。应用程序用它来设置地图的显示方式。

层叠类(Overlay)--是一个可显示于地图之上的可绘制的对象。

3 终端软件系统设计及相关技术

本章主要阐述了手机地图服务系统的需求分析、功能模块的设计、系统流程和界面设计,并对系统实现过程中所用到的关键技术进行了介绍。

3.1系统设计特点

本系统建立在Android平台上,有以下特点:

开源性:Android操作系统的核心基于Linux的,是典型的开源系统。

可扩展性:满足了手机用户基本的地图服务要求,可进一步扩展系统的功能。

易用性:系统界面设计简单美观,用户不需要培训就可直接使用该服务。

3.2开发环境需求

硬件环境:

由于Android开发需要使用SDK(虚拟机),虚拟机需要PC空出一块内存来模拟手机内存卡(一般500M)。所以PC本身的内存应不小于1G。

软件环境:

Eclipse 开发工具;

JA V A JDK6.0或以上;

JA V A JRE6或以上;

ANDROID SDK。

3.3需求分析

手机地图的主要功能是以图形、文字的形式为用户提供地图服务,并提供友好、方便、快捷的操作界面。一个成功的Android应用程序往往需要提供良好的用户体验。良好的用户体验体现在以下几点:

(1)界面友好

用户界面要简洁直观,并且易于操作。本系统中地图能够进行放大、缩小和移动;

(2)快速响应

快速处理用户的输入或请求,对于有些需要较多时问的应用程序,可以在它处理时,给用户一个提示,让用户知道程序还在运行中;

(3)可扩展性

车辆定位距更有价值的车辆监控及控制还有一定距离,所以程序需要有足够的扩展性,为以后相应功能的添加提供基础。可扩展的功能包括,界面的扩展,位置查询,导航功能,与主机的实时监控功能等。

3.4系统功能模块

系统旨在建立Android 系统的地图服务,主要有如下几个核心功能模块。利用GPS 提供的定位服务,确定用户目前在城市中所处的地理位置,将位置显示在地图上,并给出用户当前的地址和经纬度,且能随着位置的变化而实时更新,使用户能实时得到最新、最准确的位置信息,如图3.1所示。

图3.1 定位系统功能结构图

3.5系统总体流程图

启动模拟器后,系统首先打开

GPS 模块得到当前地理位置,然后将该地理位置转换为可定位于MAP 的地址。同时系统初始化屏幕上的基础视图以供后续绘制。之后系统内置控制器完成将所得地址具象化于地图的过程。最后系统中的绘图模块完成将已定位的地图绘于屏幕。紧接着实时刷新模块启动。界面实时更新。整个流程如图3.2所示。

3.6界面设计

程序启动后,屏幕上直接以map 的形式显示。当前位置以绿色图标标示,地图可放大缩小及拖动。随着终端的移动,地图实时刷新。设计效果如图3.3所示。

图3.2 系统总体流程图

图3.3 用户界面效果图

3.7系统关键技术

在Android平台下开发手机地图服务采用的关键技术如下。

3.7.1 Android权限的获取问题

Android安全中的一个重要的设计点是在默认情况下应用程序没有权限执行对其它应用程序、操作系统或用户的有害操作。这些操作包括读/写用户的隐私数据(例如联系方式或e.mail),执行网络访问,保持设备活动,等等。应用程序的进程是一个安全的黑盒子,它不能干扰其它应用程序,除非给它声明权限,现对权限的命名和获取问题做下说明。

(1)权限命名

一个基本的Android应用程序没有与其相关联的权限,意味着它不能做任何影响用户体验或设备中数据的有害操作。在应用程序需要时,可在AndroidManifest.xml文件中列举一个或更多的标签来声明此权限。

例如:需要监听来自SMS消息的应用程序将要指定如下内容:

(2)在AndroidManifest.xml文件中支持权限

通过AndroidManifest.xml文件可以设置高级权限,用来限制访问组件或应用程序。所以如果要访问某组件,需要在这个文件里声明一个权限,现对跟本系统有关的组件权限做以下说明。

①Activity权限(使用标签)限制能够启动与Activity权限相关联的组件或应用程序。此权限在Context.startActivity()和Activity.startActivityForResult 期间要经过检查;如果调用者没有请求权限,那么会为调用抛出一个安全异常。

②BroadcastReceiver权限(使用标签)限制能够为相关联的接收器发送广播的组件或应用程序。在Context.sendBroadcast0J压_回后此权限将被检查,同时系统设法将广播递送至相关接收器。因此,权限失败将会导致抛回给调用者一个异常。

3.7.2 Android用户界面构建问题

在Android平台下开发应用软件,最重要的是布局问题。一个好看而又简洁

的界面,是相当重要的,既能提高使用者的体验,又保证应用的高效执行。Android 生成用户界面有三种方式:xml配置生成、通过用户自己的界面接口生成和直接用代码生成。对于一个Activity应用来说,android.app.Activity类是一个最基本的功能单元。一个Activity实例可以做很多的事情,但是它本身无法显示在屏幕上,而是借助于View group和View,这两个是Android平台上最基本的两个用户界面表达单元。下面介绍下主要的布局对象:

线性布局(Linear Layout):以单一方向对其中的显示对象进行排列显示。

如以垂直排列显示,则布局管理器中将只有一列;如以水平排列显示,则布局管理器中将只有一行。同时,还可以对个别的显示对象设置显示比例。

表格布局(Table Layout):以拥有任意行列的表格对显示对象进行布局,每个显示对象被分配到各自的单元格之中,但单元格的边框线不可见。

绝对布局(Absolute Layout):允许以坐标的方式,指定显示对象的具体位置,左上角的坐标为(0,0),向下及向右,坐标值变大。这种布局管理器由于对象的位置固定了,所以在不同的设备上,有可能会出现不一样的显示效果。

相对布局(Relative Layout):允许通过指定显示对象相对于其它显示对象或父级对象的相对位置来布局。一个按钮可以放于另一个按钮的右边,或者可以放在布局管理器的中央。

对于Android应用中的一个屏幕,它的屏幕元素是按层次结构来描述的。要将一个屏幕元素层次树绑定在一个屏幕上显示,Activity会调用它的setContentView()方法并且传入这个层次树的根节点引用。

3.7.3地址与地理坐标的转换

这两个功能的实现需要有Internet的连接。

(1)地址向地理坐标的转换

在Android中用户可以通过Geocoder对象,利用程序控制的方式,输出地址的字符串,反查GPS地理坐标。Geocoder反查Address对象的服务没有任何限制,不过,实验证明以地址反查坐标的返回结果,似乎有笔数的限制,如果反查过多笔数,可能发生无返回地标的情况。所以,在输入地址查询时,应尽可能输入完整地址或者常用的地标语句。

传入的地址,用Geocoder.getFormLocationName()方法来取回自Google服务器找到的搜索结果,以List

存放,接着再以List.Get()来取出Address 的对象,使用Address.getLatitude()及Address.getLongitude()进一步取得经纬度,最后以GeoPoint的对象作为返回值使用。

(2)地理坐标向地址的转换

通过传入的Location对象来反解GeoPoint的函数getGeoByPoint(),首先创

相关主题
相关文档
最新文档