地图开发安卓地图应用程序_第1页
地图开发安卓地图应用程序_第2页
地图开发安卓地图应用程序_第3页
地图开发安卓地图应用程序_第4页
地图开发安卓地图应用程序_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、青岛科技大学本科毕业设计(论文)1 绪论随着安卓智能手机的发展及普及,千变万化的安卓应用程序如雨后春笋般涌现出来,安卓应用程序正在悄无声息的改变着人们的生活方式。应用程序的安全可靠、方便快捷,越来越受到重视。安卓手机走进了人们的生活,成为人们获取资讯的主要设备。1.1 研究背景及意义随着社会的快速发展,人们的出行更加频繁,地图的需求日渐旺盛,而纸质地图不能满足人们的要求。安卓手机地图应用安装到手机,可以随时随地查看以及搜索,而且数据全面,更新快,可以放大缩小查看,应用程序可以定位使用者的位置,迅速快捷的查看周边。安卓市场上的地图以及导航软件种类繁多,大多繁杂且运行不畅,这就需要一款以地图为主、

2、搜索为辅,记录信息地理信息,画面简洁的地图软件。本设计将满足这一需求,为安卓手机用户提供一款占存小、运行流畅的简洁地图应用程序。1.2 可行性分析Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。它由谷歌公司和开放手持设备联盟开发和领导。除了开放手持设备联盟之外,Android还拥有许多由全球各地开发者组成的开源社区来专门负责开发Android应用程序和第三方Android操作系统来延长和扩展Android的功能和性能。2011年8月,Android操作系统在全球智能手机操作系统的市场份额已达48%,成为全球第一大智能手机操作系统,跃居全球最受欢迎的智能手机平台。本

3、设计使用了安卓系统,且有开发手机联盟参考例程参考,有百度地图API可供调用。百度地图API是为开发者免费提供的一套基于百度地图服务的应用接口,包括JavaScript API、Web服务API、Android SDK、iOS SDK、定位SDK、车联网API、LBS云等多种开发工具与服务,提供基本地图展现、搜索、定位、逆/地理编码、路线规划、LBS云存储与检索等功能,适用于PC端、移动端、服务器等多种设备,多种操作系统下的地图应用开发。需要用到的GPS,一般手机都配有。许多手机企业表示,GPS功能将于2008年成为手机的标准配置。据预测,2005年-2009年,手机GPS解决方案年复合增长率将

4、达到86%。随着成本的降低和技术的进步,许多终端厂商和手机设计企业正在推出相应的方案和产品,手机GPS芯片和解决方案呈现出软硬方案之争,功耗和接收灵敏度也不断改善。本设计所需的开发软件和实现的硬件都是触手可及,所以完成此设计完全可行。1.3 本文内容及组织本文先概述了设计实现所用到的相关技术,分析了技术的原理及应用。进而讲述了设计的总体规划,实现设计所用到的软件安装及配置及相关硬件的要求。详细介绍设计的实现过程,一步步展示个个功能的原理及实现。最后进入应用的调试,记录了开发中出现的错误以及解决办法。2 相关技术分析本章对本设计涉及到的相关技术如嵌入式Android系统、GPS、百度地图API做

5、相关介绍。2.1 嵌入式Android系统2.1.1 系统介绍Android一词的本义指“机器人”,同时也是Google于2007年11月5日 宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。图 1-1 安卓的图标Fig.1-1 The Log of the Android2012年7月美国科技博客网站BusinessInsider评选出二十一世纪十款最重要电子产品,Android操作系统和iPhone等榜上有名。2.1.2 发展历程2003年10月,Andy Rubin等人创建Android公司,并组建Android团队。2007年11月5

6、日,谷歌公司正式向外界展示了这款名为Android的操作系统,并且在这天谷歌宣布建立一个全球性的联盟组织,该组织由34家手机制造商、软件开发商、电信运营商以及芯片制造商共同组成,并与84家硬件制造商、软件开发商及电信营运商组成开放手持设备联盟(Open Handset Alliance)来共同研发改良Android系统,这一联盟将支持谷歌发布的手机操作系统以及应用软件,Google以Apache免费开源许可证的授权方式,发布了Android的源代码。2008年,在GoogleI/O大会上,谷歌提出了AndroidHAL架构图,在同年8月18号,Android获得了美国联邦通信委员会(FCC)的

7、批准,在2008年9月,谷歌正式发布了Android 1.0系统,这也是Android系统最早的版本。2011年8月2日,Android手机已占据全球智能机市场48%的份额,并在亚太地区市场占据统治地位,终结了Symbian(塞班系统)的霸主地位,跃居全球第一。2012年1月6日,谷歌Android Market已有10万开发者推出超过40万活跃的应用,大多数的应用程序为免费。Android Market应用程序商店目录在新年首周周末突破40万基准,距离突破30万应用仅4个月。在2011年早些时候,Android Market从20万增加到30万应用也花了四个月。2.1.3 发行版本2008年

8、9月发布的Android第一版,即Android1.1。 2010年5月20日发布了Android 2.2/2.2.1。主要的更新如下:整体性能大幅度的提升;3G网络共享功能;Flash的支持;App2sd功能;全新的软件商店;更多的Web应用API接口的开发。 此版本也成为了开发调试程序的基础版本。2013年9月4日凌晨,谷歌对外公布了Android新版本Android 4.4KitKat(奇巧巧克力),并且于2013年11月01日正式发布,新的4.4系统更加整合了自家服务,力求防止安卓系统继续碎片化、分散化。2.1.4 系统构架Android的系统架构和其操作系统一样,采用了分层的架构。【

9、1】图 2-1 系统构架Fig.2-1 Systematic Framework从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。应用程序Android会同一系列核心应用程序包一起发布,该应用程序包包括客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。应用程序框架开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。同样,该应

10、用程序重用机制也使用户可以方便的替换程序组件。隐藏在每个应用后面的是一系列的服务和系统, 其中包括;丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(Lists),网格(Grids),文本框(Text boxes),按钮(Buttons), 甚至可嵌入的web浏览器。内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。通知管理器 (Notification Man

11、ager) 使得应用程序可以在状态栏中显示自定义的提示信息。活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。系统运行库Android 包含一些C/C+库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:* 系统 C 库 - 一个从BSD继承来的标准C系统函数库 Libc ), 它是专门为基于Embedded linux的设备定制的。* 媒体库 - 基于PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括M

12、PEG4, H.264, MP3, AAC, AMR, JPG, PNG 。* Surface Manager - 对显示子系统的管理,并且为多个应用程序提 供了2D和3D图层的无缝融合。* LibWebCore - 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。2.1.5 系统结构1、系统内核Android 是运行于Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能,Android 大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以B

13、ionic 取代Glibc、以Skia 取代Cairo、再以opencore取代FFmpeg等等。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到 Userspace,使得Linux driver 与 Linux kernel彻底分开。Bionic/Libc/Kernel/ 并非标准的Kernel header files。Android 的 Kernel header 是利用工具由 Linux Kernel header 所产生的,这样做是为了保留常数、数据结构与宏。Android 的 Linux kernel控制包括安全(Sec

14、urity),存储器管理(Memory Management),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。下载Android源码之前,先要安装其构建工具 Repo来初始化源码。Repo 是 Android 用来辅助Git工作的一个工具。2、后缀简介APK是安卓应用的后缀,是AndroidPackage的缩写,即Android安装包(apk)。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。apk文件和sis一样,把a

15、ndroid sdk编译的工程打包成一个安装程序文件,格式为apk。 APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。3、APK文件结构一个APK文件结构为:1. META-INF (注:Jar文件中常可以看到);2. res (注:存放资源文件的目录) ;3. AndroidManifest.xml (注:程序全局配置文件) ;4. classes.dex (注:Dalvik字节码);5. resource

16、s.arsc (注:编译后的二进制资源文件)。总结下我们发现Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接执行安装,和Windows Mobile中的PE文件有区别,这样做对于程序的保密性和可靠性不是很高,通过dexdump命令可以反编译,但这样做符合发展规律,微软的 Windows Gadgets或者说WPF也采用了这种构架方式。在Android平台中dalvik vm的执行文件被打包为apk格式,最终运行时加载器会解压然后获取编译后androidmanifest.xml文件中的permission分支相关的安全访问,但仍然存在很多安全限制,如果你将apk文

17、件传到/system/app文件夹下会发现执行是不受限制的。最终我们平时安装的文件可能不是这个文件夹,而在android rom中系统的apk文件默认会放入这个文件夹,它们拥有着root权限。4、硬件抽像层Android 的HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL 的目的是为了把 Android framework 与 Linux kernel 隔开,让 Android 不至过度依赖 Linux kernel,以达成 Kernel independent 的概念,也让 Android framework 的开发能在不考量驱动程序实现的前提下进行发展。HAL stub 是一

18、种代理人(Proxy)的概念,Stub 是以 *.so 档的形式存在。Stub 向 HAL“提供”操作函数(Operations),并由 Android runtime 向 HAL 取得 Stub 的Operations,再 Callback 这些操作函数。HAL 里包含了许多的 Stub(代理人)。Runtime 只要说明“类型”,即 Module ID,就可以取得操作函数。5、中介软件操作系统与应用程序的沟通桥梁,应用分为两层:函数层(Library)和虚拟机(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同时包含了Webkit,所

19、谓的Webkit 就是Apple Safari 浏览器背后的引擎。Surface flinger 是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。Android采用OpenCORE作为基础多媒体框架。Open CORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。Android 使用skia 为核心图形引擎,搭

20、配OpenGL/ES。skia与Linux Cairo功能相当,但相较于Linux Cairo, skia 功能还只是雏形的。2005年Skia公司被Google收购,2007年初,Skia GL源码被公开,Skia 也是Google Chrome 的图形引擎。Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库。Android的中间层多以Java 实现,并且采用特殊的Dalvik 虚拟机(Dalvik Virtual Machine)。Dalvik虚拟机是一种“暂存器型态”(Reg

21、ister Based)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。Dalvik虚拟机可以有多个实例(Instance), 每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik 虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。6、安全权限机制Android本身是一个权限分立的操作系统。在这类操作系统中,每个应用都以唯一的一个系统识别身份运行(Linux用户ID与群组ID)。系统的各部分也分别使用各自独立的识别方式。Linux就是这样将应用与应用,应用与系统隔离开。系统更多的安全功能通

22、过权限机制提供。权限可以限制某个特定进程的特定操作,也可以限制每个URI权限对特定数据段的访问。Android安全架构的核心设计思想是,在默认设置下,所有应用都没有权限对其他应用、系统或用户进行较大影响的操作。这其中包括读写用户隐私数据(联系人或电子邮件),读写其他应用文件,访问网络或阻止设备待机等。安装应用时,在检查程序签名提及的权限,且经过用户确认后,软件包安装器会给予应用权限。从用户角度看,一款Android应用通常会要求如下的权限:拨打电话、发送短信或彩信、修改/删除SD卡上的内容、读取联系人的信息、读取日程信的息,写入日程数据、读取电话状态或识别码、精确的(基于GPS)地理位置、模糊

23、的(基于网络获取)地理位置、创建蓝牙连接、对互联网的完全访问、查看网络状态,查看WiFi状态、避免手机待机、修改系统全局设置、读取同步设定、开机自启动、重启其他应用、终止运行中的应用、设定偏好应用、震动控制、拍摄图片等。一款应用应该根据自身提供的功能,要求合理的权限。用户也可以分析一款应用所需权限,从而简单判定这款应用是否安全。如一款应用是不带广告的单机版,也没有任何附加的内容需要下载,那么它要求访问网络的权限就比较可疑。2.1.6 应用组件Android开发四大组件分别是:活动(Activity): 用于表现功能。服务(Service): 后台运行服务,不提供界面呈现。广播接收器(Broad

24、castReceiver):用于接收广播。内容提供商(Content Provider): 支持在多个应用中存储和读取数据,相当于数据库。【2】1、活动Android 中,Activity是所有程序的根本,所有程序的流程都运行在Activity 之中,Activity可以算是开发者遇到的最频繁,也是Android 当中最基本的模块之一。在Android的程序当中,Activity 一般代表手机屏幕的一屏。如果把手机比作一个浏览器,那么Activity就相当于一个网页。在Activity 当中可以添加一些Button、Check box 等控件。可以看到Activity 概念和网页的概念相当类似

25、。一般一个Android 应用是由多个Activity 组成的。这多个Activity 之间可以进行相互跳转,例如,按下一个Button按钮后,可能会跳转到其他的Activity。和网页跳转稍微有些不一样的是,Activity 之间的跳转有可能返回值,例如,从Activity A 跳转到Activity B,那么当Activity B 运行结束的时候,有可能会给Activity A 一个返回值。这样做在很多时候是相当方便的。当打开一个新的屏幕时,之前一个屏幕会被置为暂停状态,并且压入历史堆栈中。用户可以通过回退操作返回到以前打开过的屏幕。可以选择性的移除一些没有必要保留的屏幕,因为Androi

26、d会把每个应用的开始到当前的每个屏幕保存在堆栈中。2、服务Service 是android 系统中的一种组件,它跟Activity 的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。Service 是没有界面的长生命周期的代码。Service是一种程序,它可以运行很长时间,但是它却没有用户界面。这么说有点枯燥,来看个例子。打开一个音乐播放器的程序,这个时候若想上网了,那么,打开Android浏览器,这个时候虽然已经进入了浏览器这个程序,但是,歌曲播放并没有停止,而是在后台继续一首接着一首的播放。其实这个播放就是由播放音乐的Service进行控制。当然这个播放音乐的Se

27、rvice也可以停止,例如,当播放列表里边的歌曲都结束,或者用户按下了停止音乐播放的快捷键等。Service 可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD 卡上文件的变化,再或者在后台记录地理信息位置的改变等等,总之服务嘛,总是藏在后头的。开启Service有两种方式:(1) Context.startService():Service会经历onCreate - onStart(如果Service还没有运行,则android先调用onCreate()然后调用onStart();如果Service已经运行,则只调用onS

28、tart(),所以一个Service的onStart方法可能会重复调用多次 );StopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用StopService的话,Service会一直在后台运行。该Service的调用者再启动起来后可以通过stopService关闭Service。 注意,多次调用Context.startservice()不会嵌套(即使会有相应的onStart()方法被调用),所以无论同一个服务被启动了多少次,一旦调用Context.stopService()或者StopSelf(),他都会被停止。补充说明:传递给StartService(0的I

29、ntent对象会传递给onStart()方法。调用顺序为:onCreate - onStart(可多次调用) - onDestroy。(2) Context.bindService():Service会经历onCreate() -onBind(),onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Srevice就会调用onUnbind - onDestroyed相应退出,所谓绑定在一起就共存亡了。3、广播接收

30、器在Android 中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver 是对发送出来的Broadcast进行过滤接受并响应的一类组件。可以使用BroadcastReceiver 来让应用对一个外部的事件做出响应。这是非常有意思的,例如,当电话呼入这个外部事件到来的时候,可以利用BroadcastReceiver 进行处理。例如,当下载一个程序成功完成的时候,仍然可以利用BroadcastReceiver 进行处理。BroadcastReceiver不能生成UI,也就是说对于用户来说不是透明的,用户是看不到的。BroadcastReceive

31、r通过NotificationManager 来通知用户这些事情发生了。BroadcastReceiver 既可以在AndroidManifest.xml 中注册,也可以在运行时的代码中使用Context.registerReceiver()进行注册。只要是注册了,当事件来临的时候,即使程序没有启动,系统也在需要的时候启动程序。各种应用还可以通过使用Context.sendBroadcast () 将它们自己的Intent Broadcasts广播给其他应用程序。4、内容提供Content Provider 是Android提供的第三方应用数据的访问方案。在Android11中,对数据的保护是

32、很严密的,除了放在SD卡中的数据,一个应用所持有的数据库、文件等内容,都是不允许其他直接访问的。Andorid当然不会真的把每个应用都做成一座孤岛,它为所有应用都准备了一扇窗,这就是Content Provider。应用想对外提供的数据,可以通过派生Content Provider类, 封装成一枚Content Provider,每个Content Provider都用一个uri作为独立的标识,形如:content:/com.xxxxx。所有东西看着像REST的样子,但实际上,它比REST 更为灵活。和REST类似,uri也可以有两种类型,一种是带id的,另一种是列表的,但实现者不需要按照这个

33、模式来做,给id的uri也可以返回列表类型的数据,只要调用者明白,就无妨,不用苛求所谓的REST。2.17 平台优势1、开放性在优势方面,Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。2、不受束缚在过去很长的一段时间,特别是在欧美地区,手机应用往往

34、受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。自从2007年iPhone上市后,用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈。3、丰富的硬件这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容,如同从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移。4、

35、方便开发Android平台提供给第三方开发商一个十分宽泛、自由的环境,不会受到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的程序和游戏如何控制正是留给Android难题之一。5、Google应用在互联网的Google已经走过10年度历史,从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。2.2 GPS2.2.1 概述利用GPS定位卫星,在全球范围内实时进行定位、导航的系统,称为全球卫星定位系统,简称GPS。GPS是英文Global

36、 Positioning System(全球定位系统)的简称。GPS起始于1958年美国军方的一个项目,1964年投入使用。20世纪70年代,美国陆海空三军联合研制了新一代卫星定位系统GPS。主要目的是为陆海空三大领域提供实时、全天候和全球性的导航服务,并用于情报收集、核爆监测和应急通讯等一些军事目的,经过20余年的研究实验,耗资300亿美元,到1994年,全球覆盖率高达98%的24颗GPS卫星星座己布设完成。在机械领域GPS则有另外一种含义:产品几何技术规范(Geometrical Product Specifications)-简称GPS,另外一种解释为G/s(GB per s)。GPS可

37、以提供车辆定位、防盗、反劫、行驶路线监控及呼叫指挥等功能。要实现以上所有功能必须具备GPS终端、传输网络和监控平台三个要素。2.2.2 工作原理GPS导航系统的基本原理是测量出已知位置的卫星到用户接收机之间的距离,然后综合多颗卫星的数据就可知道接收机的具体位置。要达到这一目的,卫星的位置可以根据星载时钟所记录的时间在卫星星历中查出。而用户到卫星的距离则通过记录卫星信号传播到用户所经历的时间,再将其乘以光速得到(由于大气层电离层的干扰,这一距离并不是用户与卫星之间的真实距离,而是伪距(PR):当GPS卫星正常工作时,会不断地用1和0二进制码元组成的伪随机码(简称伪码)发射导航电文。GPS系统使用

38、的伪码一共有两种,分别是民用的C/A码和军用的P(Y)码。C/A码频率1.023MHz,重复周期一毫秒,码间距1微秒,相当于300m;P码频率10.23MHz,重复周期266.4天,码间距0.1微秒,相当于30m。而Y码是在P码的基础上形成的,保密性能更佳。导航电文包括卫星星历、工作状况、时钟改正、电离层时延修正、大气折射修正等信息。它是从卫星信号中解调制出来,以50b/s调制在载频上发射的。导航电文每个主帧中包含5个子帧每帧长6s。前三帧各10个字码;每三十秒重复一次,每小时更新一次。后两帧共15000b。导航电文中的内容主要有遥测码、转换码、第1、2、3数据块,其中最重要的则为星历数据。当

39、用户接受到导航电文时,提取出卫星时间并将其与自己的时钟做对比便可得知卫星与用户的距离,再利用导航电文中的卫星星历数据推算出卫星发射电文时所处位置,用户在WGS-84大地坐标系中的位置速度等信息便可得知。可见GPS导航系统卫星部分的作用就是不断地发射导航电文。然而,由于用户接受机使用的时钟与卫星星载时钟不可能总是同步,所以除了用户的三维坐标x、y、z外,还要引进一个t即卫星与接收机之间的时间差作为未知数,然后用4个方程将这4个未知数解出来。所以如果想知道接收机所处的位置,至少要能接收到4个卫星的信号。GPS接收机可接收到可用于授时的准确至纳秒级的时间信息;用于预报未来几个月内卫星所处概略位置的预

40、报星历;用于计算定位时所需卫星坐标的广播星历,精度为几米至几十米(各个卫星不同,随时变化);以及GPS系统信息,如卫星状况等。GPS接收机对码的量测就可得到卫星到接收机的距离,由于含有接收机卫星钟的误差及大气传播误差,故称为伪距。对 CA码测得的伪距称为CA码伪距,精度约为20米左右,对P码测得的伪距称为P码伪距,精度约为2米左右。GPS接收机对收到的卫星信号,进行解码或采用其它技术,将调制在载波上的信息去掉后,就可以恢复载波。严格而言,载波相位应被称为载波拍频相位,它是收到的受多普勒频 移影响的卫星信号载波相位与接收机本机振荡产生信号相位之差。一般在接收机钟确定的历元时刻量测,保持对卫星信号

41、的跟踪,就可记录下相位的变化值,但开始观测时的接收机和卫星振荡器的相位初值是不知道的,起始历元的相位整数也是不知道的,即整周模糊度,只能在数据处理中作为参数解算。相位观测值的精度高至毫米,但前提是解出整周模糊度,因此只有在相对定位、并有一段连续观测值时才能使用相位观测值,而要达到优于米级的定位 精度也只能采用相位观测值。按定位方式,GPS定位分为单点定位和相对定位(差分定位)。单点定位就是根据一台接收机的观测数据来确定接收机位置的方式,它只能采用伪距观测量,可用于车船等的概略导航定位。相对定位(差分定位)是根据两台以上接收机的观测数据来确定观测点之间的相对位置的方法,它既可采用伪距观测量也可采

42、用相位观测量,大地测量或工程测量均应采用相位观测值进行相对定位。在GPS观测量中包含了卫星和接收机的钟差、大气传播延迟、多路径效应等误差,在定位计算时还要受到卫星广播星历误差的影响,在进行相对定位时大部分公共误差被抵消或削弱,因此定位精度将大大提高,双频接收机可以根据两个频率的观测量抵消大气中电离层误差的主要部分,在精度要求高,接收机间距离较远时(大气有明显差别),应选用双频接收机。2.2.3 定位原理GPS定位的基本原理是根据高速运动的卫星瞬间位置作为已知的起算数据,采用空间距离后方交会的方法,确定待测点的位置。如图所示,假设t时刻在地面待测点上安置GPS接收机,可以测定GPS信号到达接收机

43、的时间t,再加上接收机所接收到的卫星星历等其它数据可以确定以下四个方程式。 图 2-2 GPS定位原理Fig.2-2 GPS Positioning Principle2.2.4 定位精度28颗卫星(其中4颗备用)早已升空,分布在6条交点互隔60度的轨道面上,距离地面约20000千米。已经实现单机导航精度约为10米,综合定位的话,精度可达厘米级和毫米级。但民用领域开放的精度约为10米。数据表示:一般从 GPS 得到的数据是经纬度。经纬度有多种表示方法。1.)ddd.ddddd, 度.度的十进制小数部分(5 位)2.)ddd.mm.mmm,度.分.分的十进制小数部分(3 位)3.) ddd.mm

44、.ss, 度.分.秒2.2.5 数据GPS模块SiRFStarIII接受每二输出位置的数据,通常$GPRMC精简数据格式的数据,包括纬度,经度的目的,速度(结),运动方向角,年,月,时,分,秒,毫秒,定位数据是有效的或无效的,和其他重要信息。语句格式如下:$GPRMC,*,HH只需要知道位置信息,所以在阅读唯一的,可以实际应用。:当地时间代表UTC。格式“当每分钟,小时,分钟和秒2。:工作代表国家。”“显示可用的数据,“V”表示接受警报,没有可用的数据。:代表纬度数据。“子级的格式。分分分。”:纬度半球为代表的“N”或“S”。:代表经度数据。格式和LD现状;度分钟。sub-sub-sub-su

45、b.”:代表经度半球,为“E”或“软件读取经纬度数据,目前的位置停止分析,确定用户的当前位置在该地区建立和平。的方法是基于用户的设置确定中心的纬度和经度和纬度和经度计算出活动维持当前的对象可以超过和平活动预定半径。结果的基础上的歧视,设置相应的标志。2.2.6 主要功能导航,测量,授时。2.2.7 组成部分空间部分GPS的空间部分是由24颗卫星组成(21颗工作卫星;3颗备用卫星),它位于距地表20200km的上空,运行周期为12h。卫星均匀分布在6个轨道面上(每个轨道面4颗),轨道倾角为55。卫星的分布使得在全球任何地方、任何时间都可观测到4 颗以上的卫星,并能在卫星中预存导航信息,GPS的卫

46、星因为大气摩擦等问题,随着时间的推移,导航精度会逐渐降低。地面控制系统地面控制系统由监测站(Monitor Station)、主控制站(Master Monitor Station)、地面天线(Ground Antenna)所组成,主控制站位于美国科罗拉多州春田市(Colorado. Springfield)。地面控制站负责收集由卫星传回之讯息,并计算卫星星历、相对距离,大气校正等数据。用户设备部分用户设备部分即GPS信号接收机。其主要功能是能够捕获到按一定卫星截止角所选择的待测卫星,并跟踪这些卫星的运行。当接收机捕获到跟踪的卫星信号后,就可测量出接收天线至卫星的伪距离和距离的变化率,解调出卫

47、星轨道参数等数据。根据这些数据,接收机中的微处理计算机就可按定位解算方法进行定位计算,计算出用户所在地理位置的经纬度、高度、速度、时间等信息。接收机硬件和机内软件以及GPS 数据的后处理软件包构成完整的GPS 用户设备。GPS接收机的结构分为天线单元和接收单元两部分。接收机一般采用机内和机外两种直流电源。设置机内电源的目的在于更换外电源时不中断连续观测。在用机外电源时机内电池自动充电。关机后机内电池为RAM存储器供电,以防止数据丢失。各种类型的接受机体积越来越小,重量越来越轻,便于野外观测使用。其次则为使用者接收器,现有单频与双频两种,但由于价格因素,一般使用者所购买的多为单频接收器。2.2.

48、8 主要模块GPS模块系统采用第三代高线式GPS模块接受SiRF StarGPS模块SiRF灵活性。该芯片是小于10米的定位精度,能够同时追踪20个卫星信道。其内部的可充电电池,可以保持星历数据,快速定位。对于数据的输出电平的串行数据格式,通信速度。波特率4800,每名GPS数据输出。该模块采用MMCX GPS天线接口,为6线连接器,数据线接口电缆输出,使用简单,一般情况下只需要使用三个输出线,第一连接3.5 5.5V的直流供电,第五脚是电源,脚的第二行是GPS测量输出的是TTL电平信号,串行端口,高大于2.4V,低小于400mV,输出驱动器的启动,直接与单片机的接口。如果只使用默认设置,单片

49、机读取数据只能从模块可以。【3】2.3 百度地图API百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口,它能够帮助开发者在应用中构建功能丰富、交互性强的地图应用程序。百度移动版地图SDK,分为Android版与Symbian版,为移动设备地图应用开发提供基本地图、本地搜索、路线规划、定位等服务。若用户使用该套SDK,也需要先申请key。【4】百度地图定位SDK,与百度移动版地图SDK相比,是以更小的体积提供给开发者,帮助开发者完成位置信息获取与应用开发的工具。百度地图目前提供Android和Symbian版本,且开发者是不需要申请key就可使用。百度地图作

50、为本地地图服务器提供者,具有其他诸如谷歌地图、高德地图无法比拟的优点。从信息量上讲,百度地图更注重用户活动区域,城市地理信息更详细,周边的建筑以及商家更新快,资料较新。它支持用户、商家以及建筑的用户标注,这使得用户常用的地址信息可以更新及查找。高德等导航地图提供者更注重路线的准确性,以及偏远地区的路线,信息量较少。【5】3 总体设计本章主要介绍系统设计方案,本应用分为地图显示、地图定位、查询地址信息及保存地址信息、查看位置四部分部分,下面分别介绍每一部分的设计方案。3.1地图显示通过调用百度地图API,连接百度地图服务器,实现地图的显示。添加地图缩放控件,实现地图的放大或缩小查看。添加卫星图显

51、示功能,可以查看卫星拍摄的鸟瞰地图。3.2地图定位获得GPS使用权限以及网络的使用权限,获得经度与纬度信息,实现设备的定位,并显示到地图。 3.3 地址信息显示及保存将获得的地址详细信息以文本形式展现,并可以保存到SD卡。3.4 查看位置此部分实现经纬度的输入,提供给用户经纬度输入的控件,将用户所输入的经纬度信息显示到地图。 4 详细设计4.1 搭建Android开发环境4.1.1 Android开发环境要求Windows XP 以上操作系统,本设计采用 Windows 7(64位)。4.1.2 安装JDK打开JDK安装包,根据提示安装。安装完成后,设置环境变量。【4】安装完成之后,可以在检查

52、JDK是否安装成功。打开cmd窗口,输入java -version 查看JDK的版本信息4.1.3 安装Eclipse下载包文件,解压即可,无需安装。4.1.4 安装Android SDK在AndroidDevelopers下载android-sdk_r05-windows.zi。运行SDKSetup.exe,检查更新。在用户变量中新建PATH值为:AndroidSDK中的tools绝对路径。重新启动计算机。重启计算机以后,进入cmd命令窗口,输入Android -h检查SDK是不是安装成功。4.1.5 安装ADT插件首先在Android 官方网站下载ADT,将压缩包解压。将解压后的featu

53、res包和plugins包中的内容分别复制到Eclipse对应的features和plugins文件夹中。重新启动Eclipse,选择“Windows-Preference”菜单命令,在弹出的Preferences对话框右边多了“Android”项。单击Android项,在对话框右边的“SDK Location”文本框中,设置Android SDK的安装路径。4.1.6 创建模拟器AVD为使Android应用程序可以在模拟器上运行,必须创建AVD。 4.2 新建工程新建安卓工程,本设计参数新建如下:命名为:ABCMap,建设目标为:Android2.2,并新建Activity,命名为map,最

54、小SDK版本为8。4.3 申请百度地图Key4.3.1 简介为了给用户提供更安全的服务,Android SDK自v2.1.3版本开始采用了全新的Key验证体系。新Key机制:每个Key仅且唯一对于1个应用验证有效,即对该Key配置环节中使用的包名匹配的应用有效。因此,多个应用【包括多个包名】需申请多个Key,或者对1个Key进行多次配置。用户在使用SDK之前需要获取百度地图移动版的开发密钥,Key的申请地址为:说明: 在新key机制下,若需要在同一个工程中同时使用Android SDK、Android导航SDK和Android定位SDK可以共用同一个key。 4.3.2申请步骤1 登录百度账号

55、登录录百度账号,访问API控制台页面。2 登陆API控制台登录会跳转到API控制台服务3 创建应用点击创建应用,系统将为您弹出创建AK页面,输入应用名称,将应用类型改为:“for mobile”4 配置应用在应用类型选为“for mobile”后,需要配置应用的安全码5 获取安全码输入“安全码”。安全码的组成规则为:Android签名证书的sha1值+“;”+packagename(即:数字签名+分号+包名)注意:中间的分号为英文状态下的分号!5.1 获取sha1值运行进入控制台,定位到.android文件夹下,输入cd .android,输入keytool -list -v -keystor

56、e debug.keystore,会得到三种指纹证书,选取SHA1类型的证书(密钥口令是android)5.2 获取包名包名是Android应用程序本身在AndroidManifest.xml 中定义的名称6 成功创建KEY在输入安全码后,点击“确定”完成应用的配置工作,将会得到一个创建的Key。4.4 功能实现4.4.1 工程配置在工程里新建libs文件夹,将开发包里的baidumapapi_v2_4_1.jar拷贝到libs根目录下,将libBaiduMapSDK_v2_4_1.so拷贝到libsarmeabi目录下(需要自己添加)。在工程属性-Java Build Path-Libraries中选择“Add External JARs”,选定baidumapapi_v2_4_1.jar,确定后返回。通过以上两步操作后,就可以正常使用百度地图SDK提供的全部功能了。4.4.2 显示地图创建并配置工程(具体方法参见工程配置部分的介绍)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论