基于android手机导航系统的研究与设计本科论文.doc

基于android手机导航系统的研究与设计本科论文.doc

ID:12922122

大小:1.63 MB

页数:66页

时间:2018-07-19

上传者:zhaojunhui
基于android手机导航系统的研究与设计本科论文.doc_第1页
基于android手机导航系统的研究与设计本科论文.doc_第2页
基于android手机导航系统的研究与设计本科论文.doc_第3页
基于android手机导航系统的研究与设计本科论文.doc_第4页
基于android手机导航系统的研究与设计本科论文.doc_第5页
资源描述:

《基于android手机导航系统的研究与设计本科论文.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

基于Android手机导航系统的研究与设计毕业论文题目:基于Android手机导航系统的研究与设计 基于Android手机导航系统的研究与设计毕业论文毕业设计(论文)任务书兹发给计算机科学与技术2班学生毕业设计(论文)任务书,内容如下:1、毕业设计(论文)题目:基于Android手机平台导航系统的研究和设计_____2、应完成的项目:(1)地图管理:在线地图、离线地图、地图缩放、定位、地图偏移、保持跟踪。(2)轨迹管理:记录轨迹、导出数据、地图展示、轨迹信息、查询记录。(3)规划导航:地址查询、坐标反查、规划路径。(4)远程跟踪:连接服务器、传递信息、查询信息。基于Android手机导航系统的研究与设计毕业论文基于Android手机导航系统的研究与设计毕业论文3、参考资料以及说明:(1)Android开发入门与实战.介绍Android入门最好的一本书籍之一。(2)Android开发范例大全.介绍了很多Android方面小的应用。(3)http://developer.android.com/index.htmlandroid官方开发基地(4)http://www.eoeandroid.com/forum.phpeoe中国开发这论坛(5)http://code.google.com/intl/zh-CN/apis/maps/index.htmlGoogleMapsAPI(6)Java学习笔记一本介绍深入学习java的好书(7)Android/OPhone开发完全讲义深入研究Android学习书籍4、本毕业设计(论文)任务书于年月日发出,应于年月日前完成,然后提交毕业考试委员会进行答辩。指导教师签发,年月日教研组(系、研究所)负责人审核,年月日 基于Android手机导航系统的研究与设计毕业论文摘要本文对Android系统的特征,系统架构及应用程序构建、开发都做了比较详细的分析。同时结合GoogleMaps、GPS定位技术,对在android上定位和导航进行了深入的研究,并设计了基于android系统的导航系统。系统使用java语言和eclipse开发工具进行编写。同时给出了详细的系统设计过程、部分界面图及主要功能运行流程图,本文还对开发过程遇到的问题和解决方法进行了讨论。本系统的主要功能包括手机实时定位,指定地点的寻址,规划导航路径,个人位置跟踪、监视、展示的应用程序。系统中还涉及了数据库和服务器等方面的技术。本系统只限于应用层的探讨,对地图偏移等算法不做深入研究。系统在导航路径方面做了改进,将路径作为文件记录存储,同时上传服务器。区别于其他同类产品,同时在定位时采用了多种定位方式相互参考,分析研究了Android的GPS定位和网路定位。关键词:android;导航;gps;GoogleMapsV 基于Android手机导航系统的研究与设计毕业论文AbstractInthispaper, thecharacteristicsof Android system, systemarchitecture andapplicationbuilding,thedevelopment hasdonea moredetailedanalysis.Combinedwith GoogleMaps,GPSpo-sitioning technology, positioningandnavigationontheandroid conductedin-depthstudyandandroid system isdesignedbasedon thenavigation system.Itusejavalanguageandeclipsesystemdevelopmenttools towrite.Atthesametime givesadetailed systemdesignprocess, someinterfa-ce flowchartdiagramand run themainfunction,this developmentprocess also encounteredpro-blems andsolutions arediscussed.Themainfunction ofthissystem include real-timepositioning mobilephones,addressingthedesignatedplace,planning thenavigationpath,personal locationtracking,monitoring,displ-ayapplications.System isalso involvedin otheraspects ofthedatabase andserver technologies.Thesystem of theapplicationlayeronlyonmapsdonotdo in-depthstudy migrationandothera-lgorithms.Thesystem hasdone toimprove thenavigationpath, thepathto therecordstoreasafile,and upload server.Differentfromother similarproducts,whilepositioningmethod usingavarietyof cross-reference,AnalysisoftheAndroid’sGPSpositioning andnetwork positioning.Keyword:android,navigation,gps,GoogleMapsV 基于Android手机导航系统的研究与设计毕业论文目录摘要IABSTRACTII第一章绪论11.1课题来源11.2研究背景和存在问题11.2.1手机导航背景11.2.2手机导航面临的问题21.3研究目标和方法21.3.1研究的目标21.3.2研究的方法31.4本文的内容安排4第二章手机导航软件现状和各种技术选择依据62.1手机导航的发展和未来62.2GoogleMaps的选择72.3Android技术选择92.3.1开发背景92.3.2android平台和其他平台比较102.3.3选择依据132.4本章小结14第三章需求分析15V 基于Android手机导航系统的研究与设计毕业论文3.1功能性需求分析153.1.1地图管理153.1.2轨迹管理163.1.3规划导航路径173.1.4远程跟踪监视183.2界面需求分析183.3数据存储需求193.4环境需求203.5本章小结20第四章ANDROID手机导航的总体设计214.1系统功能模块划分214.2系统架构设计224.3用户界面设计234.4本章小结25第五章数据存储设计275.1数据存储设计原理275.2数据库存储实现275.2.1数据库和数据表的创建和打开275.2.2对数据表的操作315.3使用SharePreference存储335.3本章小结34第六章系统子模块的设计和实现35V 基于Android手机导航系统的研究与设计毕业论文6.1地图管理模块的实现356.1.1在线地图356.2.2任意界面的缩放366.2.3随时定位个人位置376.2.4调整地图偏移386.2.5保持跟踪396.2轨迹管理模块的实现396.2.1新建跟踪记录396.2.2地图展示406.2.3查询以往轨迹426.2.4显示轨迹信息436.3规划导航路径模块实现436.3.1已知经纬度查询436.3.2地址反查446.3.3规划导航路径456.4本章小结45第七章系统测试467.1地图管理模块测试467.1.1在线地图467.1.2地图的缩放477.1.3定位个人位置477.1.4保持跟踪487.1.5调整地图偏移487.2轨迹管理模块测试497.2.1新建跟踪界面497.2.2显示过往所有轨迹497.2.3地图展示轨迹507.2.4路径信息507.3规划导航模块测试51V 基于Android手机导航系统的研究与设计毕业论文7.3.1经纬度查询517.3.2地址查询517.3.3选择地图模式527.3.4调用手机内置地图规划导航路径527.4本章小结53结论54总结54展望54参考文献56致谢58V 第一章绪论1.1课题来源Android操作系统平台很容易跟Google其他应用如Google地图的整合。在Android应用中,如果能在其中加入Google地图,则会为你的应用增添强大的功能,目前不少LBS应用(基于地理位置的应用)就是充分将移动跟地图结合起来。位置服务(Location-BasedServices,LBS),又称定位服务或基于位置的服务,融合了GPS定位、移动通信、导航等多种技术,提供了与空间位置相关的综合应用服务。位置服务首先在日本得到商业化的应用。2001年7月,DoCoMo发布了第一款具有三角定位功能的手持设备。2001年12月,KDDI发布第一款具有GPS功能的手机。基于位置的服务发展迅速,已涉及到商务、医疗、工作和生活的各个方面,为用户提供定位、追踪和敏感区域警告等一系列服务。1.2研究背景和存在问题1.2.1手机导航背景手机导航(英文名称:MobileNavigation)就是通过导航手机的导航功能,把你从目前所在的地方带到另一个你想要到达的地方。手机导航就是卫星手机导航[1],它与手机电子地图的区别就在于,它能够告诉你在地图中所在的位置,以及你要去的那个地方在地图中的位置,并且能够在你所在位置和目的地之间选择最佳路线,并在行进过程中的为你提示左转还是右转,这就是所谓的导航。现在市面上的手机导航还分为两类,一类是真正的通过太空中的卫星进行GPS导航[1],精度在3-5米,如天将军T60手机的导航[2];另一类是通过基站和网络进行粗略的导航的,称为A-GPS,这种导航没有真正的通过卫星GPS导航的精确,一般定位误差为100米,如诺基亚5233手机的导航5 今年以来,具有定位和导航功能的手机正日益受到消费者的追捧,市场前景看好。根据市场研究机构Isuppli的最新预测,2006年至2011年,在全球范围内具备GPS定位功能的手机出货量将翻两番,由2006年的1.096亿部增长到2011年的4.44亿部。他们还预测,到2011年,具备定位导航功能的手机在全部出货手机中所占比例将由2006年的11.1%增加到29.6%。目前GPS导航手机市场占有率约为2.3%,随着3G的发展,预计到2011年GPS手机的市场占有率将达到20%。随着GPS功能向智能手机的渗透,国内将成为一个最大的GPS手机市场。我国市场上也已经有许多设计独特的产品推出,如天将军T60导航手机等。有分析人士认为,2010年是我国GPS手机的元年[3],GPS手机已经不仅适应车载导航用户,也能适应步行者以及人们日常公交的换乘用户使用,未来的GPS手机功能将涵盖普通百姓更多的需求。在技术上,随着3G网络的发展,特别是TD-SCDMA网络的发展,将为运营商提供基于位置的服务创造更为有利的条件,应用的范围也将更为广泛。业内人士认为,目前虽然人们已经感受到了GPS手机的魅力,但是绝大多数用户对此的认识仍然只是停留在导航、定位、搜索等功能上,实际上在一些诸如监控、紧急救援等突发事件中的应用潜力更大,如老人小孩监控手机、外勤业务人员管理手机[4]、免安装GSP车载防盗报警跟踪手机等。未来,GPS手机应用发展将是多元化的,人们将迎来一个GPS手机的新时代[4]。1.2.2手机导航面临的问题目前,人们虽然已感受到了导航手机的魅力,但是绝大多数用户对此的认识却只停留在定位、搜索等功能上,一些诸如监控、紧急救援等突发事件中的应用实际上潜力更大。未来,具有专业导航功能的手机终端产品要想迎来高速发展,进入一个导航手机的新时代,必须破解诸多瓶颈。很明显,无论GPS或是导航手机,消费者在使用时最为看重的是地图专业性和准确性,而现行的多数手机还无法实现免费升级地图[5],新型Android手机尚不足以支持GPS功能[5]。此外,国内的地图服务商服务能力仍不强。值得一提的是,用户对导航手机的价格仍有惧怕性,目前市场热门的导航手机来价格集中在3000-4500元之间,偏高于一般的智能手机。这些都是阻碍导航手机市场强劲增长的因素。移动互联网技术正逐渐走向成熟。只有想不到的,没有做不到的,这便是如今科技发展的状况。可以预期的是,既拥有专业导航功能又有更强价格优势将会成为厂商抢占导航手机市场的关键。智能手机有了GPS将达到如虎添翼的效果,目前智能导航手机[6]也正在风风火火的打进市场,不久的将来会成为更多消费者购买的对象。1.1研究目标和方法1.1.1研究的目标5 本系统的主要功能包括手机实时定位,指定地点的寻址,规划导航路径,个人位置跟踪、监视、展示的应用程序。一、地图管理1.在线地图2.离线地图(SQLite数据库存储)3.任意界面的地图缩放4.随时定位个人位置5.调整地图偏移6.保持跟踪,随时显示二、轨迹管理1.记录跟踪轨迹,存储数据2.导入导出数据文件3.读取轨迹记录,并显示在地图上4.显示各个轨迹的时间、距离、平均速度等信息5.查看以往所有轨迹三、规划导航路径1.已知经纬度查询2.输入地址的反查3.调用手机内置地图规划导航路径四、远程跟踪监视1.连接服务器2.传递位置信息到服务器1.1.1研究的方法本文的目标结合GoogleMaps位置服务针对手机实时定位[7],指定地点的寻址,规划导航路径,个人位置跟踪、监视、展示等方面来设计基于Android平台的GPS导航系统。5 系统设计主要研究方法:1.已知经纬度的查询用户只需输入目的地的坐标,通过GeoPoint的定位,就可以在MapView上显示目的地的正确位置。2.指定地点的寻址通过EditText接受User输入欲寻找的地址,再利用Google提供的Geocoder无误来取得该地址的GeoPoint,接着取出GeoPoint对象之后,便可通过方才开发好的自定义函数,更新GoogleMap的内容。3.规划导航路径在正式版的AndroidSDK中,删除了原有M5版本的DrivingDirectionpackage,所以无法通过程序来规划导航路径,但可以调用手机内置的地图程序来传递导航坐标规划路径。4.个人的位置跟踪、记录、展示创建一个新的跟踪,然后后台启动Service,定时读取GPS数据获得用户目前所在的位置信息,将其存入数据库中;用户可以选择以往的跟踪记录,将其轨迹显示在Map上,由此可以记录用户去过的位置。5.远程跟踪连接远程服务器,后台启动Service,定时上传用户的位置,将其存入服务器端数据库;服务器端可随时查看用户手机位置,和以往用户的跟踪记录。1.4本文的内容安排本文共分7章第一章阐述了课题的来源,选题的背景、存在的问题和研究的目标、方法。第二章剖析了手机导航软件的现状和本系统各种技术选择的依据。第三章提出了系统的需求分析,包括功能分析,界面需求分析,数据存储需求,还有环境需求。第四章介绍了手机导航的总体设计思路,系统功能模块,系统总体架构设计,系统的界面设计等。第五章5 详细的研究了数据存储的设计,包括数据存储设计的原理、数据存储的实现和文件存储。第六章分块实现了系统的各项功能,以及详细的设计过程。第七章展示了系统的测试结果,及对结果的分析。5 第二章手机导航软件现状和各种技术选择依据2.1手机导航的发展和未来导航手机市场取得新进展  “各家的智能手机的基础功能都基本趋同,未来引起消费者产生购买的更多的会是智能手机的高端应用,华硕手机希望通专业导航功能来赢得市场。”华硕有关负责人近日表示。其实,不止是华硕,据悉,诺基亚、摩托罗拉、索尼爱立信等企业目前已经陆续推出了带有GPS导航功能的手机。  其实,GPS导航手机[8]与手机电子地图的区别在于,它能够告诉你在地图中所在的位置及要去的那个地方在地图中的位置,且能在所在位置和目的地之间选择最佳路线,并在行进过程中提示左转或右转,这就是所谓的导航。  据了解,市面上的导航手机可以分为两类,一类是真正的通过太空中的卫星进行GPS导航,误差3-5米,如天将军T60导航手机等;另一类是通过基站和网络进行粗略的导航的,称为A-GPS,这种导航没有真正的通过卫星GPS导航的精确,一般定位误差为100米,如诺基亚5233手机等。之前,华硕和导航系统领头羊Garmin合作推出的M20和“睿立方”M10,就是瞄准导航市场的产品。相比M20,“睿立方”M10具有屏幕更大、更智能、导航更快的特点,各方面性能均有大幅提升[9]。此次,华硕A10的推出,无疑成为了导航手机市场的最新进展。据了解,华硕A10内建的GPS芯片经过优化整合,可以在32秒中准确搜索定位,还具备实景导航、复杂车道提示、测速照相提示、超速提醒、自动记录停车地点等专业导航功能。导航手机市场潜力日现  从手机诞生到现在,它不仅解决了通讯的需求,还成为我们的行事簿、小秘书,当多媒体、商务、手机电视等在手机上实现之后,基于手机的位置服务紧接着成为了手机新的发展方向。尽管在市场上有不少机型支持导航功能,但关于3D实景地图、人性化行车导航[10]25 及位置信息查找,与手机功能无缝链接的导航手机则还不够完善,至少在市场上为数不多的导航手机并没有实现全线热销的局面。  值得关注的是,具有定位和导航功能的手机正日益受到消费者的追捧,并已经表现出良好的发展势头。眼下,春节前夕市场上导航仪的销量可以说是非常地火热,但与智能手机的通讯、上网、摄像等功能,导航仪的单一功能显然略逊一筹。而对于人们来说,拥有一部可移动的、功能强大的智能手机,远比使用导航仪来得方便。对于厂商来说,满足消费市场是其最大的愿望,消费市场的风吹草动牵动着厂商的举措。可以预期,在未来不久,导航手机将会迸发其潜力,实现快速增长。这样看来,导航手机市场面临着巨大的发展潜力。一方面,消费群体的流动性需要有一个能够提供位置服务的产品,尤其是机动车辆的激增,出行的人们更加希望得到这样的一款产品:既能够满足机动车导航需求,又可以在徒步等出行时携带。另一方面,在智能手机当道的时代,传统GPS导航仪所需的要素如大屏幕、数据流、无线互联及智能化等在智能手机上都能找到,终端厂商也看到导航手机的巨大商机并表现出浓厚的兴趣,有些品牌厂商已经付诸实施,相继推出专业导航手机。根据调研机构ZDC发布的中国GPS市场分析报告,2009年12月中国GPS手机用户的关注比例比去年1月份增长了16.2个百分点[11],2009年中国GPS手机市场获得前所未有的发展速度。也有报告指出,2009年中国GPS手机全年出货量达到了739万部,环比增长一倍以上。2.2GoogleMaps的选择在今年的SXSW大会上,Google的服务经理MarissaMayer对手机版的GoogleMaps的优势做了全面的介绍[7]。别开生面的演讲,吸引力大批的观众。其中更是重点介绍了GoogleMaps的定位系统功能,并暗示GoogleMaps将要对GPS发起挑战。目前为止,GoogleMaps已经拥有1.5亿的用户,而其中40%的是手机用户,这一数字还在继续增加,Google maps的定位系统具有很多独特的功能,如使用者可以从图中选定最近的路线去行驶。最近的还将对这个功能做出更新,届时可以使用到自动寻找路线避免堵车的功能。GoogleMaps对GPS最大的优势在于它是全免费使用[12]。25 曾经有人统计过,使用Google maps来定位行车,至少每年会节省1.2万公里的路程。于GPS相比,GoogleMaps还提供许多特别的功能,Google maps利用与手机强大的结合功能,在进行搜索时可以列出一系列与你有关的信息,如附近朋友的电话、住址等。GoogleMaps还利用StarryNight的7百万超高像素设计了GoogleArtProject的功能。它可以带你浏览世界各地的博物馆,以高清的像素和高超的摄像技巧带你去观赏人类文明的结晶[13]。Google最重要的产品不仅仅是网页搜索和Gmail,Google其实有一个重要的宝贝产品,就是GoogleEarth/Maps,即卫星地图(或常规地图)。这个产品如果开发的好的话,可以使得Google在地图领域中建立新的权威优势。即使在市场并不占优的中国,Google在这方面也拥有无限的优势:国内根本没有商业卫星地图服务商,网络公司的交通地图服务都是购买专业地图公司的数据,这些地图服务都没有什么开放性可言,没有一个具有提供API的能力。Google地图[14]另外一个重要的优势,就是网民的支持,即使纯英文界面的GoogleEarth在中国也有了大量的支持者和爱好者,大量的网民热衷于发布制作自己的新奇地标,在Blogger的口碑宣传下,这个纯英文的产品在中国得到不可思议的支持,甚至有热心网友为之开发了中文补丁包。Google也应该知道,GoogleEarth的中国用户会有多么大,那么多不会英文的中国人,都很期望使用这个对中文十分不友好的软件,并浏览全是英文信息的Earth网站。我自己的亲身经历是,一个不懂英文的中学生发邮件问我,怎么下载和使用GoogleEarth,人们对这个产品的关注可见一斑[15]。我认为,Google地图最重要的核心法宝就是GoogleMapsAPI,做过网站的人大概都听说过这个API,他可以让第三方网站通过API编程的方式调用Google地图数据库中的信息,使得地图数据可以在不同类型的应用中使用,我之所以说GoogleMapsAPI是无价之宝,是因为,只要Google面对中国抛出GoogleMapsAPI,那么立刻就会有无数的网站免费为Google打工,免费使用Google地图数据,免费为Google做宣传,中国有的是程序员,GoogleMapsAPI就可以让中国成千上万程序员帮着Google写应用程序,这是一个何等具有诱惑力的产品开发模式25 。我能够想到的应用就够多了,比如旅游信息网,在经典的介绍旁增加交通地图或卫星地图信息,餐馆点评网,在餐馆介绍中增加参观交通地图,购物导游网,增加商家的地图等等,需要地图信息的网站实在太多了,而且目前似乎还没有一个标准的数据库供大众使用,而GoogleMapsAPI在国外的一些应用表明其足以完成上面所说的全部功能[16]。eoe最新消息,在周三的TechCrunchDisrupt大会上,谷歌副总裁MarissaMayer透露,移动版谷歌地图的安装量已经超过2亿,占到谷歌地图使用总量的40%,今年6月有望超过桌面版。Mayer还指出,谷歌搜索目前大约有20%是针对本地化信息的。具体到移动平台,这一比例有可能超过40%。谷歌地理业务包含地图和本地化两个领域,作为该部门的主管,Mayer对这些数字十分骄傲。她表示,目前面临的一大挑战是精简她所在部门的大量产品。作为该计划的一部分,谷歌将把Hotpot整合到Places中。Latitude最终也将成为谷歌地图的一部分,该功能目前已经登陆Android设备[17]。2.3Android技术选择2.3.1开发背景1.Android的未来发展虽然没有看到Gphone的真正模样,但Google的Android平台手机已在2008年下半年正式揭开面纱.对于消费者来说,Google手机将是一款通用的、功能强大的、设备完整的手机产品。  美国咨询研究集团StrategyAnalytics的最新报告指出,Google最近公布的android手机软件平台,很可能在2008年时获得全球智能手机软件平台2%的份额。  而老牌智能手机软件平台制造商Symbian发言人则表示:Google的android只不过是另一个linux,symbian对其它软件与其形成的竞争并不感到担心。除了北美之外,Symbian在其它地区智能手机市场都占有大部分市场份额。25   与iPhone相似,Android采用WebKit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子邮件、搜索网址和观看视频节目等,比iPhone等其他手机更强调搜索功能,界面更强大,可以说是一种融入全部Web应用的单一平台[18]。  但其最震撼人心之处在于Android手机系统的开放性和服务免费[9]。Android是一个对第三方软件完全开放的平台,开发者在为其开发程序时拥有更大的自由度,突破了iPhone等只能添加为数不多的固定软件的枷锁;同时与WindowsMobile、Symbian等厂商不同,Android操作系统免费向开发人员提供,这样可节省近三成成本[19]。  Android项目目前正在从手机运营商、手机厂商、开发者和消费者那里获得大力支持。谷歌移动平台主管安迪·鲁宾(AndyRubin)表示,与软件开发合作伙伴的密切接触正在进行中。从去年11月开始,谷歌开始向服务提供商、芯片厂商和手机销售商提供Android平台,并组建“开放手机联盟”,其成员超过30家。2.Android的市场前景Google手机于08年10月22日正式上市,与运营商捆绑的合约价为179美元(约合人民币1200元),现有的T-Mobile用户可以通过网络订购。在10月22日发布当天,将有22个国家和地区可以买到谷歌手机。在11月,将增至27个国家和地区。Android作为一个开放的平台,三星、摩托罗拉、索尼爱立信、LG等厂商都有意生产Android系统的手机。此次谷歌手机发布,尽管宏达电拔得头筹,其他一些终端厂商如华为也已证实正在研发基于Android平台的手机,目前已经制成样机。来自Google官方的报道,GoogleAndroidG1手机预售量已达150万部。从Android的普通拥趸者来看,尽管上市的Android手机产品还相对寥寥,但中国国内的Android论坛却异常红火,如风暴数码、安卓网、应用发布专区等,这些论坛为Android在中国的发展以及为Android开发者上传发布自己的应用软件做了很好的推广作用[20]。2.3.2android平台和其他平台比较1.各个手机平台对GoogleMaps的支持如图2-325 图2-3平台对比分析2、手机操作系统一般只应用在高端智能化手机上。目前应用在手机上的操作系统主要有Symbian,WindowsMobile,Linux和PalmOS四种[10]。而Google推出的Android,作为一款全新的智能手机软件平台,前景看好。一、SymbianOS(中文译音“塞班系统”)是一个实时性、多任务的纯32位操作系统,具有功耗低、内存占用少等特点,非常适合手机等移动设备使用,经过不断完善,可以支持GPRS、蓝牙及SyncML等技术。Symbian作为一款比较成熟的操作系统,具有以下优点:提供无线通信服务,将计算机技术与电话技术相结合;操作系统固化;相对固定的硬件组成;较低的研发成本;强大的开放性;低功耗,高处理性能;系统运行的安全、稳定性;采用多线程运行模式;拥有多种用户界面,灵活,简单,易操作。但是,Symbian机型所采用的硬件配置较低,且各类机型采用的处理器主频都不高,在多媒体等方面的表现依然不尽如人意,对主流的媒体格式支持性较差。SymbianOS分为6.0,6.1,7.0,8.0,9.0等多个版本,而各版本之I,eJ的兼容性较差,每当新版本的SymbianOS发布并有产品面世时,系统的兼容性便成了其发展的障碍,相当一部分软件需要开发商改进后才能在新平台上使用。Symbian只提供给厂商一个内核及UI,很多细节功能需要厂商去添加,这常会导致一些基本功能被忽略,一些机型甚至连工作日、闹钟这类功能都需要第三方软件才能实现,这无疑给不熟悉Symbian的用户的带来了极大的不便[21]。二、WindowsMobileWindowsMobile将用户熟悉的Windows桌面扩展到个人设备中,它包括25 PocketPC,Smartphone以及MediaCentersoWindowsMobile主要面向个人移动电子消费市场。WindowsMobile提供的功能较多,PocketPC,Smartphone和MediaCenters三者实现的功能互有重叠也各有侧重,‘它们都支持和台式机的数据同步。Smartphone提供的功能侧重点在通信方面,它主要支持电话、电子邮件、联系人、即时消息等功能。PocketPC的功能侧重于个人事务处理和简单的娱乐,主要支持日程安排、移动版Office,简单多媒体播放等功能。与其它手机操作系统比较WindowsMobile具有如下优点:界面类似于台式机的Windows,便于熟悉电脑的人操作;预装软件丰富,内置OfficeWord,Excel,PowerPoint,内置InternetExplorer,MediaPlayer;电脑同步非常便捷,完全兼容Outlook,OfficeWord,Excel等;多媒体功能强大,借助第三方软件可播放几乎任何主流格式的音视频文件;触摸式操作,可与iPhone相媲美;极为丰富的第三方软件,特别是词典,卫星导航软件均可运行。它的缺点是:对不熟悉电脑的人来说操作较为复杂;对硬件要求较高;体积略大,许多操作需借助触摸笔。三、Linux它是一个源代码开放的操作系统,目前己经有很多版本流行,但尚未得到较广泛的支持。Linux自从进军移动终端操作系统,就以其源代码开放的优势吸引了越来越多的终端厂商和运营商,包括摩托罗拉和lYTTDoCoMo等知名的厂商。已经开发出的基于Linux的手机有摩托罗拉的A760,A768,CEC的e2800、三星的i519等。2004年6月在日本东京BIGSIGHT展览馆举办的“LinuxWorldExpoITokyo2004”博览会上,日本手机大厂商NEC则展示了其采用Linux作为操作系统的手机。我国的大唐电信也于7月宣布将Linux作为其TD-SCDMA3G手机操作系统[22]。Linux与其它操作系统相比是个后来者,但Linux具有两个其它操作系统无法比拟的优势。其一,Linux具有开放的源代码,能够大大降低成本。其二,既满足了手机制造商根据实际情况有针对性地开发自己的Linux手机操作系统的要求,又吸引了众多软件开发商对内容应用软件的开发,丰富了第三方应用。然而,Linux操作系统有其先天的不足:入门难度高、熟悉其开发环境的工程师少、集成开发环境较差;由于微软PC操作系统源代码的不公开,基于Linux的产品与PC的连接性较差;尽管目前从事Linux操作系统开发的公司数量较多,但真正具有很强开发实力的公司却很少,而且这些公司之间是相互独立的开发,25 很难实现更大的技术突破。四、PalmOS是一种32位的嵌入式操作系统,主要运用于移动终端上。此系统最初由3Com公司的PalmComputing部开发,目前PalmComputing己经独立成一家公司。PalmOS与同步软件HotSync结合可以使移动终端与电脑上的信息实现同步,把台式机的功能扩展到了移动设备上。PalmOS操作系统由Palm公司自行开发,并授权给Handspring、索尼和高通等设备厂家,这种操作系统更倾向于对PDA的支持[11]。虽然Palm操作系统己经发展很久,但其许多功能都需要通过第三方软件协调实现,这种操作方式与Symbian和Linux相比,显然差了很多。PalmOS操作系统以简单著称,PalmOS以简单的图形界面来完成对信息的处理操作。而且PalmOS系统运行占用资源少,处理速度快。由于系统内部结构简单,在软件存储和运行方面都只需要非常少的空间。但是因为PalmOS的设计过分地追求了低功耗和低硬件要求的理念,所以在如今智能手机飞速发展的市场看来已经显得格格不入。而且就目前来看,其支持中文的操作平台开发十分缓慢,也在一定程度上减缓了其在国内市场的发展。2.3.3选择依据Google于2007年11月5日宣布推出一款全新的智能手机操作系统Android。它是首个真正开放和完整的移动软件平台[23]。Andorid平台基于Linux内核,其源码完全开放,具有很好的可移植性和完善的网络支持,并能根据需要自由裁剪和定制,灵活度高。基于Android的应用程序开发拥有很大的自由度,其程序也具有很好的扩展性。与WindowsMobile,Symbian等厂商不同,Android操作系统免费向开发人员提供,这样可节省近三成成本。Android平台的五大优势总结如下:1.很好的开放性,允许任何厂商的加入,这个优势可以使其拥有更多的开发者,随着用户的增加和应用的日益丰富,Android平台也将很快走向成熟。2.摆脱了运营商的束缚,让手机更加贴近互联网。3.可移植性和软件兼容性俱佳,拓宽了软硬件的选择范围。4.给第三方开发商提供了一个十分宽泛、自由的开发环境,有利于应用的拓展。25 5.与google应用无缝结合,充分利用网络资源。作为一款新型的移动平台,Android还有待进一步发展和完善,目前它正在从手机运营商、手机厂商、开发者和消费者那里获得大力支持。GPS领域大厂SiRF公司宣布,他们己经收到了GoogleAndroid手机平台的SDK软件开发包[12],会立即开始Android手机GPS功能模块的开发。2008年9月22日,美国运营商T-MobileUSA在纽约正式发布第一款Google手机——T-Mobile-G1。该款手机为宏达制造,是世界上第一部使用Android操作系统的手机,它支持WCDMA/HSPA网络,理论下载速率为7.2Mbps,并支持Wi-Fi[24]。Android平台具有很大的市场潜力,应用开发前景广阔。2.4本章小结本章主要分析了手机导航发展的现状,并对导航手机的未来有了个总体的描述。同时针对现有技术进行分析。对GoogleMaps技术进行分析和研究,与现有其他技术进行比较,为什么要使用这门技术,以及这门技术的优势。对Android平台系统进行了初步的了解,与现有同类手机操作系统之间进行了对比,得出了Android优越性在哪里。同时把GoogleMaps和Android结合的优势进行分析和总结,以及阐述了巨大的商业价值。25 第三章需求分析3.1功能性需求分析本文的目标结合GoogleMaps位置服务针对手机实时定位,指定地点的寻址,规划导航路径,个人位置跟踪、监视、展示等方面来设计基于Android平台的GPS导航系统。系统设计主要围绕下列几项用户需求展开:3.1.1地图管理1.在线地图2.离线地图(SQLite数据库存储)3.任意界面的地图缩放4.随时定位个人位置5.调整地图偏移6.保持跟踪,随时显示地图管理是本系统的基本功能。相似与所有传统导航系统,其中包括在线地图的应用。单纯定位不需要网络支持,但是如果将个人位置清晰的显示在地图上,一定需要网络支持。Google地图提供了这方面的帮助[13]。离线地图相对于在线地图,有其自身的优点,离线地图不需要网络支持,指示把地图存储在SQLite数据库中,对于手机的流量是很大的节省。不过随着3g时代的到来,手机网络已不再是问题,速度和效率方面都可以很好的保障。缺点就是占用了大量的存储空间。针对这方面,用户可以根据当地的出行的计划,实时更新自己需要的地图存入数据库。保持跟踪,是导航系统的基本功能,我们可以根据手机提供的位置信息,以用户当前所在位置为中心,实时显示在地图上。25 随时定位,是指打开系统以后,任何时候都可以直接点击定位,显示用户当前所在的位置。地图缩放方便用户使用,便于查找的方便。如图3-1(a).保持跟踪调整地图便宜在线地图地图管理随时定位离线地图地图缩放图3-1(a)地图管理3.1.2轨迹管理1.记录跟踪轨迹,存储数据2.导入导出数据文件3.读取轨迹记录,并显示在地图上4.显示各个轨迹的时间、距离、平均速度等信息5.查看以往所有轨迹轨迹管理提供了一个区别于其他导航的特俗模块。主要是针对记录旅途过程,便于回忆旅途心情的很人性化的功能,也可以防止我们迷失自己的方向,在一个圈圈上打转。系统提供了SQLite数据存储[25],方便用户查看,导出数据。同时系统还提供了地图展示的功能,就是将我们所有的轨迹显示在地图上,清晰一目了然。而且数据中记录了时间、距离、平均速度等字段。方便用户清晰的了解自己的个人信息。25 同时系统为数据提供了导入导出文件的功能,因为数据不可能长期存储在手机上,所以可以以.gps文件方式存储在电脑或其他地方。如图3-1(b)。记录跟踪轨迹读取轨迹记录显示地图上导入导出数据文件轨迹管理显示各个轨迹的时间、距离、平均速度查看以往所有轨迹图3-1(b)轨迹管理3.1.3规划导航路径1.已知经纬度查询2.输入地址的反查3.调用手机内置地图规划导航路径在正式版本的AndroidSDK中[26],删除了原有M5版本里的Driving-Directionpackage,所以无法通过程序来规划导航路线,虽然无法自行设计导航路线,但却可以调用手机内置的地图程序来传递导航坐标规划路径。如图3-1(d)。规划导航路径调用手机内置地图规划导航已知经纬度查询输入地址的反查图3-1(d)规划导航路径25 3.1.4远程跟踪监视1.连接服务器2.传递位置信息到服务器3.关闭连接这个功能总体上是扩展整个系统的功能,现在的版本是用Socket实现连接,传递信息至服务器,然后存如MySql数据库中。服务器是使用java语言编写[27]。如图3-1(e)。远程跟踪监视传递位置信息至服务器连接服务器图3-1(e)远程跟踪监视3.1界面需求分析主操作界面主操作界面是系统开启后的第一个用户界面。该界面展示了一个地图,下面有两个按钮负责地图等级的缩放。界面对应的系统菜单MENU内包括搜索、路径规划、新建跟踪、查询轨迹、地图模式、设置六个菜单选项,用户可以选择不通的菜单执行相应的系统功能。已知经纬度查询界面该界面设计了EditText,分别用来输入要查询的经度和纬度。此外,界面还包括“查询”、“放大”、“缩小”三个按钮,点击查询按钮地图将显示出那个坐标的位置,并且标记为红色“I’mhere”。输入地址查询界面该界面有一个EditText,用来输入用户要查询的位置信息。此外此界面还包含三个按钮“查询”、“放大”、“缩小”25 ,点击查询,地图显示以此地址为中心,并且要查位置名字显示在地图相应位置。路径规划界面该界面有一个EditText,用来输入用户要到达的位置名称。此外此界面还有三个按钮“规划”“放大”“缩小”。点击规划,地图上就会显示相应的规划路径。新建跟踪界面此界面设计了连个EditText,一个用来输入跟踪名,一个用来输入跟踪描述。还用一个确定按钮,点击按钮进入地图展示界面。同时数据库写入一条记录。归结列表界面此界面使用一个列表用来显示所有跟踪记录。对应系统菜单中有继续跟踪、编辑描述、返回。点击列表中的一条记录,进入地图展示界面。地图展示界面此界面描述了整个跟踪过程,轨迹被标注在地图上。此界面有八个按钮,分别负责地图的缩放和移动。还用地图模式的切换。Gps跟新频率和地图等级设置界面此界面使用两个Spinner,用来选择gps的更新和地图等级设置。点击保存,数据被保存在SharedPreferences中。用来设置跟踪时地图的设置。3.3数据存储需求数据存储方式有几种,分别是可以数据存储在文件系统中,或者数据库中。为了以后扩展方便,这里选择数据库存储方式。在Android上,可以非常方便的使用Sqlite数据存储[28]。这个程序需要保存3类数据,一类是跟踪名称,另外一类是每次跟踪过程中读取的位置信息,还有一类是应用配置信息。配置信息指的是一些可以配置的选项,如多久跟新一次gps信息,地图默认级别等。前面两种数据会随着使用时间越来越多,这里设计将其存在数据库中;而配置信息比较少,且不是经常改变的,设计将其存储在SharePreference中。25 3.4环境需求开发Android应用所需的开发环境:操作系统:Windowsxp或VistaMacOSX10.4.8+LinuxUbuntuDrapper软件开发包:AndroidSDK+GoogleMaps开发包IDE:EclipseIDE+ADT本系统使用的是WindowsXP操作系统。软件开发包,考虑以前用户的需求,可以使用1.6版本的。另外因为是java语言编写,所以要有jdk。ADT是Android为Eclipse定制的一个插件,目的是为用户提供一个强大的综合环境用于开发Android应用程序。Android开发最强大的是提供了AVD,俗称“手机模拟器”。这个平台有自己的内核,系统图像和数据分区,还可以有自己的SD卡和用户数据及外观显示等[29]。3.5本章小结本章主要主要是系统的需求分析。着重介绍了系统的功能分析,把系统分割成四个主要大的模块进行分析,包括地图管理、轨迹管理、规划导航路径和远程跟踪四个大的模块。系统的主要界面需求,罗列了主操作界面、查询地址界面、路径规划界面、新建跟踪界面、归结列表界面、地图展示界面和gps跟新频率设置界面。并根据Android操作系统的特点,设计了两种数据存储模式:文件存储和SQLite数据库存储。最后简单介绍了系统开发所学的环境需求25 第四章Android手机导航的总体设计4.1系统功能模块划分整个系统功能通过数据存储模块、系统主模块、查询地址模块、路径规划模块、跟踪路径展示模块、新建跟踪模块模块以及远程跟踪模块来实现。如图4-1所示。系统主模块(MainActivity)查询地址模块(FindPlaceActivity)路径规划模块(DirectionRouteActivity)数据存储模块(locationdata)路径跟踪展示模块(ShowTrackActivity)新建跟踪模块(NewTrackActivity)远程跟踪模块(ConnectService)图4-1系统功能模块系统设计了数据存储模块来管理跟踪数据,它负责创建和打开路径数据的存储系统,并向其它模块提供数据访问接口。该模块基于类Locationdata来实现。系统模块是整个系统的入口。它实现的功能包括显示主界面、打开其它功能模块。该模块基于类MainActivity来实现。查询地址模块负责输入指定的经纬度,在地图上显示次位置,输入指定的名称,在地图上查找,并显示给用户。该模块基于类FindPlaceActivity来实现。路径规划模块主要负责获取用户当前位置,用户手动输入要到达位置,有了这两个GeoPoint对象,在通过Intent的方式调用内置地图程序,显示规划路径在地图上。该模块基于DirectionRouteActivity来实现[30]。25 新建跟踪模块主要负责,用户输入此次跟踪的title,一段描述性的文字,来生成一个track。该模块基于类NewTrackActivity来实现。路径跟踪展示模块,主要负责启动Service,通过运行Service,时刻监听位置的变化,并将轨迹在地图上显示出来。这个模块主要由类ShowTrackActivity来实现。远程跟踪模块,主要负责用户的远程跟踪,监视,手机端传递位置信息给服务器。这个模块主要由类ConnectService来实现。4.2系统架构设计系统类似c/s架构模式,应用主要完成开发的是系统客户端的操作。手机客户基本可以实现已知经纬度的查询、指定地点的查询、跟踪轨迹的存储、规划导航路径、GPS更新频率设和地图等级设置、跟踪轨迹的展示和远程跟踪。结构如图4-2。系统功能Gps更新频率和地图等级设置跟踪轨迹的存储指定地点的寻址跟踪轨迹的展示远程跟踪规划导航路径已知经纬度的查询图4-2系统功能框图已知经纬度的查询此功能是针对第一需求设计,根据已知坐标(latitude,longitude),在地图上显示次位置25 指定地点的寻址此功能针对第二需求设计,根据用户输入的地址名称,在地图上显示此位置规划导航路径此功能针对第三需求设计,调用getLocationProvider()取得现有的Location,以此取得目前所在位置的地理坐标(fromGeoPoint),而在版型配居中提供一个EditTextWidget来让用户输入要前往的地址,通过地址反查取得目的地的地理坐标(toGeoPoint),有了这两个GeoPoint的对象,再通过Intent的方式调用内置地图程序。gps更新频率和地图等级设置此功能针对第四需求设计,目的是设置整个跟踪过程的gps更新频率和地图等级设置跟踪轨迹的展示此功能是针对第四需求设计,地图展示,记录经过每个纬度的信息,并在地图上划出所经过的位置,记录用户整个跟踪过程所经过的地方。跟踪轨迹的存储此功能是针对第四需求设计,使用android内嵌的Sqlite数据库,存储跟踪轨迹,方便用户查询以前的旅行记录。远程跟踪此功能针对第五需求设计,实现远程监控,实时查看用户手机位置。4.3用户界面设计Android系统设计主要来源与界面的设计。一个Android的应用是由一个或多个Activity组成的[31]。Activity是一个UI的容器,其本身并不在用户界面上显示出来。25 本文主要设计了7个操作界面来实现用户与系统的交流(如图4-3)。主操作界面搜索路径规划新建跟踪查询轨迹设置已知经纬度搜索界面输入地址查询界面路径规划界面新建跟踪界面轨迹展示界面轨迹列表界面Gps更新频率和地图等级设置界面图4-3系统界面主操作界面是系统开启后的第一个用户界面。该界面展示了一个地图,下面有两个按钮负责地图等级的缩放。界面对应的系统菜单MENU内包括搜索、路径规划、新建跟踪、查询轨迹、地图模式、设置六个菜单选项,用户可以选择不通的菜单执行相应的系统功能。已知经纬度查询界面该界面设计了EditText,分别用来输入要查询的经度和纬度。此外,界面还包括“查询”、“放大”、“缩小”三个按钮,点击查询按钮地图将显示出那个坐标的位置,并且标记为红色“I’mhere”。输入地址查询界面,该界面有一个EditText,用来输入用户要查询的位置信息。此外此界面还包含三个按钮“查询”、“放大”、“缩小”,点击查询,地图显示以此地址为中心,并且要查位置名字显示在地图相应位置。路径规划界面,该界面有一个EditText,用来输入用户要到达的位置名称。此外此界面还有三个按钮“规划”“放大”“缩小”。点击规划,地图上就会显示相应的规划路径。新建跟踪界面25 此界面设计了连个EditText,一个用来输入跟踪名,一个用来输入跟踪描述。还用一个确定按钮,点击按钮进入地图展示界面。同时数据库写入一条记录。归结列表界面此界面使用一个列表用来显示所有跟踪记录。对应系统菜单中有继续跟踪、编辑描述、返回。点击列表中的一条记录,进入地图展示界面。地图展示界面,此界面描述了整个跟踪过程,轨迹被标注在地图上。此界面有八个按钮,分别负责地图的缩放和移动。还用地图模式的切换。Gps跟新频率和地图等级设置界面,此界面使用两个Spinner,用来选择gps的更新和地图等级设置。点击保存,数据被保存在SharedPreferences中。用来设置跟踪时地图的设置。4.4本章小结本章对系统的主要设计思路做了清晰的阐述。主要介绍了系统主要的模块构成,整个系统功能通过数据存储模块、系统主模块、查询地址模块、路径规划模块、跟踪路径展示模块、新建跟踪模块模块以及远程跟踪模块来实现。同时对系统结构进行了划分,实现已知经纬度的查询、指定地点的查询、跟踪轨迹的存储、规划导航路径、GPS更新频率设和地图等级设置、跟踪轨迹的展示和远程跟踪。最后介绍了系统的主要界面,主要设计了7个操作界面来实现用户与系统的交流。2525 第五章数据存储设计5.1数据存储设计原理典型的桌面操作系统提供一种公共文件系统——任何应用软件可以使用它来存储和读取文件,该文件也可以被其他的应用软件所读取。Android采用了一种不通的系统,在Android中,所有的应用软件数据为该软件所私有。在Android中,可供选择的存储方式有SharedPreferences、文件存储、SQLite数据库方式、内容提供器(Contentprovider)和网络存储[32]。数据存储方式有几种,分别是可以数据存储在文件系统中,或者数据库中。为了以后扩展方便,这里选择数据库存储方式。在Android上,可以非常方便的使用Sqlite数据存储。这个程序需要保存3类数据,一类是跟踪名称,另外一类是每次跟踪过程中读取的位置信息,还有一类是应用配置信息。配置信息指的是一些可以配置的选项,如多久跟新一次gps信息,地图默认级别等。前面两种数据会随着使用时间越来越多,这里设计将其存在数据库中;而配置信息比较少,且不是经常改变的,设计将其存储在SharePreference中。5.2数据库存储实现5.2.1数据库和数据表的创建和打开根据系统需要,为应用建立两张数据表。其中tracks是存储整个路径过程的名字、描述、距离、跟踪时间、跟踪点数、创建时间、更新时间、平均速度和最大速度等数据。而locates表存储的是跟踪过程中路径上点的信息,包括:经度、纬度、偏差和创建时间。33 两张表如5-1,5-2所示。表5-1tracks表的结构描述属性类型含义备注idINTEGER主键IDnametext名字desctext描述描述文字distancelong距离起点到终点的距离tracked_timelong已经跟踪的时间locats_countINTEGER跟踪点数created_atINTEGER创建时间updated_atINTEGER更新时间avg_speedlong平均速度max_speedlong最大速度表5-2locates表的结构描述属性类型含义备注idINTEGER主键track_idINTEGER跟踪IDlongitudetext经度外键latitudetext纬度altitudetext偏差created_atINTEGER创建时间1.DbAdapter类创建了一个名为“iTracks.db”的数据库。同时创建两张表Tracks和locats。数据库和数据库表的命名privatestaticfinalStringDATABASE_NAME="iTracks.db";publicstaticfinalStringTABLE_NAME="locates";publicstaticfinalStringTABLE_NAME="tracks";33 数据库创建表的定义publicvoidonCreate(SQLiteDatabasedb){Stringtracks_sql="CREATETABLE"+TrackDbAdapter.TABLE_NAME+"("+TrackDbAdapter.ID+"INTEGERprimarykeyautoincrement,"+TrackDbAdapter.NAME+"textnotnull,"+TrackDbAdapter.DESC+"text,"+TrackDbAdapter.DIST+"LONG,"+TrackDbAdapter.TRACKEDTIME+"LONG,"+TrackDbAdapter.LOCATE_COUNT+"INTEGER,"+TrackDbAdapter.CREATED+"text,"+TrackDbAdapter.AVGSPEED+"LONG,"+TrackDbAdapter.MAXSPEED+"LONG,"+TrackDbAdapter.UPDATED+"text"+");";Log.i(TAG,tracks_sql);db.execSQL(tracks_sql);Stringlocats_sql="CREATETABLE"+LocateDbAdapter.TABLE_NAME+"("+LocateDbAdapter.ID+"INTEGERprimarykeyautoincrement,"+LocateDbAdapter.TRACKID+"INTEGERnotnull,"+LocateDbAdapter.LON+"DOUBLE,"+LocateDbAdapter.LAT+"DOUBLE,"+LocateDbAdapter.ALT+"DOUBLE,"+LocateDbAdapter.CREATED+"text"+");";Log.i(TAG,locats_sql);db.execSQL(locats_sql);}数据库和数据表的创建DbAdapter借助SQLiteOpenHelper来创建存储系统。SQLiteOpenHelper是Android平台上负责SQLite数据库创建和版本管理的类。以下是数据库的创33 建代码:publicclassDatabaseHelperextendsSQLiteOpenHelper{publicDatabaseHelper(Contextcontext){super(context,DATABASE_NAME,null,DATABASE_VERSION);}@OverridepublicvoidonCreate(SQLiteDatabasedb){}@OverridepublicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){}创建过程中使用TSQLiteOpenHelper的子类DatabaseHelper。DatabaseHelper先调用super()方法指定数据库的名称和版本,然后重载SQLiteOpenHelper的onCreate()函数来完成数据库和数据表的创建。execSQL()是SQL语句执行函数,它是SQLiteDatabase类的一个方法。2.使用类LocateDbAdapter来管理locates表。使用TrackDbAdapter类来管理Tracks表。1.publicclassTrackDbAdapterextendsDbAdapter{}2.publicclassLocateDbAdapterextendsDbAdapter{}使用了适配器模式,便于数据的管理。·LocateDbAdapter和TrackDbAdapter同时继承自DbAdapter,分别在各自需要的时候可以开启数据库。1.publicLocateDbAdapteropen()throwsSQLException{mDbHelper=newDatabaseHelper(mCtx);mDb=mDbHelper.getWritableDatabase();returnthis;}33 2.publicTrackDbAdapteropen()throwsSQLException{mDbHelper=newDatabaseHelper(mCtx);mDb=mDbHelper.getWritableDatabase();returnthis;}open()首先定义DatabaseHelper的对象mDbHelper,用它来指向已经创建好的数据库;然后再重载SQ“teOpenHelper的getWritableDatabase()方法来打开数据库[33]。5.2.2对数据表的操作·在数据表tracks的最后一行添加一条新的记录,方法的两个参数分别对应了跟踪记录的名称和描述信息。publiclongcreateTrack(Stringname,Stringdesc){Log.d(TAG,"createTrack.");ContentValuesinitialValues=newContentValues();initialValues.put(NAME,name);initialValues.put(DESC,desc);Calendarcalendar=Calendar.getInstance();Stringcreated=calendar.get(Calendar.YEAR)+"-"+calendar.get(Calendar.MONTH)+"-"+calendar.get(Calendar.DAY_OF_MONTH)+""+calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE)+":"+calendar.get(Calendar.SECOND);initialValues.put(CREATED,created);initialValues.put(UPDATED,created);returnmDb.insert(TABLE_NAME,null,initialValues);}ContentValues是Android平台中一个专门用于存放中间数据的类,ContentValues类的put()函数用来获取该条记录各项属性值。insert()是33 SQLiteDatabase类的方法,它将某点的各属性值组成一条记录插入数据表的最后一行。·在数据表locates的最后一行添加一条新的记录,方法的三个参数分别对应跟踪记录的id、经度、纬度和偏差。publiclongcreateLocate(inttrack_id,Doublelongitude,Doublelatitude,Doublealtitude){Log.d(TAG,"createLocate.");ContentValuesinitialValues=newContentValues();initialValues.put(TRACKID,track_id);initialValues.put(LON,longitude);initialValues.put(LAT,latitude);initialValues.put(ALT,altitude);Calendarcalendar=Calendar.getInstance();Stringcreated=calendar.get(Calendar.YEAR)+"-"+calendar.get(Calendar.MONTH)+"-"+calendar.get(Calendar.DAY_OF_MONTH)+""+calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE)+":"+calendar.get(Calendar.SECOND);initialValues.put(CREATED,created);returnmDb.insert(TABLE_NAME,null,initialValues);}·实现继续跟踪,提取tracks表的一条记录进行更新。方法的三个参数分别为跟踪记录的id、名称和描述信息。获取已知路径的id,修改信息。publicbooleanupdateTrack(longrowId,Stringname,Stringdesc){ContentValuesargs=newContentValues();args.put(NAME,name);args.put(DESC,desc);Calendarcalendar=Calendar.getInstance();Stringupdated=calendar.get(Calendar.YEAR)+"-"+calendar.get(Calendar.MONTH)+"-"+calendar.get(Calendar.DAY_OF_MONTH)+""+calendar.get(Calendar.HOUR_OF_DAY)+":"33 +calendar.get(Calendar.MINUTE)+":"+calendar.get(Calendar.SECOND);args.put(UPDATED,updated);returnmDb.update(TABLE_NAME,args,KEY_ROWID+"="+rowId,null)>0;}·取得一个跟踪记录的id,取得所有locates的记录。publicCursorgetTrackAllLocates(inttrackId){returnmDb.query(TABLE_NAME,newString[]{ID,TRACKID,LON,LAT,ALT,CREATED},"track_id=?",newString[]{String.valueOf(trackId)},null,null,"created_atasc");}5.3使用SharePreference存储在setting.java中使用SharePreference来存储gps更新频率和地图等级。因为要在其他文件中使用两个变量SETTING_GPS和SETTING_MAP,所以要设置成静态常量。publicstaticfinalStringSETTING_GPS="SETTING_Gps";publicstaticfinalStringSETTING_MAP="SETTING_Map";//RestorepreferencesprivatevoidrestorePrefs(){SharedPreferencessettings=getSharedPreferences(SETTING_INFOS,0);intsetting_gps_p=settings.getInt(SETTING_GPS_POSITON,0);intsetting_map_level_p=settings.getInt(SETTING_MAP_POSITON,0);Log.d(TAG,"restorePrefs:setting_gps="+setting_gps_p+",setting_map_level="+setting_map_level_p);if(setting_gps_p!=0&&setting_map_level_p!=0){field_setting_gps.setSelection(setting_gps_p);field_setting_map_level.setSelection(setting_map_level_p);button_setting_submit.requestFocus();}elseif(setting_gps_p!=0){33 field_setting_gps.setSelection(setting_gps_p);field_setting_map_level.requestFocus();}elseif(setting_map_level_p!=0){field_setting_map_level.setSelection(setting_map_level_p);field_setting_gps.requestFocus();}else{field_setting_gps.requestFocus();}}其中SETTING_GPS用来存储gps的频率设置,SETTING_MAP用来存储地图等级。5.3本章小结本章主要是对数据库的建立的具体操作。以及如何选取Android的数据存储方式。简单来讲如果数据量很大就可以选择,SQLite数据库存储[18]。数据量不是很大就可以使用SharedPreference和文件存储。如果是使用其他应用的数据就可以使用ContentProvider。本次应用使用了SQLite数据库和SharePreference存储数据。33华南理工大学3553 第六章系统子模块的设计和实现6.1地图管理模块的实现6.1.1在线地图首先向Google申请一组经过验证的“地图密钥”(MapAPIKey),然后使用MapView(com.google.android.maps.MapView)就可以将Google地图嵌入到Android应用程序中,才能正常使用Google的地图服务[19]。“地图密钥”是访问Google地图数据的密钥,无论是模拟器还是在真实设备中需要使用这个密钥。注册“地图密钥”的第一步是申请一个Google账户,也就是Gmail电子邮箱,申请地址是https://www.google.com/accounts/Login。找到保存Debug证书的keystore的保存位置,并获取证书的MD5散列值keystore是一个密码保护的文件,用来存储Android提供的用于调试的证书,获取MD5散列值的主要目的是为下一步申请“地图密钥”做准备。获取证书的保存地址:首先打开Eclipse,通过Window→Preferences打开配置窗体,在Android→Build栏中的Defaultdebugkeystore中可以找到(见下图)图6-1申请密钥53 为了获取Debug证书MD5散列值的,需要打开命令行工具CMD,然后切换到keystore的目录,输入如下命令:keytool–list–keystoredebug.keystoreMapView的地图的显示控件,可以设置不同的显示模式,例如卫星模式、街道模式或交通模式。MapController则是MapView的控制器,可以控制MapView的显示中心和缩放级别等功能。下面的内容以GoogleMapDemo为例,说明如何在Android系统中开发Google地图程序。这个示例将在程序内部设置一个坐标点,然后在程序启动时,使用MapView控件在地图上显示这个坐标点的位置。在建立工程时将com.google.android.maps的扩展库添加到工程中,这样就可以使用Google地图的所有功能。添加com.google.android.maps扩展库的方式是在创建工程时,在BuildTarget项中选择GoogleAPIs。程序进入主界面会读取Main.xml文件,其中有这段话主界面读取这段代码后,就会取得MapView,使用Google地图进行一系列的操作。6.2.2任意界面的缩放对于缩放我们可以使用自己定义的组件,也可以使用Android提供的现有组件。1.其中这个是在主界面中使用了系统的缩放组件。主界面中使用下面代码获得缩放组件。53 zoomControls=(ZoomControls)findViewById(R.id.zoomControls);1.在其他界面我使用了自定义的缩放缩放组件。下面的代码:/*缩小*/button03=(Button)findViewById(R.id.button4);button03.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){intZoomLevel--;if(intZoomLevel<1){intZoomLevel=1;}mapController.setZoom(intZoomLevel);}});代码简单阐述了缩放的原理。通过获取获得button组件,来使用MapController的函数setZoom()来实现缩放。两种缩放的方法原理上大同小异,指示获取系统的缩放组件会更方便一些。6.2.3随时定位个人位置这个功能是每个界面都有的,对于导航系统来说也是最长用的功能。使用如下代码:privatevoidcenterOnGPSPosition(){Log.d(TAG,"centerOnGPSPosition");Stringprovider="gps";LocationManagerlm=(LocationManager)getSystemService(Context.LOCATION_SERVICE);Locationloc=lm.getLastKnownLocation(provider);loc=lm.getLastKnownLocation(provider);mDefPoint=newGeoPoint((int)(loc.getLatitude()*1000000),(int)(loc.getLongitude()*1000000));mDefCaption="I'mHere.";mc.animateTo(mDefPoint);mc.setCenter(mDefPoint);//showOverlayonmap.MyOverlaymo=newMyOverlay();mo.onTap(mDefPoint,mMapView);53 mMapView.getOverlays().add(mo);}这里面使用了Google提供的gps定位的方式,首先获得坐在位置location,然后通过GeoPoint定位到自己中心。为了使用户更加明白的看清在地图上的位置。使用了OverLay,通过在MapView上添加覆盖层,可以在指定的位置加添加注解、绘制图像或处理进行鼠标事件等。6.2.4调整地图偏移Google地图加入的人为偏移是由于中国测绘法规的限制而加入的,这样造成mylocation定出来的位置在地图上偏差太远,已经失去使用价值了。而卫星图是没有偏差的,这就是为什么大家发现地图(map)模式误差大,卫星模式误差小的原因[20]。在电脑上打开GoogleMap,对于一个标志性地方,在地图与卫星图上各标一个waypoint,比较两个坐标,就可以知道地图的偏差有多大。经过试验,发现在一个区域内(例如整个广州市),偏差基本上是固定的,而不同城市的偏差就不同了。利用这个特性,对一个区域的偏差进行测量校准后,整个区域的定位都能够根据这个校准值来校准。如果能够将各人在不同地方测得的校准值共享在网络上,这个手机的定位功能就会有实用价值了。本系统调整地图偏移的方法就基于GoogleMap地图卫星模式误差小,地图模式误差大,而人们经常使用的地图模式。系统提供调整度条给用户使用,用户可以根据自己的地图的卫星模式来校对地图模式,并且保存某个地方的偏移值。虽然算法很简单,不过校对后的经度还是可以的。首先我们设置一个Dialog组件用来设置地图偏移的方向值,分别为x,y。代码如下:mGPSOffsetDialog.setTitle(R.string.GPS_OFFSET_MENU);finalSeekBarseekBarX=newSeekBar(this);finalSeekBarseekBarY=newSeekBar(this);设置成功后保存在SharePreferences中,然后每次使用地图模式时,都会使用偏移量重新定位。代码如下:marker.place.setLat(marker.place.getLat()+diffGPSOffset.y*Math.pow(10,-5));53 marker.place.setLon(marker.place.getLon()+diffGPSOffset.x*Math.pow(10,-5));6.2.5保持跟踪跟踪是每个导航系统必备的功能。这里我们使用了Android提供的一个位置服务类LocationManager,它提供了一些列方法来处理位置相关的问题,包括查询上一个已知位置,注册、注销来自某个LocationProvider的周期性的位置更新,以及注册、注销接近某个位置坐标时一个已定义的Intent的触发等。跟踪信息中使用了LocationListener来监听手机位置的改变,代码:lm=(LocationManager)getSystemService(Context.LOCATION_SERVICE);locationListener=newMyLocationListener();lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);其中Content.Location_Service是Android系统提供的服务,使用它就可以得到位置服务类LocationManager。下面使用LocationListener来监听:publicvoidonLocationChanged(Locationloc){mDefPoint=newGeoPoint((int)(loc.getLatitude()*1000000),(int)(loc.getLongitude()*1000000));mc.animateTo(mDefPoint);mc.setCenter(mDefPoint);//showonthemap.mDefCaption="Lat:"+loc.getLatitude()+",Lng:"+loc.getLongitude();MyOverlaymo=newMyOverlay();mo.onTap(mDefPoint,mMapView);mMapView.getOverlays().add(mo);}}每次位置变化系统都会调用函数onLocationChanged()来进行相应操作。53 6.2轨迹管理模块的实现6.2.1新建跟踪记录此功能就是跟踪记录的一个部分,新建跟踪实现的是为我们每次旅行记录一个名字和一段描述。这里我们使用NewTrack类来实现此功能。首先我们要设计两个输入框来完成名字和描述的输入,然后要一个保存的Button来完成最终的实现。而且实现保存之后就要跳入ShowTrack页面实现跟踪。功能的主要代码:privateButton.OnClickListenernew_track=newButton.OnClickListener(){publicvoidonClick(Viewv){try{Stringname=(field_new_name.getText().toString());Stringdesc=(field_new_desc.getText().toString());if(name.equals("")){Toast.makeText(NewTrack.this,getString(R.string.new_name_null),Toast.LENGTH_SHORT).show();}else{//TODO调用存储接口保存到数据库并启动serviceLongrow_id=mDbHelper.createTrack(name,desc);Log.d(TAG,"row_id="+row_id);Intentintent=newIntent();intent.setClass(NewTrack.this,ShowTrack.class);intent.putExtra(TrackDbAdapter.KEY_ROWID,row_id);intent.putExtra(TrackDbAdapter.NAME,name);intent.putExtra(TrackDbAdapter.DESC,desc);startActivity(intent);}}catch(Exceptionerr){}}};跳转的跟踪界面之后,跟踪的名字和描述要体现此次过程的特色。53 6.2.2地图展示这个功能是轨迹管理的重要一个环节。首先这个界面要实现地图的展示功能。这里面又用到MapView服务类。为了轨迹的显示使用新的类Overlay。通过在MapView上添加覆盖层,可以在指定的位置加添加注解、绘制图像或处理进行鼠标事件等[21]。Google地图上可以加入多个覆盖层,所有覆盖层均都在地图图层之上,每个覆盖层均可以对用户的点击事件做出响应。创建覆盖层继承Overlay类的子类,并通过重载draw()方法为指定位置添加注解,重载onTap()方法处理用户的点击操作。我们这里应用使用的使我们自定义MyOverlay,继承自Overlay。publicvoiddraw(Canvascanvas,MapViewmv,booleanshadow){Log.d(TAG,"MyOverlay::darw..mDefCaption="+mDefCaption);super.draw(canvas,mv,shadow);}我们这里主要是重写了它的draw()方法,添加我们自己的涂层在地图上。这里就是将我们轨迹上的每个点记录在地图上,形成了我们的路径。其中我们定位自己位置时使用了这样的方法添加自己的位置,来提醒用户。privatevoidcenterOnGPSPosition(){MyOverlaymo=newMyOverlay();mo.onTap(mDefPoint,mMapView);mMapView.getOverlays().add(mo);}同时这个类还实现了从数据库中读取数据,进而把以前的轨迹显示在地图上。privatevoidpaintLocates(){mlcDbHelper=newLocateDbAdapter(this);mlcDbHelper.open();CursormLocatesCursor=mlcDbHelper.getTrackAllLocates(track_id);startManagingCursor(mLocatesCursor);Resourcesresources=getResources();Overlayoverlays=newLocateOverLay(resources.getDrawable(R.drawable.icon),mLocatesCursor);mMapView.getOverlays().add(overlays);53 mlcDbHelper.close();}这里使用了我们前面所建立的数据库。6.2.3查询以往轨迹此功能需要一个界面将所需的轨迹罗列出来。我们这里使用的Android中典型的组件ListView。这里我们使用TrackList来实现我们的功能,当然这里也需要数据的支持。TrackList继承自Android中的典型Activity中的ListActivity,继承了这个Activity就可以使用ListView的全部功能。publicclassTracksListextendsListActivity{publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.tracks);setTitle(R.string.app_title);mDbHelper=newTrackDbAdapter(this);mDbHelper.open();render_tracks();}}这里使用了一部分的重要代码来说明问题。下面其实使用了一个函数来实现我们的列表的展示功能。privatevoidrenderListView(){mTrackCursor=mDbHelper.getAllTracks();startManagingCursor(mTrackCursor);String[]from=newString[]{TrackDbAdapter.NAME,TrackDbAdapter.CREATED,TrackDbAdapter.DESC};int[]to=newint[]{R.id.name,R.id.created,R.id.desc};SimpleCursorAdaptertracks=newSimpleCursorAdapter(this,R.layout.track_row,mTrackCursor,from,to);setListAdapter(tracks);}其中ListView匹配的三个组件分别为SimpleAdapter、ArrayAdapter和SimpleCursorAdapter。其中53 SimpleAdapter是ArrayList和ListView之间的桥梁。而ArrayAdapter的作用是数组和ListAdapter间的桥梁。那么这里我们使用的是SimpleCursorAdapter是专门对应数据库操作的。6.2.4显示轨迹信息我们的数据库表tracks中有几个字段代表了路径的信息,其中有起点、中点、最大速度、平均速度。我们可以使用这些字段来描述一次轨迹的信息,丰富我们的系统。这里主要使用TrackTabViewActivity来实现此功能。privatevoidalert_dialog_selection(){newAlertDialog.Builder(TrackTabViewActivity.this).setTitle(getString(R.string.track_menu_title)).setItems(R.array.items_track_what_to_do_dialog,newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intwhich){}}).setNegativeButton(getString(R.string.cancel),newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfaced,intwhich){d.dismiss();}}).show();}这个函数是这个类中最重要的函数,主要是对客户的点击做出反映,同时点击之后显示出对应轨迹的具体信息。6.3规划导航路径模块实现6.3.1已知经纬度查询此功能主要是针对现在很多旅游杂志或是书籍提供某个旅游景点或者特色美食的信息和位置,直接输入坐标,便可通过卫星导航系统指引到目的地。本实现主要是输入目的地的坐标(经度和纬度)后,通过GeoPoint的定位,就可以在MapView上显示目的地的正确位置。主要使用类FindDestination,代码:53 mbutton01.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){/*经纬度空白检查*/if(mEditText01.getText().toString().equals("")||mEditText02.getText().toString().equals("")){showDialog("經度或緯度填寫不正確");}else{/*取得輸入的經緯度*/dLng=Double.parseDouble(mEditText01.getText().toString());dLat=Double.parseDouble(mEditText02.getText().toString());/*依经纬度重整Map*/refreshmapview();}}});主要是通过输入的坐标获得GeoPoint对象,然后使用MapView定位过去。mMapController01.animateTo(p);6.3.2地址反查地址反查的功能主要是针对用户知道商铺的名字而不知道具体的位置信息而提供的功能。Android手机除了内置了“地图搜索”的功能,但出了内置的地图外,通过GeoCoder对象,同样可利用程序控制的方式,输入地址字符串,反查GPS地理坐标GeoPoint的服务[22]。Google提供的GeoCoder服务在非商用的情况下,GeoCoder反查Address对象的服务是较没有限制的。主要使用类PositionOnMap,主要操作代码:privateGeoPointgetGeoByAddress(StringstrSearchAdress){GeoPointgp=null;try{if(strSearchAdress!=""){if(!lstAddress.isEmpty()){AddressadsLocation=lstAddress.get(0);doublegeoLatitude=adsLocation.getLatitude()*1E6;doublegeoLongitude=adsLocation.getLongitude()*1E6;gp=newGeoPoint((int)geoLatitude,(int)geoLongitude);}else{}}53 }catch(Exceptione){}returngp;}这里主要说明的是使用List

lstAddress=geocoder.getFromLocationName(strSearchAdress,1);得到的对象的数量为1,这里只是采用了匹配度最高的一个。6.3.3规划导航路径在正式版本的AndroidSDK中,删除了原有M5版本里的DrivingDirectionPackage,所以无法通过程序来规划导航路径,虽然无法自行设计导航路线,但缺可以调用手机内置的地图程序来传递导航坐标规划路径。程序一开始调用getLocationProvider()取得现有的Location[32],以次取得目前所在位置的地理坐标(fromGeoPoint),而在版型配居中提供一个EditTextWidget来让User输入要前往的地址,通过地址反查取得目的地的地理坐标GeoPoint,有了两个GeoPoint的对象,在通过Intent的方式调用内置地图程序。程序中点应用了两个方面的知识:1.以Uri.parse()传入GoogleMap的路径规划参数(http://maps.google.com/maps)方法。2.随手机的移动状态下,更改与跟新当前GeoPoint的手法。设置好起点和中点,通过重组GoogleMap的GET传输参数,便可以出入GoogleMap显示。程序运行结果会判断当下的地址是在哪里,在输入要前往的地址之后,就会调用内置的地图程序来让User选择是否使用路线规划的功能,在使用钱,需先打开手机的GPS服务。6.4本章小结本章主要介绍了系统中重要的设计细节。分别介绍了地图管理、轨迹管理和规划导航几大模块。其中地图管理中涉及了在线地图、离线地图、任意界面的缩放、随时定位个人位置等功能。同时中点介绍了轨迹管理,轨迹管理主要有记录轨迹、存储数据、轨迹展示等功能。最后对规划导航做了系统的介绍,其中囊括了两种地址的查找方式和路径的规划方法。53 第七章系统测试7.1地图管理模块测试7.1.1在线地图首先程序进入这个主界面,对应相应的操作方式,可以在菜单中选择。界面如图7-1图7-1在线地图search这个菜单选项是进入规划路径的入口,可以搜索地址信息。tracks是轨迹管理界面的入口。负责轨迹记录、跟踪和展示的。connectServer是连接远程服务器的。myLocation才看可以快速的定位自己的位置。Mapmode可以选择地图的模式,并且利用卫星模式来调整地图模式的偏移。53 7.1.2地图的缩放每个界面的地图上都有缩放按键,只要在地图上点击一下,缩放按键就会出现。如图7-2图7-2地图缩放7.1.3定位个人位置每个地图界面用户都会想知道个人位置。菜单中要体重这样的按键。如图7-3图7-3个人定位53 途中为了是用户看的更清晰明白,使用OverLay标注跟人位置信息在地图上。7.1.4保持跟踪保持跟踪就是随时显示所在位置给用户知道,系统在右下角有个隐藏的跟踪按键,只要点击就会出现,同时会提示你是否正在跟踪。Auto-FollowEnabled代表的是正在跟踪。如图7-4图7-4保持跟踪7.1.5调整地图偏移这里使用是一个Dialog来显示地图偏移的具体调节,然后保存。如图7-553 图7-5调整偏移7.2轨迹管理模块测试7.2.1新建跟踪界面新建跟踪界面主要是让用户输入本次轨迹的名字和描述,然后保存写入数据库中。如图7-6图7-6新建跟踪7.2.2显示过往所有轨迹用一个列表来显示以往所有轨迹,并且针对定义了一些列针对列表的操作。如图7-753 图7-7显示轨迹7.2.3地图展示轨迹点击列表上每个轨迹,都会自动显示每个轨迹在地图上的信息,通过地图展现轨迹位置。如图7-8图7-8地图展示其中红色线条为轨迹。因为在模拟器上测试,所以路径为用了四个位置演示。7.2.4路径信息这里也是使用以Dialog来显示路径的信息,包括路程、速度等。如图7-953 图7-9路径信息7.3规划导航模块测试7.3.1经纬度查询已知景点或商铺的经纬度,点击查找。如图7-10图7-10经纬度查询7.3.2地址查询输入地址广州市,查询结果如图7-1153 图7-11地址查询7.3.3选择地图模式点击MapMode菜单,选择两种地图模式。如图7-12(a,b)a卫星模式b交通模式图7-127.3.4调用手机内置地图规划导航路径首先输入你要去的位置,然后点击规划路径,会有几种方案提供给用户,如图7-13图7-13导航路径53 7.4本章小结本章主要是对系统进行了测试,更正了系统的一些小错误,改进了一下整体结构。因为测试平台使用的是模拟器,所以有些功能还不是能够很好的模拟出来。测试过程如果没有网络支持,位置也可以测定,就是通过基站方式定位的。通过测试更加了解了Android整个定位的机制和原理。53 结论总结本文针对手机GPS功能发展空间巨大的现状,提出了基于Android平台来设计GPS地块测量系统的方案。本文所做的主要工作和研究成果包括:详细分析了Android平台的特征、系统架构,剖析了Android应用程序的构成,介绍了相关的开发环境与技术;总结了与系统设计相关的GPS定位原理和以及GoogleMaps的位置服务类,全面讨论了Android平台对定位程序开发的技术支持;在分析系统功能需求的基础上设计了整体框架,然后分块具体实现了系统的各项功能,最后展示了系统的运行效果。本系统设计了静态和动态两种不同的定位方式供用户选择,弥补了现有GPS设备方式单一的缺陷。系统功能清晰,界面友好,使用方便。本系统使用SQLite数据库对导航轨迹进行存储,同时提供了文件存储和远程上传功能,改变了以往导航软件单纯导航的功能。展望由于时间和个人能力有限,本文对Android的理解和分析还不够深入,系统功能也有待完善。Android是一个多功能平台,对网络等技术都有很好的支持。基于Android的GPS应用可以进一步与网络相结合,实现测量数据的实时上传,以达到远程掌控、指挥GPS测量的目的。随着Android技术的推广和手机计算能力的不断增强,相信一定会有更多具备现实意义和使用价值的应用程序出现在Android这个新兴的平台上。5353 参考文献[1]李明峰,冯宝红,刘三枝.GPS定位技术及其应用.国防工业出版社,2006[2]熊志昂,李红瑞,赖顺香.GPS技术与上程应用.国防工业出版社,2005[3]田丁.基于ARM9手持GPS定位系统的研究与实现[D].武汉:武汉理工大学,2008[4]孔祥元,郭际明,刘宗泉.大地测量学基础.武汉大学出版社,2006[5]中国人民解放军总装备部军事训练教材编辑丁作委员会.GPS技术与应用.国防工业出版社,2004[6]http://code.google.corn/android/[7]王解先,俞振武.高斯投影引起的面积计算误差[D]测绘通报,2003[8]http://code.google.corn/android/what.is.android.html[9]何伟,杨宗德,张兵等.基于SymbianOS的手机开发与应用.人民邮电出版社[10]ItEyehttp://oxen.javaeye.com/[11]Wien.GlobalPositioningSystemtheoryandpractice.NewYork:SPringer-Verlag,2001[12]李大文.GPS原理及应用.科学出版社,2003[13]WillardMarqnis.Misformodernization.GPSWorld,September2001[14]MichaelJuntaoYuan.梁超译.EnterpriseJ2MEDevelopingMobileJavaApp移动应用程序开发.清华大学出版社,2004[15]甘树满.基于Eclipse的开源框架技术与实践.电子1:业出版社,2007[16]国家测绘局,地籍测量规范一匕京.测绘出版社,1988[17]EricClaybergDanRubel.周良忠译.EclipseBuildingCommercial—Quality插件开发.人民邮电出版社,2006[18]JoeWalnes.甄山译JavaOpenSourceProgramming.Java开放源码编程.2005[19]林信良.Java学习笔记.清华大学出版社.2007[20]赵炯.Linux内核完全注释机械工业出版社.2004[21]RobertJ.Sweet.GPSforMariners.McGraw—HillProfessional,2003[22]彭永麟.城镇地籍测量的可行性研究.福州大学学报,1998[23]冯宝红,郑小元等.GPS.PDA在_十地变更调查中的应用研究.测控技术,2003[24]MicrosoftCorporation.IntroducingMicrosoftWindowsCE3.0.MicrosoftCorporation,2001[25]嵌入式实时多任务操作系统[M].成都:电子科技大学,1999[26]JanVanSiekle,GPSforLandSurveyors,CRCPress,2001[27]Android的安装http://www.cnblogs.com/haix/archive/2007/11/14/959400[28]http://www.1etsandroid.cn/SDKm5rcl4/docs/documentation.html57 [29]Google开发人员访谈Android平台http://www.builder.com.cn/2007/111[30]AlfredLeiek.GPSSatelliteSurveying,JohnWileyandSons,2004[31]吴信才.地理信息系统的基本技术与发展动态[J].地球科学.1998[32]靳岩,姚尚朗.Android开发入门与实战.人民邮电出版社.2009[33]余志龙,郑名杰等.Android开发范例大全.人民邮电出版社.2009.57 致谢在论文完成之际,我要特别感谢我的导师蔡梅琳老师的热情关怀和悉心指导。在我撰写论文的过程中,蔡老师倾注了大量的心血和汗水,无论是在论文的选题、构思和资料的收集方面,还是在论文的研究方法以及成文定稿方面,我都得到了蔡老师悉心细致的教诲和无私的帮助,特别是他广博的学识、深厚的学术素养、严谨的治学精神和一丝不苟的工作作风使我终生受益,在此表示真诚地感谢和深深的谢意。在论文的写作过程中,我还得到许多同学以及家人的支持和帮助,他们给我提出了很多宝贵建议,也给了我莫大的鼓励,在此致以诚挚的谢意。感谢所有关心、支持、帮助过我的良师益友。最后,向在百忙中抽出时间对本文进行评审并提出宝贵意见的各位老师表示衷心地感谢!刘小龙2011.61

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

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

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