基于android的移动空间信息服务研究new

基于android的移动空间信息服务研究new

ID:33694667

大小:4.20 MB

页数:50页

时间:2019-02-28

上传者:xinshengwencai
基于android的移动空间信息服务研究new_第1页
基于android的移动空间信息服务研究new_第2页
基于android的移动空间信息服务研究new_第3页
基于android的移动空间信息服务研究new_第4页
基于android的移动空间信息服务研究new_第5页
资源描述:

《基于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里加上下面一行作为的子元素。2.3数据库技术Android平台自带一个SQLite轻量型数据库,其占用资源非常的低,同时能够与很多程序语言相结合,SQLite的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快,而且能够支持以上两种数据库所能支持的所有SQL语句,同时它还支持事务处理功能等等。比如SQLite支持跨平台,操作简单,能够使用很多语言直接创建数据库。下面分别列出SQLite的几条特性:●ACD事务;●零配置一无需安装和管理配置;·储存在单一磁盘文件中的一个完整的数据库;●数据库文件可以在不同字节顺序的机器间自由的共享;◆支持数据库大小至2TB;·足够小,大致3万行C代码,250K;l三| 基于Android的移动空间信息服务研究●操作速度快;·简洁的API;●包含TCL绑定,同时通过Wrapper支持其他语言的绑定;·良好注释的源代码,并且有着90%以上的测试覆盖率;·独立:没有额外依赖;·完全开源;●支持多种开发语言,C,PHP,Perl,Java,ASP.NET,Python等。SQLite的这些特点,使得基于Android平台的数据库相关开发变得简单快捷,在移动设备上的优势也就显而易见了。2.4可视化界面设计Android平台提供了可视化设计的框架,如图2.3所示,可采用XML语言(如图2-4)与Java语言结合的方式进行界面布局,布局大纲的层次更清晰,如图2.2,最外边是一个LinearLayout框架,紧接着里边包含一个FrameLayout与LinearLayout,前者又包含一个FrameLayout,里边包含一个LinearLayout,最里边是一个MapView,用来显示地图资源,后者里边设计了两个EditText,分别对应着起点与终点输入框,一个TextView,一个Button。i”黼㈥黼镒r—一⋯⋯⋯⋯”1。”’⋯。一””⋯””⋯”。⋯”””””⋯⋯、—一:,⋯⋯⋯⋯⋯⋯⋯·=⋯⋯⋯⋯··:积IFIFrameLayout{崮lrlfrale(FrameLayout)}彩固LinearLayoutOl(LinearLayout);@myMapView(C01.google.android.maps.IⅨapView)巍,固Linear2(LinearLayout)j圆busstart(EditText)i一圆at0b(TextView);圆buzend(EditText);,,(匐btnbusfind(ButtOn)图2-2XML界面设计框架系统还采用Java语言进行界面设计补充,比如说缩放按钮,程序在运行时,用户需要对地图进行缩放操作,调用ge七zoomcontrols()方法,同时设置按钮的布局参数LayoutParams(),进行缩放按钮动态显示在用户界面上。14 基于Android∞耪自空目信息服务研竞幽2-3可视化界面设计幽24XML语言界面设计蠹蒜警量銎霹口目∞目目m目目gm女$ooogo@@m 基fAndfoid耐穆动i月信息厦务"究3移动空间信息服务系统设计M-GIS系统的设计包括表现层、逻辑层、数据层三个层面I】”,基于Android的M—GIS系统的体系结构如图3-1所示,其中表现层包括Android手机、掌上电脑、车载终端等装备有Android平台的移动设备,逻辑层包含无线网关、WEB服务器与GIS服务器,数据层包括空间数据库与本地数据库。在此基础上设计一个公交信息查询系统BusFinder,该系统将具备的主要功能有:公交信息查询、兴趣点搜索、驾车导航以及用户当前位置定位模拟,系统技术路线如图3-2所示。表现层逻辑层数据层图3-1M旬IS系统体系结构公交信息查询通过对本地数据库的查询操作,获取目标路径方案,在客户端绘制出来,叠合GoogleM叩,为用户提供公交路线与站点信息;兴趣点的搜索提供包括地名、Hotel、ATM、Pizza等等的临近搜索:驾车导航功能,在系统主界面输入起终点名称,叩可查找出两点之间路径与驾车大约时间。定位功能模拟,考虑到模拟器未安装GPS接收机,也不能接收Cell.ID以及WiFi网络提供的定位信息,故采用预设何置信息模拟定位的方式,真正装备有Android系统的移动设备,将可以应用用户位置实时定位功能。 基于Android的移动空间信息服务研究计无算<钭皱能黼库GoogleMapsl{>线机I1、.~/I网\./络lJ.公交查询操作驾车导航与0兴趣点搜索查询数据库,◆装备得出公交方案导航与兴Android趣点方案平台的/一‘~Gooale[][]oAPI>GoogleanoAPIp口凸口口.riD口_lI口口Android口口口API口口q口口MapAPIKeyD白口口n口口口UJOD口口DAPIm0口口图4一l添加APIKey到XML文件中同时,需要在AndroidManifest.xml文件里添加一定许可,比如android.permission.INTERNET,以便应用程序可以访问网络资源;android.permission.ACCESSCOARSELOCATION,允许用户粗略定位,比如利用Cell.ID或者WiFi进行定位操作;android.permission.ACCESS,允许用户进行精确定位,比如通过接收机。有关地图操作相关_F程IN序E部L分OC源A代TI码ONGPS如下:t?PublicclassBfextendsMapActivity{Ii竹#∥%F矿?iprotectedbooleanisRouteDisplayed()?“j≥//科字初娥化强专j羿{磊“;setContentView(R.iayout.main);:’://定义川,。辫瞄概絮与地澍对豫’;frame=(FrameLayout)findViewById(R.id.frame);;myMapView=(MapView)findViewById(R.id.myMapView);。:/j给V5ewe<严uj’click功旋7,fmyMapView.setClickable(tzue);琵,,。。‘。myMapView·setSa,tellite(true)i}一。。,⋯⋯。。⋯,一。。。。。~二;。~赫聪-,。么么%0舡‘+,ko:一¨。⋯。,^mr一一,+∥{十oj?o一÷:;,t靠‰≈jtd血赢一一i一‰嬲⋯⋯^,二黜24 基于Android的移动空间信息服务研究‘//盈示甲墨圈myMapView.setSatellite(true);。/?添加缩放按钮主tjframeaddZoomControls(frame);//缩放按钮方法,按钮何簧参数没援。privatevoidaddZoomControis《FrameLayoutframe){ViewzoomControis=myMapView.getZoomControls();FrameLayout.LayoutParamsP。nQwFrameLayout.LayoutParams(LayoutParams.WRAPCONTENT,LayoutParams.WRAP_CONTENT,Gravity.BOTTOM十Gravity.CENTER_HORIZONTAL);frame.addView(zoomControls,P);)4.2数据库访问功能前面提到,Android采用轻型的Sqlite进行数据库管理,已用sqliteman对公交信息数据进行了录入,那么在系统运行过程中会对数据库进行查询操作。程序的查询过程用至U-J"android.database.sqlite.SQLiteDatabase这个类,这个类包括创建、删除、执行SQL语句以及打开其他主流数据库的任务;在系统开发过程中,应用了该类内的一个方法openOrCreateDatabase(),旨在解决数据库打开与关闭操作,以及文件访问与数据文件丢失现象。本系统是以文件的形式存储空间与属性信息的,创建一个DataBaseWork类,该类继承于ListActivity这个列表类,主要实现对既有数据库的打开操作,部分代码如下:%驴⋯⋯⋯。⋯⋯。?删≯⋯r’‘。”。。:j⋯jr’,冀pj一々九j{≈‘,。辨““≯1‘’47、紫“”^t?≈寸‘喈7;嚣:≯出“端÷’”tq☆4,““‰≯”Ⅲ‘。““。一⋯⋯⋯一“;矗4’擎?‘jo数挺阵扔始仡“:publicclassDataBaseWorkextendsListActivity{:privatefinalStringMYDATABASE_NAME2”bus·db“;ipublicstaticSQLiteDatabasemyDB=null;};。;?,鸳j1歼数缀f‘:jtry{;myDB=this.openOrereateDatabase(MY_I)ATABASENAME,MODE_PRIVATE,nun);jjimyDB.······)j程序接到对数据库的创建或打开操作命令后,对数据库进行初始化操作,创建一个SQLiteDatabase类的对象myDB,打开数据库文件,为下一步的公交信息查询做好准备。25 基于Android的移动空间信息服务研究4.2信息查询功能信息查询分为公交信息查询、驾车导航查询以及兴趣点查询,其中,公交信息查询用到本文设计的公交信息数据库。公交信息查询的重点与难点在于对数据库内三个表相关记录的筛选操作,对于用户输入的起终点名称,程序对数据库内的记录进行完全匹配搜索,找到符合条件的方案,以列表形式输出到用户界面,供用户选择。这里用到数据库内的rawQueryO方法以及SQL语句selectfromwhere,同时还创建了一个执行公交方案计算的方法caculateProject(),部分代码如下:§络“,+⋯一⋯‘一Ⅵjr。7+。。”一’?”,?~。气“⋯,?7”q⋯⋯?”“‘叼=~c~t⋯。17“rj2鼍i//夯找站点:菠.找到符台条住:的{t慕≥i“rawQuery(”selectnname,l_idsfromnodewhere?n_na/rte=’8+busStart+”‘orn_name=’”+busEnd+”。”,null);jj/执行办袋计饽办法筝caculateProject(start1idslend_l—idstresults-busStart,busEnd);j;)finally{};?j方象以猁表彰了℃输出给明j_界面;this.setListAdapter(newArrayAdapter《;this,android.R.1ayout.simple__list_item_l,results));lj笔知_:,.⋯j。⋯._。。。?。。,。,。。j、;.在查询过程中,需要对线路的选择进行判断并选定,然后得出符合要求的站点与线路方案,这里创建了一个线路类Line{}与方案类Projectlnfo线路类关键代码如下://线路方案类publicclassLinefpublicStringgetLineName(SQLiteDatabasemyDB){sql=”selectl_namefromlinewherel_id=“+this.1ineID;intindex=cursor.getColumnIndexOrThrow(。l_name。);returncursor.getString(index);)//软敬线路经过路径publicArrayListgetPath(StringstartID,StringendID,SQLiteDatabasemyDB)t)方案类进行方案判断,关键代码如下:|//方案类!publicclassProjectInfot{i//初始酸值为0,当为l时,表示.盥达情况,2表示不能商达{;privateintprojectType=0;j_^.H____*_^.H"_HⅣ__,_d~⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯HⅣ___^__Ⅳ_.____ⅣⅣⅣ~^u__-H¨-“h”Nwnh_____*h·-v^Ⅵ_hn^-u自·H_^--—M|26 基于Android的移动空间信息服务研究一。。⋯‘,m’”“’’~’⋯~‘6‘4“‘~⋯:privateSQLiteDatabasemyDB=null;。//方案别表描述description.append(“车次:t).append(this.Iine【0】.getLineName(this.myDB)。).append(this.1ine【1】.getLineName(this.myDB)pend(this.getStartName()).append(”一【中转站一).append(this.getMiddleName《)).append(“】一”)ndName());).append(畸耄).append(”\n”).ap.append(this.getEreturndescription.toString();)乙⋯⋯⋯⋯。,?一⋯⋯÷⋯⋯⋯?,?⋯?⋯⋯⋯⋯——⋯⋯⋯⋯⋯——一⋯⋯⋯一⋯⋯⋯一方案类里边,为了获取起点、中转点、终点的坐标,创建了三个方法getStartCoordinateO、getMiddleCoordinateO、getEndCoordinateO,分别用来获取以上三类坐标,同时创建了一个点位坐标集合,ArrayListO,用来存储路线经过站点坐标,具体代码如下所示://菝取超点碜锄;publicGeoPointgetStartCoordinate(){Stringsql=”selectn_lat。n_ionfromnodewheren_id=“+startID;Cursorcursor=this.myDB.rawQuery(sql,null);returnnewGeoPoint(1at,ion);)//获墩转点坐标publicGeoPointgetMiddleCoordinate()tStringsql=“selectn_lat。n_lonfromnodewheren_id=”+this.middleID;Cursorcursor=this.myDB.rawQuery(sql,null);returnnewGeoPoint(1at,lon);)//获墩终点q龟标publicGeoPointgetEndCoordinate(){Stringsql=”selectn—lat,n_lonfromnodewhereCursorcursor=this.myDB.rawQuery《sql,null)return翻删GeoPoint(1at,lon);)//查瀚数攒J事node表莸玻idPath集合蒯‘胞的经纬度n_id=”+this.endID;ArrayListpath=newArrayList();Stringsql=”selectn_lat.n_ionfromnodewheren_id=”+id;Cursorcursor=this.myDB.rawQuery(sql,null);GeoPointpoint:newGeoPointflat,lon);path.add(point);)returnpath;))驾车导航与兴趣点搜索,利用intent机制,简要的数行代码,实现了对系统集成功能的挖掘与共享,驾车导航的关键代码如下:27 基于hndroid的移动空间信息服务研究%,?。1‘、+。⋯‘”、?=。““一’⋯4⋯:‘鼍?f戳薯导鼠j翻【mlicvoidDirectionf)//蔹取输入辑互的起点名稼EditTexteditFrom=(EditText)findViewById(R,id、.start);StringstrFrom=editFrom.getText《).toString();//羲墩输入襁的终点够称EditTexteditTo=(EditText》findViewByIdfR.id.end);StringstrTo=editTo.getText《).toString();//设定起终点垒籼r引;+以经渊}|j系统的路{簪搜索H尊遴{于名称瞪燃Stringuri=。http://maps.google.com/maps?f=d&saddr=”+strFrom::+”,&daddr=”+strTo十“&hl=en“;j;Log.i《”驾车导航n,*uri=n+uri);://J占功孩Activity,觎丰fi该uri。:;。startActivity(newIntent(Intent.ACTION--VIEW,Uri.parse(uri'));}魄;:~⋯。二f⋯,,一‰~一⋯j~。..。。。。j。一一。。。⋯⋯⋯⋯。。。一⋯。,⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯jj⋯一一,~t一?、⋯%i;兴趣点搜索与驾车导航类似,不同的是,其只获取一个用户输入,关键代码如下所不:'Y’Y_一Y一⋯一、^~-⋯⋯、~¨~j//兴趣点搜索publicvoidPOIsearch()(EditTexteditPOI=(EditText)findViewById(R.id.poi_search);StringpoiSearch=editPOI.getText().toString()Stringuri=”http://maps.google.com/maps?f=q&source=s—q&h1=zh—CN&geocode=&q。“+poiSearch+””;Log.i(”POI”,”uri=”+uri);startActivity(newIntent(Intent.ACTION_VIEW,Uri.parse(uri)));)4.2图层绘制与标注图层绘制与标注,因其图形化的信息表达,成为普通用户最直接的功能需求。本例用到了com.google.android.maps.Overlay接口里边的draw()方法,通过对draw方法参数的设定,在地图上实现了图层的绘制与文字的标注。本例创建了一个DrawPathOverLay继承于Overlay,编写了经纬度到屏幕坐标转换方法GeoPointToscreencoord(),这里用到了drawText,drawCircle,drawPath方法。部分代码如下: 基于Android的移动空间信息服务研究笏⋯~⋯⋯⋯j⋯2⋯⋯⋯⋯”⋯⋯7⋯⋯?。+’7;jj矧疆绘捌类publicclassDrawPathOverLayextendsOverlay{publicDrawPathOverLay(ProjectInfoprojectInfo){)publicbooleandraw《Canvascanvas,MapViewmapView,booleanshadOW,Iongwhen)fsuper.draw《canvas,mapView,shadow》;二?/7设嚣Path蕊笔格式this.pathPaint.setStrokeWidth(4};:this.pathPaint.setARGB(200,200,i05,252);“this.pathPaint.setStyle(Paint.Style.STROKE};:。//没鬣站囊蛹篷格式;stationPaint.setARGB(255,251,46,23};:;stationPaint.setTextSize(16);:?j荻敬效绘制pa镰,.起’转羧坐},j:系至《厣黟坐标iPaththePath=n毪wPath(》;iArrayListpathList=this.projectInfo.getPath《);:iGeoPointfirst2pathList.get《0》7二Pointp。newPoint();。?for(GeoPointgeoPoint:pathList)f}GeoPointToScreenCoords(geoPoint,p,mapViewj;=》thePath.1ineTo(p.X,P.Y》;:;j||。j//绘制文字‘I站囊翻形.j2ca/ivas.drawText(stationName,P.x+10,P.。y-5,8ta乞ionpaint);jcanvas.drawCircle(P.x,P.y,5,stationpaint);}?{;唆锈!]path,?canvas.drawPath《thePath,pathPaint);;/?经室垂f雯宝《知£秀筝垒!标转{终?privatevoidGeoPointToScreenCoords《GeoPointgP,Point:scp,MapViewmapView)f;map-View.getprojec七ion().toPixels(gp,scp);}}f.琵每。i。÷⋯、ti“i%nj‘血m。‰梳?:“~沁*‰_,2。帅‰⋯““√?j。“‰je。Ⅵ_.¨一。,二加小。|i⋯⋯“fmj。j,,_‘,nm一,⋯艺t=二?ij。。已扎j虎一量强。ii如吲jjmi?^巍29 基于Android的移动空间信息服务研究5移动空间信息服务系统原型在进行了系统功能模块的程序实现后,将利用测试数据对原型系统进行验证,系统包含以下四个基本功能:公交信息查询、驾车导航、兴趣点搜索、定位模拟。在GoogleMaps里采集了4条典型线路共18个典型站点的空间与属性数据进行测试。5.1开发平台与数据准备系统采用的硬件系统为PC兼容机一台,Internet网络;操作系统选择WindowsXP;.开发环境选取Eclipse3.3(Europa)、JDK6.0,AndroidDevelopmentToolsplugin(0.9.O)、SDK采用最新发布的Android1.5版本。5.1.1数据准备与导入首先利用GoogleEarth提供的影像点位的经纬度,对照GoogleMaps提供的公交路线,把每一个站点的经纬度提取出来,存储在Bus.db数据库中的node表内,因系统调用的是GoogleMaps地图资源,故收集已有公交路线数据时,对数据库中存储的站点的空间位置与GoogleMaps上的地图影像进行精确匹配,使得二者具备很好的几何空间一致性,保证了查询点位的准确性。然后把DB格式的数据库文件导入到模拟器中,以更新公交信息查询数据库。可通过命令行导入或者平台DDMS状态下的push菜单导入。采用后者导入方式,打开eclipse平台,进入DDMS状态,启动模拟器,运行BusFinder(公交查询)程序,点击模拟器的data\data\child.bf\databases文件夹,屏幕右上角会出现“Pushflfileontothedevice”提示,如图5.1所示,点击该按钮,选取Bus.db文件,确定后,即将所需数据库顺利装入模拟器中。 基十Android的移动空月信息t务研究一‘⋯”掣hv·=删#№t‘川§7⋯h0⋯F‘ⅢhⅢ’;H●一一’,u·s1⋯n’Ⅲii■i二jii;i;;品dn·200⋯H’'■目———。m*月12F一●nf200}O}】q0l{⋯r日rw●。●DpP00p05I{nI5ld⋯q,’”PfP⋯●’·20∞一05一M0l:5⋯⋯+~I—c●fht200}0}140l⋯I一-i⋯d·’-一口}¨D】-B⋯r.一‘一口¨⋯200}⋯I口2】⋯I-一¨:dbTj⋯口⋯}*I{39~一一r,fll÷0:u⋯5‘14uzb⋯i’11h2一口}I●07:6、drnr⋯1-oc%"ho●dn一:l口^±口O}口'¨01⋯r⋯'i一⋯otbro■{ol2口09—0'ldD】口3d⋯o·*~口*¨d,oIdbqrr●96¨2一O}HO】:⋯Hr⋯1·#e¨⋯1Lc⋯⋯2200}0p¨0】I⋯01,-x’一¨dfdi^⋯r●2一O}lq口】:50d⋯r-.1’.一一1d⋯=2口0一H0I:⋯~’。图5-I数据库文件hdbImsll进入模拟嚣5.12模拟器上预设位置信息由于模拟器不支持自动获取用户实时位置坐标信息,但是支持用户当前位置模拟功能,本例预设几个空闻位置存储在联系人模块中,以便模拟用户或用户联系人在当前位置出行路线选择。图5-2与图5-3为在模拟器上进行用户位置预设操作,其中图5-2操作是在平台的Contact模块中舔加的,图5_35是在用户的POI搜索中添加的,两者操作的亩接好处是便于以后使用中直接吝询通讯录.图5-2通讯录中添加图5-3POI搜索时添加 基十Android的移葡空月信息雕务研充52公交查询功能分别取直达与一次换乘情况进行测试,在起点信息与终点信息输入框内输入所查公交站点起终点名称,图5-4、图5-5分别表示直达情况搜索界面与直达方案列表。图5-6直达情况(卫星图)图5.7直达情况(地图模式)一次换乘测试以“马兰广场”与“星海广场”为例,如图5-8所示.测试方案结果一一一冒嚣一 基于Android的移动空闻信息厦务研究如图5-9所示,此次共三个方案53兴趣点搜索图5.10方寨1路径显示图5-11方案3路径显示周边兴趣点搜索其实质是在远程数据库内匹配关键字相同的记录,进行一个模糊查询,搜索过程如图5—12、图5-13所示.本次输入“liaoningshifan”,在MENU菜单中 基十Andtold¨穆自空目信息服务研究选择“兴趣点搜索”选项,系统给出相关关键字方案列表如图5一14所示,用户选择目标兴趣点,本次为“辽宁师范大学南区”,点击后屏幕定位到选择的目标区域,如图5.15所示。拄l5·14兴趣点关键字相关方案幽5一15选择爿j户目标兴趣点若用户需查找该区域附近AIM、HoteI、Pizza等等,按下空格,在弹出的搜索界面中直接输入“arm”或“hotd”或“pizza”,系统模糊检索的方案与方案显示结果如图5.16、图5.17所示。 基十hndtoid∞移自i目信皂脏务研究图5.18两点导航搜索界面图5.19两点导航菜单建项点击后系统绘制出两点之间路径并标注出路线总长与大约驾车时间,如图5.20所示,点击右向箭头,屏幕依次显示该路径所经过拐点名称,如图5.21所示。 基十Android∞移自空目信g服务研究动补全兴趣以提升搜索图5-22驾车导航搜索界面囤5-23从通讯录添加搜索内容图5-24为通讯录选择列表,分别选择辽宁师范大学与海事大学后,如图5-25,系统弹出两点问路径方案以及路线总长与大约驾车时间并显示两点间路径,如图5—26、图5.27所示。 基fAndroid的耪自空月镕0服务研究54定位模拟图5-26两点问路径方案囤5-27两点问路径显示定位模拟初始时,屏幕缩放到任意位置,在MENU菜单里选择“定位模拟”选项屏幕自动定位到预设位置,并以该位置为中心,如图5-28、图5.29所示。 基十Android目移自空目信《服务研完圈5-28任意位置图5.29定位到田家炳书院这里只是一个模拟过程,当移动设备装备有GPS接收机时或集成了接收无线网络信号功能时,即可进行定位操作。 基于Android的移动空间信息服务研究6结论与展望随着3G时代的来临,移动空间信息服务的发展会越来越快,各种移动平台上的M.GIS服务开发争先恐后抢占用户市场,单从移动开发平台上来讲,微软的WindowsMobile由于其成熟的体系结构与先入为主的优势,目前还是占有一半以上的市场,苹果公司的产品因为其时尚、个性,深受年轻消费者的喜欢,因而iPhone应用程序开发的市场也越来越大,Nokia因为收购了Symbian,加之其庞大的用户群,基于Symbian开发的应用程序也越来越多,再加上Palm刚刚推出不久的WebOS,因其出色的上网体验,也谋划在移动开发市场上分一杯羹,OHA推出的Android开发平台,由于其内置的地图模块,因此,在移动空间信息服务开发方面存在很大的优势,又因为其完全开源,加之移动设备制造商、移动服务运营商、电信运营商的共同参与,其发展的深度与广度是可以预见的。从移动空间信息服务开发平台上来讲,WindowsMoblie、iPhone、Symbian、WebOS如若在自身的平台中也加入地图开发模块,那么势必会对Android平台的M—GIS开发形成有效竞争,Google公司在空间数据方面的优势对Android平台的M.GIS开发份额权重也起到重要作用。随着中国移动的加入,中国联通与华为公司在数周前也宣布加入开放手机联盟,目前为止已有40多个相关的世界知名公司加入了OHA,可以看出,基于Android平台移动空间信息服务的开发步伐会越来越快。本文主要做了以下几方面的工作:·文章绪论部分简要介绍了移动空间信息服务的体系结构与特点,对M.GIS表现层、逻辑层、数据层这三层结构进行了分析与阐述,从主流的M.GIS客户端实现技术出发,对基于WAP浏览器、基于J2ME、基于Android的三种实现技术的优缺点进行了分析比较。●第二章介绍了基于Android的移动空间信息服务技术。首先对Android平台的体系结构做了详细介绍,重点介绍了平台内置的地图模块,从location与maps这两个接口对地图服务的开发方法进行了描述,对SQLite数据库以及可视化界面设计组件进行了介绍。●论文第三部分对基于Android的移动空间信息服务进行了系统设计。提出了基于Android的M.GIS的体系结构与系统开发的技术路线,引入集合概念,提出了一次换乘的公交查询算法,简化了数据库存储与检索过程,有效提升了运行速度,同时设计了用户界面与公交信息查询数据库,后者包含线路表、站点表以及线路站点相关表三个表的结构设计。●在第四部分系统讲述了移动空间信息服务系统的开发过程,通过对地图模块提供的location与maps接口内方法的调用,实现了地图操作模块与图层绘制与标39 基于Android的移动空间信息服务研究注模块,通过对SQLite数据库提供的openOrCreate()、rawquery()等方法的使用,实现数据库访问模块,为实现系统的信息查询功能,创建了线路类与方案类,同时,编程实现了信息查询模块与定位模拟功能。●论文最后对原型系统进行了验证。利用采集的4条公交线路与18个公交站点空间与属性信息以及空间数据库,对系统设计的公交查询、兴趣点搜索、驾车导航、定位模拟、地图操作等功能进行了验证。本课题中所做的研究工作还存在很多需改进和深入之处。基于Android的公交信息查询系统,结合日益增强的终端存储与计算能力,作为移动终端上实现地图基本功能以及城市公交信息查询的一个尝试,很好地实现了一次换乘的公交信息查询、驾车导航、兴趣点搜索、定位模拟实现等功能,基本满足了移动用户的需求,在移动空间信息服务应用方面,很好地利用了Android平台在地图模块方面的优势,比起基于WAP浏览器、基于J2ME、以及苹果公司的iphone开发平台来说,开发的难度是最低的,并且因为Android平台的完全开源,开发的成本要低很多,这将必然促进该平台的发展。在后续的工作中,将继续进行以下几个方面的研究:●进一步研究对第三方公交数据库信息的兼容问题,包括本地数据库设计与空间数据库访问;●研究公交信息查询中步行换乘的站点抽象问题;◆进一步研究第三方地图资源的访问问题,解决当前GoogleMap缩放级别以外的资源请求问题;●研究路径轨迹回放问题,对用户的出行路线进行记录,解决实际应用问题。综上所述,论文从理论研究到系统设计以及应用实验,做了大量的研究与开发工作,开发出的系统在一定程度上解决了用户的M.GIS服务需求,但从开发研究角度来讲,论文设计的公交查询算法还需要进一步的抽象,同时,在后续工作中,解决本地数据库的空间更新问题以及路径轨迹回放开发成为研究的重心,并对系统进一步优化,以提供更好的用户体验。 基于Android的移动空间信息服务研究参考文献【1】李德仁,李清泉,谢智颖等.论空间信息与移动通信的集成应用[J].武汉大学学报·信息科学版.2002;27(1);1.6WinnieSMTang,JanSelwood.MobileGeographicInformationServices(M-GIS)--TechnologyThatChangesTheWayWeNavigateOurWorld.ISPRS,2002:463~469彦辉武,吴涛,王方雄.网络地理信息系统[M].测绘出版社,2007龚健雅.当代地理信息系统的发展趋势【J】.东北测绘,2002,25(4):10---15龚健雅.地理信息系统基础【M】.北京:科学出版社,2001.胡鹏,黄杏元,华一新等.地理信息系统教程【M】,武汉:武汉大学出版社,2002.王方雄,边馥苓.从GlSystem到GIService:GISystem发展的必然趋势.华中师范大学学报·自然科学版,2004。V01.38,No.4:528~532.ManeeshPrasad.LocationBasedServices.http://www.gisdevelopment.net/teclmology/lbs/techlbs003.hun,2003—11Android.Android—AnOpenHandsetAllianceProject,http://code.google.corn/mtFzh—CN/android/documentation.html,2007-11-15【10]王方雄.基于WAP的移动空间信息服务系统研究.长江科学院院报,2004,V01.21,No.6:57---60.[1l】王方雄,侯英姿.基于J2EE的移动空间信息服务研究[J].计算机工程与应用,2005;41(1)【12】王方雄,边馥苓,侯英姿.移动空间信息服务的应用模式研究.中国地理信息系统协会第八届年会论文集(2004):425"-'429.[13】叶雷,侯宏亮,鲁铭,倪凯,张超.空间信息移动用户应用服务系统中的GIS关键技术介绍【J】.地理信息世界,2005;(4)【14】王方雄,吴边,怡凯.移动GIS的体系结构与关键技术.测绘与空间地理信息,2007,30(6):12~14.[15】怡凯,王方雄,陈良俊,高会宝.基于Android的移动空间信息服务研究.中国科技论文在线.【16]WangFangxiong,JiangZhiyong.ResearchonADistributedArchitectureforMobileGISbasedonWAP.XXthISPRSCongress[C/DVD].Istanbul,Turkey,Julyl2-23,2004http://www.isprs.ore,/istanbul2004/comm2/papers/220.pdf[17】毕建涛,王雷,池天河,何建邦。基于WebService的地理信息服务研究阴.计算机科学,2004,31(1):69~71.[18】邸烁,Android手机平台揭秘和未来发展趋势,http://tech.itl68.com/o/2008-02—20/200802201409176.shtml【19]彭春华,刘岳峰,晏磊,刘建业,郑江华,基于Java的移动地理信息服务关键技术研究[J].计算机工程与应用,2007;43(11)【20】刘建闽,基于3G网的移动GIS系统关键技术及应用【J】.河南理工大学学报(自然科学版),2007;(1)[21】陈飞翔,李华,周治武,面向LBS的移动空间信息服务研究[J】.计算机工程与应用,2008;(13)【22]CHENYu-fen.M印spatialcognitionresearchandspatialinformationvisualization.JoumalofGeographicalSciences,200l,:ll411J口pM侈№口隅p 基于Android的移动空间信息服务研究[23】LevinsohnA.Geospatialinteroperability:TheholygrailofGIS.GeoWorld,Oct,2000『24】HofinannC,WeindorfM,WieselJ.IntegrationofGISasaComponentinFederatedInformationSystems.InternationalArchivesofPhotogrammetryandRemoteSensing,2000,33,33:l173~1180.【25】MichaelA只JeremyEw,RoccoZ.IntegrationoftheGlobalPositioningSystemandGeographicalInformationSystemsforTrafficCongestionStudies.TransportationResearch.2000,86,8(6):257~285.【26】LanFAkyildiz,JaniseMcNair,JosephHo,HuseyinUzunalioglu,WenyeWang.MobilityManagementinCurrentandFutureCommunicationsNetworks.IEEENetwork,1998,124,12(4):39--49.[27】PleweB.SoyouwanttobuildallonlineGIS.GISWbrld,1997,101l,10(11):56-58.[28】T.Badard,D.Richard.UsingXMLfortheexchangeofupdatinginformationbetweengeographicalinformationsystems.Computers,EnvironmentandUrbanSystems,2001,25,25:17-31.[29]SchmandtC,MarmasseN,MartiS,eta1.EverywhereMessaging.mMSystemsJournal,2000,393,39(3):660-677.【30】GTINGR.AnIntroductiontoSpatialDatabaseSystems.VLDBJournal,1994,:357—399.[31]刘凯.基于3G网络移动设备位置服务的应用[D]哈尔滨理工大学,2008.[32】陶燕.基于移动GIS的数据采集系统研究与开发[D】中国科学院研究生院(广州地球化学研究所).2004.[33]CHENJtm,ZHAORen-liang.KeyissuesofSpatialrelationsinGISandtheirProgress.AataGeodaeticaetCartographicaSinaca,1999,282,28(2).[34】童蔚苹.面向移动应用的GIS系统研究与开发【D】.中国优秀硕士学位论文全文数据库,2007,(01).【35]RozaTDandBichevGAnoverviewoflocation—basedservices.BTTechnologyJournal,2003,211,21(1):1824ImielingskiT,BadrinathBR.Mobilewirelesscomputing:challengesindatamanagement.CommunicationsoftheACM,1994,3710,37(10):12—2842 基于Android的移动空间信息服务研究攻读硕士学位期间公开发表的学术论文1.怡凯,王方雄,陈良俊,高会宝.基于Android的移动空间信息服务研究.中国科技论文在线.2.王方雄,吴边,怡凯.移动GIS的体系结构与关键技术.测绘与空间地理信息,2007,30(6):12~14.3.王方雄,满慧嘉,怡凯.移动GIS的服务模式与价值链.地理空间信息,2007,5(5):45"一47.43 基于Android的移动空间信息服务研究致谢首先感谢我的导师王方雄副教授,在我攻读硕士学位期间,他对我的指教使我从学术上脱胎换骨,他在学术研究上的严谨与孜孜不倦值得我在以后的日子里不断揣摩,也将受益终生。感谢城市与环境学院GIS教研室的全体老师对我科研实践和论文写作的指导和帮助;感谢李永化院长、董哲书记对我硕士研究生学习生活的关照;感谢学院办公室刘集伟主任、孟爱红老师、张蕾老师对我顺利完成研究生学业提供的帮助;感谢曹永强老师、张威老师在学术上的不吝指点,感谢你们。感谢李洋硕士、张岩硕士、刘桓硕士、康敏捷硕士、张玢硕士、马飞飞硕士、吕红霞硕士、王从聪硕士、刘颖硕士、刘亮硕士、王强硕士、荣毅硕士,感谢他们在研究生学习生活的三年里带给我们的快乐;感谢师弟马凯、师妹王雪在论文研究方法上的多次探讨;特别感谢师弟侯峰在论文实验中付出的努力,感谢你们对我的关心和给予我的一切。感谢辽宁工程技术大学测绘学院的全体同仁,感谢你们在千里之外对我的关心和鼓励;感谢陈德辉博士,感谢你把我领进学术殿堂;感谢王文瑞叔叔一家,感谢你们多年来对我学习和生活上的关心与帮助。同时,我要深深感谢我的父母,是你们的爱让我能克服种种困难,不断进取!感谢马天妹,你在精神上和生活上的理解和支持是我不断前进的动力。最后,衷心感谢各位专家和学者的评议和指导! 基于Android的移动空间信息服务研究作者:怡凯学位授予单位:辽宁师范大学本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y1600359.aspx

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭