《基于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文件,其中有这段话
此文档下载收益归作者所有