《基于android的移动空间信息服务研究new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
辽宁师范大学硕士学位论文基于Android的移动空间信息服务研究姓名:怡凯申请学位级别:硕士专业:地图学与地理信息系统指导教师:王方雄20090601 摘要移动空间信息服务(MobileGeospatialInformationService,M.GIS),是将Intemet上的海量信息和地理信息系统的强大应用服务功能扩展到移动终端上,为移动用户基于位置的信息交换、信息获取、信息共享和信息发布提供了便捷、经济的技术途型¨。本文简要介绍了Android平台的体系结构,对平台的地图模块做了详细的介绍,并对平台自带的SQLite数据库以及平台的可视化界面设计组件进行了简要的介绍,在系统设计中提出了基于Android的M.GIS的体系结构并给出了技术路线,打破了传统的基于矩阵存储的公交查询算法设计思路,提出了集合概念下的移动公交查询算法,并设计了系统用户界面与公交查询算法数据库,通过对平台定位接口提供的定位与定向API的使用,调用getSystemService()方法来实现定位功能,同时,利用地图接口提供的MapView这个类与MapActivity接口,调用getController()、ItemizedOverlay()、draw()等方法,对地图进行各种操作,同时在Map上绘制overlays以及其他信息,实现地图操作模块与图层绘制模块功能,通过SQLiteDatabase类的openOrCreateDatabase()、rawQuery()等方法,实现对数据库的打开与查询操作,同时,通过Java语言编程,创建了公交查询算法用到的线路类、换乘方案类等等,实现了公交信息查询模块,利用平台的intent机制,挖掘系统集成的驾车导航、兴趣点搜索、通讯录等功能模块,对系统请求的uri进行解析,以访问空间数据库,获取用户需求信息。本文在Eclipse3.3平台下结合Android1.5SDK与ADT0.9.0插件搭建开发环境,开发出一个基于Android的移动公交信息查询系统——BusFinder,该系统包含公交信息查询、兴趣点搜索、驾车导航、定位模拟等功能,并在GoogleMap上采集了4条典型的公交路线共18个典型站点的空间与属性数据进行测试,系统运行良好。关键词:Android;移动空间信息服务;公交信息查询;驾车导航;兴趣点 ABSTRACTMobilespatialinformationservice,istoprovideaconvenientandeconomicalwayforthemobileuseroflocationbasedinformationexchangingandacquistionandinformationsharinganddisseminationbyexpandingthemassofinformationontheinternetandthepowerfulapplicationserviceofgeographicinformationsystemtothemoblieterminals.ThispaperintroducestheAndroidplatformarchitectureandhasdoneadetailedintroductionofthemapAPIoftheplatform,aswellastothebuiIt—inSOLitedatabaseoftheplatform,briefintroductionofthevisualizationinterfacedesigncomponentsismade.PutforwardaM—GISarchitecturebasedontheAndroidplatformandgivesatechnologyroadmap,makeamobilequeryalgorithmofbusroutesinfromationbybreakingthetraditionalmatrix—basedway,atthesametime,systemuserinterfaceanddatabaseforthebusroutesiSdesigned.BytakingadvantageoftheAPlwhichprovidedbythelocationinterface,callingthegetSystemService0methodtomakethefunctionoflocationcometrue,aswellasusingtheclassofMapViewandtheAPIofMapActivitywhichprovidedbythemapsinterface,callingmethodsofgetController0,Itemizedoverlay0,draw0andSOontooperatethemapandalsodrawingtheoverlaysinfromationonthelayerabovethemap.BycallingthemethodsofopenorCreateDatabase0andrawQuery0andSOontoachievetheoperationofopeningandquerying.ByworkingwiththeJavalanguage,creatingtwoclassesnamedlineandprojectinfoforthebusroutesqueryalgorithmtoachievethepublictransportationinformationqueryingfunction.Bytakingadvantageoftheintentfunctionoftheplatform,excavateandinheritthefounctionswhicharealreadypackagedintheplatform,suchascontacts,drivingnavigation,searchingforpointsofinterest,resolvingtheURlwhichthesystemrequeststoaccessthespatialdatabasetoobtaininformationfortheuser.Inthispaper,combinedtheEclipse3.3platformwiththeAndroid1.5SDKII andADT0.9.0developmentenvironment,developeanAndroid—basedmobilepublictransportationinformationsystems—BusFinder,thissystemincludespublictransportationinformation,pointsofinterestsearching,drivingnavigation,locationsimulatingSOon,collectingthespatialdataarributedataof4typicalbusroutesinclude18typicalbusstationsontheGoogleMaptotestthesystem,anditworkswell.Keywords:Android:mobilegeospatialinformationService:publictransportqueryinformationsystem;Drivingnavigation:pointsofinterestIII 学位论文独创性声明本人承诺:所呈交的学位论文是本人在导师指导下所取得的研究成果。论文中除特别加以标注和致谢的地方外,不包含他人和其他机构已经撰写或发表过的研究成果,其他同志的研究成果对本人的启示和所提供的帮助,均已在论文中做了明确的声明并表示谢意。学位论文作者签名:学位论文版权的使用授权书本学位论文作者完全了解辽宁师范大学有关保留、使用学位论文的规定,及学校有权保留并向国家有关部门或机构送交复印件或磁盘,允许论文被查阅和借阅。本文授权辽宁师范大学,可以将学位论文的全部或部分内容编入有关数据库并进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文,并且本人电子文档的内容和纸质论文的内容相一致。保密的学位论文在解密后使用本授权书。学位论文作者签名:签名日期:指导教师签名:年夕月刊日 基于Android的移动空间信息服务研究1绪论位置是人们理解和驾驭世界的基础【2】,人们在快节奏的社会活动中,迫切想知道当时所处的环境信息,比如“我在哪?”、“到海事大学最短的路线是什么?”、“我附近有没有ATM’’等等。随着空间信息技术、移动通信技术、Intemet技术以及移动终端技术的快速发展,人们对所处位置以及与位置相关的信息需求愿望实现成为可能。应运而生的移动空间信息服务(MobileGeospatialInformationService,M.GIS)是上述技术的有机集成,它将Intemet上的海量信息和地理信息系统(GeographicInformationSystem,GIS)的强大应用服务功能扩展到移动终端上,为移动用户基于位置的信息交换、信息获取、信息共享和信息发布提供了便捷、经济的技术途径【I】。随着移动终端计算能力与存储能力的日益增强以及移动通信技术与互联网技术的飞速发展,基于移动终端的M.GIS所占的比重越来越大,在M.GIS中扮演着愈来愈重要的角色【3】。在移动客户端开发技术上,先后出现了基于WAP浏览器、基于J2ME以及Android开发平台。基于WAP浏览器的开发技术由于其典型的“瘦客户端”特点,导致客户端与服务器端之间存在大量数据交换,加上当前的无线网络带宽瓶颈,用户的数据共享与体验十分有限;与之不同的是,基于J2ME的开发技术要求大部分软件功能在客户端实现,即采用“胖客户端”技术,但其对硬件的性能要求较高,并且开发者需要做大量的代码工作,虽然代码的可移植性好,但相对来讲,开发的技术门槛较高;而Android开发平台采用开源的Java技术,平台集成了地图服务模块,并对核心系统架构进行了优化,对硬件的性能要求较低,加上其独特的intent模块机制,使移动空间信息系统服务开发门槛出现了划时代意义上的降低。Android平台是由Google联手34家公司组成的开放手机联盟(OpenHandsetAlliance,OHA)推出的开放源代码的一个开放性的移动开发平台,它采用Linux内核,独特的Dalvik虚拟机,集成特有的地图模块、快捷的XML布局方案、轻量级的SQLite数据库、高效的2D、3D绘图方案以及多媒体技术等等,它具有强大的网络访问功能,集成3G网络与WiFi、蓝牙等无线网络技术【9J,并且可以对开发者之间的功能模块进行无缝继承与共享,高效的功能模块重用让开发的周期更短,开发难度更低,结合日益完善的移动定位技术,移动用户的M.GIS体验愈来愈好。Android是一个真正意义上的开放性移动设备综合平台,基于Android进行移动空间信息服务开发,可以很容易地利用GoogleMaps地图资源以及开放的API接口,可以说,基于Android的移动空间信息服务,是移动终端M—GIS开发道路上的一个里程碑。 基于Android的移动空间信,皂服务研究1.1移动空间信息服务系统当今世界,在飞速发展的信息领域,有两支突飞猛进的支柱产业,一是移动通信;二是互联网。几乎最新的信息、通信、电子、计算机方面一切新技术,无不为这两大支柱产业所吸收和采纳。它们的网络覆盖愈来愈大,主干网、接入网、宽带无线接入和移动无线接入研究的如火如荼,传输速率越来越快,用户终端的体积愈来愈小,性能越来越高,设备和服务的价格大幅度下降。移动通信和互联网作为人类迈向信息社会的两个重要标志,分别对应着海量信息资源的有效访问和随时随地漫游的个人通信。随着移动通信与计算机网络技术及应用服务需求的双重驱动,如何有效地结合两者的技术优势,为移动用户提供不受网络信息源和用户访问位置限制的网络信息服务成为计算机网络界和移动通信界共同关注的焦点。移动通信和互联网的发展与整合使人类正在进入以移动互联网为中心的移动信息服务时代。移动互联网不是传统互联网和移动通信的增强或补充,而是两者在技术上和应用上实现了有机的融合,出现了质的飞跃。移动互联网技术扩展和立体化网络通信基础,使得计算机网络更加广泛渗透,无所不在。网络连接不再只是计算机的附加成分,而成为必须,而且连接不再与物理位置紧密相关,而成为独立于位置的概念。这是一种更加灵活与复杂的分布式计算环境,人们称之为“移动计算环境”。在移动计算环境下,用户可以使用移动终端通过无线通信接口实现对信息网络的访问,而不受实际物理位置变化的影响。这种计算模式在越来越多的领域中发挥了不可替代的作用。移动计算是计算技术和移动互联网技术相结合的一直全新的计算模式,其作用在于:将有用、准确和及时的信息与中央信息系统相互作用,分担中央信息系统的计算压力,使有用、准确、及时的信息能提供给在任何时间任何地点需要它的任何用户,为之提供相应的空间信息服务。地理信息系统自20世纪60年代萌发以来,一直是地理科学与地球系统科学中最富有生命力,发展速度最快的技术。随着计算机软、硬件技术的高速发展,特别是Intemet和移动通信技术的发展,GIS由信息存贮与管理的系统发展到社会化的、面向大众的信息服务系统【7】。M.GIS系统是GIS、GPS、移动通信、互联网服务、移动终端等的有机集成,是移动GIS的一种具体实现,它必须承载在一定的载体上才能提供给最终用户,这就注定了M.GIS系统必须与电信运营商合作,需要电信运营商、空间信息服务提供商、空间数据生产商等合作共同开发这个市场。M.GIS系统有非常宽广的应用领域,因为在资源管理、社会政治经济活动和人们生活中,有80%以上的信息属于具有空间位置特性的地理信息。同时,作为承载在互联网上的应用服务,把GIS应用从地理信息的管理、决策支持、一些公共管理部门的应用中扩展开来,提供多样的与空间位置有关的信息服务,加快了GIS应用的社会化进程。2 基于Android的移动空间信,包服务研究1.1.1移动空间信息服务系统的体系结构M—GIS系统作为一种信息服务,定义了未来空间信息服务和移动定位服务的蓝图,即当用户与现实世界的一个模型交互时,在不同时间、不同地点,这个模型会动态的向不同用户提供不同的信息服务。移动用户与这个模型交互时,用户的视图将随着用户角色和环境的变化而变化。它的体系结构由客户端、服务器和数据源三部分组成,分别承载在表现层、逻辑层和数据层【l01。表现层:该层是客户端的承载层,直接与用户打交道,它支持多种客户端软件,主要有WAP浏览器、w曲浏览器和应用程序(如J2ME、Android应用程序)等。支持的终端设备包括笔记本电脑、掌上电脑、移动电话、车载终端以及其他各种嵌入式设备。逻辑层:该层包括无线网关、Web服务器和M.GIS应用服务器等组成部分。无线网关主要是扩充移动设备的处理能力,把移动终端不能处理的功能放在无线网关上。Web服务器主要处理与HTTP有关的请求,同时作为GIS应用服务器的客户,对用户的请求进行转换和打包处理。GIS应用服务器是整个移动GIS系统的核心部分,一方面通过后端的空间数据库管理系统获取空间数据,另一方面对空间数据进行各种空间处理与转换,向Web服务器提供响应。利用逻辑层的多层架构,结合服务器机群和各服务器提供的线程池的实现机制,可以很好地处理负载平衡问题。数据层:主要指数据服务器。数据服务器就是管理空间数据和属性数据的空间数据库管理系统。空间数据库是M.GIS的数据存储中心,是GIS应用服务器完成各种处理功能的数据源,是分布式的。主流的解决方案是采用关系型数据库管理系统加空间数据引擎的对象关系型数据库管理系统。数据服务器在M—GIS系统中充当数据泵的作用,它使得移动终端可以和多种数据源进行交互,屏蔽后端固定网络连接的差异,优化查询条件,提供无线长事务处理,使M.GIS系统具有量化的灵活性和适应性。1.1.2移动空问信息服务系统的主要特点(1)基于无线网络。M.GIS系统运行于移动互联网,移动终端可以随时、随地地移动,满足了一些行业在野外对GIS的实时操作与企业数据访问;满足大众服务的移动GIS,大多是运行于手机等智能终端上,可以随时随地获得用户周围环境的各种信息。(2)移动终端的多样性。常见的移动终端有手机、掌上电脑、车载终端等,它们采用操作系统的多样性使得移动GIS必须考虑这种多样性,提供能运行于诸多终端的空间位置服务。(3)信息载体的多元化。移动终端可交互的信息除文本、图形和图像外,还包括语音、音频与视频等多媒体信息。这就意味着计算能力有限的移动终端需要处理更多类型的数据,如何合理地利用信息表现能力有限的移动终端来表达如此丰富的信息成为一个有待 基于Android的移动空间信息服务研究解决的问题。(4)信息服务的实时性。移动GIS作为服务系统,应能及时响应移动用户的请求,能提供处理突发事件的能力,如交通事故、出行车队、交通管制与交通堵塞等;应能处理移动环境中随时间变化因素的实时影响,如交通流量对车辆运行时间的影响,能提供实时交通流量影响下的最优道路选择等。(5)移动性。终端不仅可以在不同地方接入无线网络,而且在移动的同时可以保持网络连接,通过无线网络保持与固定结点或其他移动结点的连接。这种计算平台的移动性可能导致系统访问布局的变化和资源的移动性。1.2移动空间信息服务的研究现状移动用户基于移动互联网可以从M—GIS系统获得随时、随地的空间信息服务,不受系统平台和线缆连接等的限制。在GPS或移动通信网络定位技术支持下,M.GIS系统提供的就是基于位置的服务,即能确定移动用户的地理位置,并能随时、随地提供与此地理位置相关或指定位置的空间信息服务,因其巨大的商业价值,受到业界的高度关注。M.GIS充分利用了无线移动的方便性与灵活性,也体现了大部分信息与位置相关的客观事实,使GIS应用进入了一个全新的时代。1.2.1移动空间信息服务的客户端实现技术M.GIS系统由客户端、服务器和数据源三部分组成,与用户直接打交道的是客户端,因此,移动空间信息服务的用户体验,关键也在表现层,也即客户端软件的体验。目前,主流的M.GIS客户端实现技术有三种:基于WAP浏览器、基于J2ME和基于Android的客户端实现技术。(1)基于WAP浏览器的实现技术无线应用协议(WirelessApplicationProtocol,WAP)类似TCP/IP,以无线标记语言WML和脚本语言WMLScript出来WAP网页。WAP作为一种通信协议和应用环境,为无线数据应用提供了统一的平台,支持当前所有嵌入式操作系统,如WindowsMobile,PalmOS,EPOC,嵌入式Linux,JavaOS和SmartPhone等。基于WAP的解决方案由三部分组成,即WAP网关、WAP手机和地图服务器,这三方面缺一不可。其中WAP网关起着协议的‘翻译’作用,是联系无线网与万维网的桥梁;内容服务器存储着大量的地图信息,以提供WAP手机用户来访问、查询、浏览等。当用户从WAP手机键入他要访问的WAP内容服务器的URL后,信号经过无线网络,以WAP协议方式发送请求至WAP网关,然后经过“翻译",再以HTTP协议方式4 基于Android的移动空间信息服务研究与地图服务器交互,最后WAP网关将返回的内容压缩、处理成数据流返回到客户的WAP手机屏幕上,编程人员所要做的是编写地图服务器上的程序或者是WAP网页。由此可以看出,基于WAP浏览器的解决方案是一种“瘦客户端”的服务模式,绝大部分的数据处理过程都集中在服务器端,客户端与服务器端的矢量或栅格空间信息数据量交换巨大,当前网络传输速度很大程度上制约着移动者的用户体验。(2)基于J2ME的实现技术J2ME(Java2MicroEdition)是Sun公司于1999年6月推出的Java运行和开发平台,定位于消费产品和嵌入式设备的应用。J2ME具有很好的跨平台性,支持的设备包括PDA、蜂窝式电话、电视机机顶盒、远程遥控装置和许多其他嵌入式设备,存在着很大的灵活性。在PDA上,客户端可以作为一个小型地图服务器来运行,通过无线网络下载用户所需的数据;在蜂窝式电话上,客户端可以像WAP解决方案一样的运行,同时还可以通过客户端软件提供更多个性化的服务;在其他的小型嵌入式设备上客户端可以作为一个小型的WAP网页解析器运行,为用户提供基本的服务。与基于WAP浏览器不同的是,基于J2ME的平台应用,是典型的“胖客户端”应用程序开发,开发者需要在移动终端上实现M.GIS的几乎所有功能,包括地图数据的解析、地图浏览、缩放、信息查询等等,开发的难度比较大,由于需要在终端处理空间信息,包括地图数据的解析与生成等,对终端设备的配置要求相对比较高,不适于做移动空间信息服务开发平台。(3)基于Android的实现技术Android开发平台是由Google公司与OHA合作开发的一个开放、自由的移动终端平台,它由操作系统、中间件、应用软件三部分组成。该平台备有完善的程序开发环境,包括模拟器、除错工具、程序执行所耗用存储器、性能评价等功能。平台提供了两个基于位置服务的地图API开发包:android.10cation以及com.google.android.maps.通过对这两个地图API开发包内与位置服务相关的类的使用,配合设备本身具备的定位定向等相关模块,可以很好地实现对用户移动空间信息服务应用程序开发。Android以其集成的独特的地图服务模块,以及对硬件性能的低要求,对3G等无线网络的迅捷访问功能,为普通用户开发移动空间信息服务带来了很大的便利,它的出现,为解决用户移动空间信息需求提供了高效的开发平台。Android平台继承了Java语言的可移植性,Google内部工程师仅用三个小时就成功将Android系统移植到Nokia一款手机上,这对于开源开放的开发平台来讲,是非常有发展前景的。由于其集成的地图服务模块,独特的intent模块共用机制,开放并开源的特性,以及其灵活的可移植性,对系统性能的低要求特性,比起主流的WindowsMobile、Symbian、Blackberry、苹果的iPhone以及Palm新推出的WEBOS系统,都显示出它在开发上的优势,可以预见Android平台在移动设备开发方面的前景是很乐观的。5 基于Android的移动空问信息服务研究随着3G网络与无线局域网的快速发展,基于Android的移动空间信息服务平台开发会在很大程度上取代J2ME和基于WAP浏览器开发平台,由于开发的门槛大大降低,普通的开发者也可以参与进来,广泛的用户参与以及良好的用户体验让基于Android的移动空间信息服务开发得到了快速的推广。1.2.2移动空间信息服务的应用领域人们对于地理信息以及位置信息的需求是与生俱来的,能随时随地得到各种丰富的个性化的与位置相关的服务是人们长久以来的梦想,可以说,该领域已有和潜在的用户群是巨大的。位置信移动空间信息服务息类型公众(个人)企业政府联系最近专业服务人位置敏位置个人位置查询员寻找企业位置感报告车抛锚了需要本地培训服本地公众通事件帮助医疗急救务交通警报告事故警报在人口稀少地区高速增长趋增长模式人均分布购房度假计划势销售模式绿地面积私车位置保险税派出的维修车的位清洁车位置资产监控率最低的地方置资产状况评估道路维护当到达目的地时特定类型的顾客位置经济发展区域定点服务通知我商店位置特定对象的广告新行政分区到达路线最好的递送路交通模式紧路线最快路线线出租车派遣急事务派遣事件发最近可见的界标旅馆附近有什么寻找经济合作规生环境寻找最近的目标离机场最近的出租车划区域贸易寻找最近的专家哪特定距离内最好的供公众服务目录服务几能找到需要的商品应商最近的维修服务点外部采购6 基于Android的移动空间信息服务研究如何运费最低在低费用分布服务出租车税率位交易特定区域内购买位置相关的交易置相关征税寻找建房地点可能的仓储地点新建学校地点环地点旅行地点参考最佳蜂窝基站位置境监控站地点上表列出了移动GIS服务的应用需求,这些应用需求,基本上涵盖了公众、企业和政府对与位置有关的信息服务需求,也是移动GIS系统可以提供的服务种类,同时也表明移动GIS服务的巨大商机与市场前景。因此,根据移动GIS服务的市场行为主体,其应用领域可以分为公众应用、企业应用和政府应用。其中,公众应用里边包括个人服务与车辆用户服务。(1)个人服务针对移动用户,利用移动定位技术来提供个人定位服务。例如对商务人员而言,可以确定在一个陌生城市中的位置,为其商务旅行计划安排目的地,并提供在当前位置制定范围内餐饮、旅店的详细情况等诸多有价值的信息。当需要通知别人参加会议时,可以将开会通知附上位置信息或留言,直接发送到对方的手机上。在旅行时,可以通过有关的服务中心获取就近的宾馆信息等。可以对需要限制活动范围的移动目标进行定位跟踪监视,如儿奄、某些老年病患者或假释期的犯人等。当然,因为需求的不同,系统所能提供的个性化服务也不同。另外,根据市场预测,结合当前位置的移动游戏也将在未来为广大用户提供全新的体验,并进一步发展成为一个重要的服务内容。在用户许可的情况下,商店、餐馆和娱乐场所等服务性行业的经营者可以在用户到达一定范围内时,向用户提供自己的各种服务信息,并以短消息的形式通知用户。这既可以极大地方便用户,同时对该行业的发展也将是一个巨大的促进。(2)车辆用户服务针对驾车行驶的用户,车辆导航服务在搭配上第三方所提供的语音识别软件将是他们最好的选择。另外,还可以利用该系统跟踪船队、车队以及贵重物品的运输,了解用户所在位置及移动情况。以上两种公众应用方式采用的信息服务模式,即为移动GIS所提供的移动空间信息服务。1.3论文的研究内容和组织结构本文共分为六章:7 基于Android的移动空间信息服务研究第一章介绍本文的研究内容和研究意义。简要介绍了移动空间信息服务的体系结构与特点,阐述了M.GIS的客户端实现技术与应用领域。第二章介绍基于Android的移动空间信息服务技术。首先对Android平台做了详细介绍,重点对Android平台的地图模块进行了分析与阐述,对SQLite数据库以及可视化界面设计组件进行了介绍。第三章介绍基于Android的移动空间信息服务系统设计。本部分介绍了基于Android的M.GIS的体系结构与开发的技术路线,阐述了公交查询算法,设计了用户界面与数据库。第四章介绍移动空间信息服务系统的开发过程,是本文的重点,介绍系统的地图操作模块、数据库访问模块、信息查询模块、图层绘制与标注模块的实现过程,第五章介绍移动空间信息服务系统的原型,分别从系统实现的几个功能进行原型系统说明。第六章是全文的小结并提出展望。8 基于Android的移动空间信息服务研究2基于Android的移动空间信息服务技术选择以Android作为M.GIS系统开发平台,最主要是因为该平台集成的地图模块,这是其他以往开发平台从来都不具备的,并且OHA承诺Android平台最终要完全开源,这也是为什么Android在推出之初就迅速获得了很多开发人员青睐的原因。平台集成的地图模块、轻型的SQLite数据库、可视化的界面设计方案、简洁的开发环境搭建、SDK配搭的多样化Demo源代码等等,很大程度上降低了开发的门槛,即使不具备多少开发经验,通过对平台提供源代码的了解,也很快会入门,这使得Android很容易被开发人员作为M.GIS开发平台的首选。2.1Android简介2007年11月12日,由Google发起并联合三十三家公司组成的OHA推出了这个被称作Android的移动开发平台。OHA有五类成员,其中包括半导体芯片制造商龙头英特尔,手机制造商T-Mobile、HTC、摩托罗拉,移动运营商中国移动通讯,以及软件应用服务提供商等等。每一个成员都将为Android这个软件平台的开发提供他们各自相应的价值储备,促成该平台在移动开发领域的快速发展。Android是一个专为移动设备设计的软件平台,包括一个操作系统、中间件和一些关键的平台应用程序。最新发布的AndroidSDK提供了使用Java语言开发Android平台应用的必要工具和API。该平台不同于以往的空间信息服务开发平台,它对系统的要求较低,200MHZ的最低处理器配置要求,内置了地图服务模块,利用3G网络等无线网络的高速传输条件,开发者只需简单的两行代码即可将Google的地图资源显示在移动终端上,三行代码即可实现缩放、浏览、卫星图/地图模式切换等等,当然,在数据提供商授权下,也可以利用网络上的其他数据资源来实现客户端的友好体验。该平台支持轻量级数据库SQLite,用户数据可存储在本地,有效避免了对服务器的多次访问,大大提高了用户对目标数据的访问速度。具有最佳的2D与3D绘图能力,2D方面,Android用一套特有的函数库,而3D方面则使用OpenGLES1.0规范的函数库,方便快捷地实现2D、3D绘图,比如,采用不同风格在客户端绘制最短路径,在客户端标定用户位置,并实现GPS位置更新,实现车辆运行轨迹回放等等,为用户提供高效的移动空间信息服务体验。图2.1描述了Android平台的整体框架结构。9 基于Android的移动空间信息服务研究APPLICATIo雷、jSMaplPhonel}Email1......IlIAPPLICATIoNFRAMEWORKLocationActivityContentXMPPManagerProvidersServicesANDRoIDRI腻TIM[ELIBRARlESCoreLibrabriesSQLiteOpenGLIESWebKitMediaSurfaceSSLDallVikachVinirtle】alIFrameworkManagerLn、nD(KER卜neL图2.1Android的框架结构Android平台的整体框架结构,自下而上分为操作系统、中间件、应用程序三个主要的组成部分。最下面的部分表明操作系统采用嵌入式Linux,主要负责实现安全、存储器管理、进程管理、网络堆栈、驱动程序模型等系统功能,包括各种各样的运行方式,里面有一个叫Pormanagement[18】,在传统的Linux里面对手机的支持不是特别的强大,这里对它做了优化,以更好地达到对移动设备开发的支持。最上面的部分是平台提供的简单的应用程序模块,如网页浏览器、电子信件收发的用户端程序、短信收发程序、日历、地图、通讯录等。介于操作系统与应用程序之间的即为Android中间件,中间件是构成Android的核心部分。它分为底层——库和运行时环境,上层——应用程序框架,里面有各种各样的基础的库,实现各种各样的应用必须要有提供这些功能的基础的库,右边的框是整个中间件部分的核心,它包含着Dalvik虚拟机,下面会详细描述。Linux核心与中间的库都是用C语言或者C++语言实现的,其余,除了DVM以外,都是用JAVA实现的,这里面有需要的一些必须的模块,比如说显示系统,左边有一些系统服务,这个就是必不可少的模块,包括和显示有关的,怎么去管理,怎么打电话,来信息怎么办,通过这个通知用户。Android平台虽然是使用Java程序语言来开发、撰写应用程序,但却不使用JavaRuntime来执行Java程序,而是用Android自有的AndroidRuntime来执行。AndroidRuntime内有两个重要元件,一个是CoreLibraries(核心函数库),另一个则是DalvikVirtualMachine(Dalvik虚拟机器)。核心函数库里包含了绝大多数Java程序语言所需要调用的函数,每一个Android应用程序都会以自属的进程来执行,而且Android不是用10 基于Android的移动空间信息服务研究一个Dalvik虚拟机器来同时执行多个Android应用程序,而是每个Android应用程序都用一个自属的Dalvik虚拟机器来执行。由于Dalvik虚拟机器在开发初期就是以能够同时执行多个虚拟机器的设想来撰写的,因此即使同时开设与执行多组虚拟机器个体,也不会影响应用程序的执行效率。在Android1.5版本里引入了AVD(AndroidVirtualDevice)概念。AVD是一个经过配置的模拟器。在创建AVD时可以配置的选项有:模拟器影像大小/触摸屏/轨迹球/摄像头/屏幕分辨率/键盘/GSM/GPS/Audio录放/SD卡支持/缓存区大小等,任何一个android应用都必须运行在一个AVD。如果没有制定或自动找到合适的AVD,会报如下类似错误::FailedtOfindanAVDcompatiblewithtarget”AndmM1·I”·Launchaborted.AVD必须指定target,SDKl.5中目前有两种target类型,共三个target,类型包括:Platform与Add-on,Platfornl是Android的平台target,Add.on是android的插件target。这三个target分别为:Android1.1,Android1.5,GoogleAPIs,在创建AVD,选择target时要注意:●target的APIlevel很重要,应用的APILevel要<=AVD的Target的APILevel,否则应用不能运行。应用的APIlevel在AndroidManifest.xml中定义。·最好建立一个APIlevel最大的AVD,测试应用在高版本AVD之上的兼容性。·如果应用使用了add.on插件(在manifest中声明了user-library),那么要部署到的AVD的target需要指定为add.on类型。现在的SDK1.5有三个target,可以预见,随SDK的升级以及add—on的扩展,会有新的target增加进来。可以通过androidlisttarget查看系统中有哪些target。通过EclipseADT运行应用时,ADT缺省会自动找合适AVD作为模拟环境运行apk。也可以不让ADT自动找,而手工指定,方法就是在RunConfigurations中设置,任意指定一个系统中存在的AVD(瓜lrD会自动列出所有的AVD供选择)。引入了AVD后,做兼容性测试就比较容易了。可以根据需要创建多个AVD,每个AVD代表一种机型/版本。同时,Android使用一个特殊的被称之为Intent的类来从一个窗口移动到另一个窗口,一个Intent描述了应用程序想做什么事情。Intent的数据结构中两个最重要的部分是活动和活动之上的数据。活动的典型的值是MAIN(thefrontdooroftheactivity),VIEW,PICK,EDIT等等,数据被表示为一个URI。还有一个相关的类叫IntentFilter。当一个Intent是一个有效的要求做某些事的请求时,一个IntentFilter描述了一个活动可以处理的所有Intent。在不同窗口之间切换是通过解析Intent完成的。比如,要想回到前面的窗口,一个Activity调用startActivity(myIntent)函数。系统会查找所有安装的程序的IntentFilter,找出其中最符合myIntent的Activity,新的启动的Activity会被告知导致它被启动的Intent。整个解析Intent的过程发生在startActivity函数调用时,主要提供 基于Android的移动空问信息服务研究两个关键功能:Activity可以重用其它组件的功能,只需要简单的发出一个Intent格式的请求。Activity可以在任何时候被新的Activity替代,只需要声明与老的Activity一样的IntentFilter即可。另外,该平台采用XML可视化布局与Java语言布局结合的模式进行界面设计,做到将界面和应用程序逻辑分离的模式。2.2Android地图模块Android最有代表性的特点之一就是其集成地图模块,这在很大程度上降低了开发M.GIS系统的难度,定位接口与地图接口是在Android平台上开发M.GIS系统的技术关键。2.2.1Location#接-口Android的定位接口(android.10cation)包含几个与位置服务相关的类,并且提供LocationManager服务,这个服务提供定位与定向API。LocationManager服务不会被直接用来获取用户位置信息,它会通过getSystemService(Context.LOCATIONSERVICE)来获得一个指向它的Handle,实现对它的有效应用。一旦应用程序拥有了一个指向LocationManager的Handle,那么它将会拥有以下三种功能:●查询LocationlVlanager所掌握的全部LocationProviders的最终位置信息列表;●注册或者注销当前位置从一个LocationProvider提供的实时位置更新;·当移动终端在一个给定的位置半径范围以内的话,激活一个给定的intern,从而实现用户所需的空间信息功能。需要说明的是,开发阶段不能使用Network、GPS等获取的真正的实时位置数据。为此,平台提供了模拟数据开发的功能模块,开发者可以使用DDMS或者geo命令行导入模拟数据到模拟器中。通过DDMS工具,可以设定一个经纬度来更新当前位置、使用GPX文件来进行路径回放操作、使用KML文件来进行回放的多个独立地标标注等等;使用geo命令行时,通过geofix来设定一个地理位置,它可以设定一个包含经纬度,高程可选的地理位置,比如,geofix.121.4535646.511194392,通过geollmea来设定一个NMEA0183语句,这个命令接受一个单独的NMEA语句,这个语句的类型或是’$GPGGA’(fixdam),或是’SOPRMC’(transitdam).比如:甏i?^“。。?j。+:?7|。jj”。—“。。飞“二叶⋯⋯~j一。”j|j譬::;。’’。冀了~’”。;j。翟:geo11.rlle。aSGPRMC,081836,A,3751.65,S,14507.36,E,000.0,360.0,130998,OI1.3,E'62。‰⋯n一。~¨⋯,o“n;⋯o*#DDMS与geo操作均可以把模拟位置数据送入模拟器,对应用程序开发者来说,是一个很好的位置信息服务开发辅助工具。12 基于Android的移动空间信息服务研究2.2.2Maps接口Android的地图接口(corn.google.android.maps)包含了一系列与地图开发功能相关的类,这些类提供了渲染、控制以及绘制覆盖层等功能,开发者可以很容易地进行基于GoogleMaps地图服务的开发。在这些类中,最重要的要数MapView这个类了,只需在布局中加入一个MapView,屏幕上就绘出一个基本的GoogleM印。开发平台把一切与M印相关的Activity功能抽象为MapActivity,在执行MapView的Activity中继承MapActivity这个接口,屏幕就会显示GoogleMaps的效果,。GoogleMaps服务要求开发者获取一个使用MapView的APIKey,以便在使用应用程序时能加载地图数据,这个APIKey的获取过程也很简单。创建了一个MapView后,用户需要获得对它的控制,那么将会用到getController0来获取MapController,以便进行控制或者激活这个MapView,同时通过ItemizedOverlay以及OverLay在Map上绘制overlays以及其他信息。这不是Android库内的一个标准包,因此,在使用它时,开发者需要在AndroidManifestfile里加上下面一行作为
此文档下载收益归作者所有