毕业设计(论文)-智能手机GPS功能的实现.doc

上传人:西安人 文档编号:3949752 上传时间:2019-10-11 格式:DOC 页数:30 大小:1.38MB
返回 下载 相关 举报
毕业设计(论文)-智能手机GPS功能的实现.doc_第1页
第1页 / 共30页
毕业设计(论文)-智能手机GPS功能的实现.doc_第2页
第2页 / 共30页
毕业设计(论文)-智能手机GPS功能的实现.doc_第3页
第3页 / 共30页
毕业设计(论文)-智能手机GPS功能的实现.doc_第4页
第4页 / 共30页
毕业设计(论文)-智能手机GPS功能的实现.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《毕业设计(论文)-智能手机GPS功能的实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-智能手机GPS功能的实现.doc(30页珍藏版)》请在三一文库上搜索。

1、智能手机GPS功能的实现 摘要 所谓的GPS是指利用GPS定位卫星,在全球范围内实时进行定位、导航的系统,其全称为全球卫星定位系统。在空间技术和通信技术的推动下,GPS自诞生40余年以来,得到了迅猛的发展。同时随着智能移动终端的不断发展,GPS技术从过去的单一设备逐步渗入到智能手机设备的开发上。智能手机GPS功能的实现作为GPS技术与智能手机技术的结合,从手机导航具有便携性好、价格较低、永远在线等方面来说,所以说在全球最流行的安卓智能手机上研制GPS导航系统是非常有意义的。论文首先概要介绍了GPS技术的发展现状和前景,研究了基于基于Android平台的移动终端GPS系统开发的可信性及需求分析;

2、然后详细阐述了Android系统的由来与安装;接着在分析用户需求的基础上,对系统的功能模块进行了划分;最后进行了具体的程序编写以及测试工作,测试结果表明,该系统已能完成GPS手持终端的基本功能,在目前安卓智能手机普及的情况下,野外无需再专门购置设备,使用成本大大降低,且携带方便,可随时进行野外作业。因此,本系统有着广阔的应用前景。 关键词:GPS Android 全球定位系统 卫星定位 安卓智能手机目录第一章 绪论11.1 引言11.2 研究内容11.3 论文结构安排2第二章 Android系统下的软件开发32.1 Android系统简介32.1.1 Android的由来32.1.2 Andr

3、oid的系统架构32.1.3 Android的应用程序开发42.2 Android开发环境的构建42.2.2 JAVA JDK的安装 42.2.3 Eclipse的安装62.2.4 ADT的安装62.2.5 Android SDK的安装6第三章 系统分析与设计83.1 研究目标 83.2 需求分析 83.3 系统功能设计 8第四章 系统实现 94.1 Elipse文件的结构及功能94.2 界面设计104.3 程序模块以及功能设计104.3.1 程序模块介绍104.3.2 程序模块的功能104.4 主要功能的实现114.4.1获得Google Map API Key124.4.2 布局及按钮的设

4、置144.4.3 配置窗体部件字符串文件154.4.4关于应用配置及声明的设置154.4.5 主程序框架介绍164.4.5.1 地图放大缩小的相关操作174.4.5.2 对卫星视图的相关设定184.4.5.3 对坐标显示区域的设置18第五章 系统测试19结论 23致谢 24参考文献25III第一章 绪论1.1 引言GPS是英文Global Positioning System(全球定位系统)的简称,最早它是20世纪70年代由美国陆海空三军联合研制的空间卫星导航定位系统 。其主要目的是为陆、海、空三大领域提供实时、 全天候和全球性的导航服务,并用于情报收集、核爆监测和应急通讯等一些军事目的,经过

5、40余年的研究实验,GPS技术的运用已去向平民化,且日益成熟。由于GPS系统所具有的全天候,高精度,和自动测量的特点,作为先进的测量手段和新的生产力,已经融入到了国民经济建设,国防建设和社会发展的各个应用领域。其运用提高了生产力,作业效率,科学水平以及人们生活质量,因此可以说GPS技术在经济全球化的今天起着举足轻重的作用,而且可以预见的是全球定位技术对于人们的生活也将越来越凸显它的重要性,人们的生活也将越来越离不开它的存在。目前,全球共有四种全球定位系统,包括美国的GPS,俄罗斯的格洛纳斯,欧洲的伽利略和中国的北斗,相比较而言,美国的GPS全球定位系统组建的最早,技术也最为成熟,但由我国自主研

6、发的北斗定位系统也毫不逊色。北斗卫星导航系统是中国自行研制开发的区域性有源三维卫星定位,可在全球范围内全天候、全天时为各类用户提供高精度、高可靠的定位、导航、授时服务1。可以说,上至航空航天,下至工业、渔业、农业生产和日常生活,全球卫星导航定位技术无所不在。正如人们所说的:“全球卫星导航系统的应用,仅受人类想象力的制约。”1.2 研究内容为了实现智能手机GPS功能,我事先做了大量的准备。包括前期对智能手机实现GPS功能这个课题的研究意义及需求进行了分析,也制定出了相应的研究目标及所实现的GPS的性能指标。然后,我查找了大量书籍,深入了解了安卓操作系统,明白了Android操作系统的由来系统构架

7、以及开发Android应用程序所必须具备的计算机运行环境。我根据书上的性息,在自己的计算机上搭建了Android开发环境平台。在论文的中期,我研究了安卓的定位方式,其相对来说还是比较简单的,目前我们可以使用位置管理器和位置提供者进行getLocation的调用。这个方法返回本机的当前位置的一个快照,这个快照将以Location对象形式提供。在手持设备中,我们可以获得当前位置的经度和纬度。这样就完成了自己位置的确定,如果需要查看自己所在的位置的话还需要调用一个地图的API比如GoogleMap2。调用之后就可以在地图显示自己的位置了。在本次的项目中主要用到的就是当前的经度和纬度,并通过Googl

8、eMap调用当前的地理位置信息,还可以通过视图切换按钮,从手机的视图框中观察到当前位置的卫星视图。有以上研究结果,我编写出了程序的初步代码。论文后期,已经完成了基于安卓GPS定位工程的代码编写工作,并对此工程进行运行测试,在安卓2.2智能手机平台,运行此工程,所得到的结果还是比较让人满意的。1.3 论文结构安排论文将按照下面的描述进行内容的安排。第一章引言,简要介绍了GPS技术的发展,指出了课题研究的背景、意义和主要内容。第二章Android系统下的软件开发,对安卓系统的由来及系统构架做了分析和探讨,然后详细介绍了安卓的开发环境且在自己的计算机上完成了运行环境的搭建。第三章系统分析与设计,明确

9、了系统研究的目标,描述了系统的功能结构,对系统需求进行了分析。第四章系统实现,对程序进行了操作界面的设计,以及具体的编写和模块搭建工作。第五章系统测试,描述了对安卓智能手机实体机运行软件的测试。说明了程序运行及安装的方法,进行了现实中的GPS定位。结论与致谢,总结了本课题的研究工作,提出了今后进一步工作的方向,并向我帮助和关心我的老师、同学和朋友们表示了衷心的感谢。 第二章 Android系统下的软件开发2.1 Android系统简介2.1.1 Android的由来Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用“安卓

10、”或“安致”。Android操作系统最初由Andy Rubin开发,最初主要支持手机3。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。Android的主要竞争对手是苹果公司的iOS以及RIM的Android OS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年2月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。2.1.2 Android的系统架构Android的系统架构和其它操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低

11、层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层4。 Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。 在Android中,开发者可以使用Java作为编程语言来开发应用程序,也可以通过NDK使用C/C+作为编程语言来开发应用程序,也可使用SL4A来使用其他各种脚本语言进行编程,还有其他诸如:Qt(qt for android)、Mono

12、(mono for android)等一些著名编程框架也开始支持Android编程,甚至通过MonoDroid,开发者还可以使用C#作为编程语言来开发应用程序。另外,谷歌还在2009年特别发布了针对初学者的Android Simple语言,类似Basic语言。而在网页编程语言方面,JavaScript,HTML5, dojo、mobl、PhoneGap等等都已经支持Android平台。而在Android系统底层方面,Android使用C/C+作为开发语言5。2.1.3 Android的应用程序开发早期的Android应用程序开发,通常通过Android SDK(Android软件开发包)下使用

13、Java作为编程语言来开发应用程序,但通过不同的软件开发包,则使用的编程语言也不同。 例如开发者可以通过Android NDK(Android Native开发包)使用C语言或者C+语言来作为编程语言开发应用程序。同时谷歌还推出了适合初学者编程使用的Simple语言,该语言类似微软公司的Visual Basic语言6。此外,谷歌公司还推出了Google App Inventor开发工具,该开发工具可以快速地构建应用程序,方便新手开发者。2.2 Android开发环境的构建2.2.1 Android系统开发环境基本组成Android的上层应用程序是用Java语言开发,同时还需要基于Dalvik虚

14、拟机,所以,Google公司推荐使用主流的Java继承开发环境Eclipse。只有Eclipse还不够,因为是使用Java语言进行开发,还应该有由SUN公司提供的Java SDK(其中包括JRE:Java Runtime Environment)。此外,Android的应用程序开发和Java开发有较大区别的,所以还需要有Google提供的Android SDK。同时,还需要在Eclipse安装ADT,为Android开发提供开发工具的升级或者变更,是Eclipse下开发工具的升级下载的工具。简言之,需要以下软件,才能搭建Android开发环境,从而进行Android应用程序的开发7。(1) J

15、ava JDK(2) Eclipse(3) ADT (4) Android SDK2.2.2 JAVA JDK的安装首先登陆JAVA JDK官网,http:/ JDK。安装完成后,还需要设置环境变量,打开我的电脑-属性-高级系统设置-环境变量-系统变量中添加以下环境变量,如图2.1所示。图2.1 添加系统环境变量 (1)JAVA_HOME指明JDK安装路径,就是刚才安装时的路径C:Program FilesJavajdk1.6.0_21,此路径下包括lib,bin,jre等文件夹 (2)PATH Path使得系统可以在任何路径下识别java命令,设为:%JAVA_HOME%bin;%JAVA_

16、HOME%jrebin (3)CLASSPATH CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设为:.;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar(要加.表示当前路径,%JAVA_HOME%就是引用前面指定的JAVA_HOME。)上述环境变量设置好了后,从开始菜单栏中运行cmd,在命令窗口里面运行“java version”命令,如果可以从窗口中看到类似图2.2的信息,即为安装成功。图2.2 环境变量成功提示2.2.3 Eclipse的安装登陆Eclipse的官网http:/www.e

17、clipse.org/downloads/并下载Eclipse,下载完成后,双击Eclipse解压后目录中的eclipse.exe然后启动,选择Eclipse菜单中的Help- Install New Software- 选项卡上的Available Software,点击右侧的“Add”输入http:/dl- with”下拉菜单中选择刚才输入的网址。过一会就会出现一个Developer Tools选项,勾上以后点击Next以后Eclipse会自动网上查找Android 开发工具插件,然后找到Android DDMS和Android Development Tools,选中这两个点击Finis

18、h,Eclipse就会自动下载并安装Android插件了,最后会提示重启Eclipse8。2.2.4 ADT的安装重启后打开Eclipse菜单Help-install new software 选择ADT ,输入Name:ADT ;Location:https:/dl- Next,接受其中的协议,最后会自动安装。2.2.5 Android SDK的安装登陆Android SDK下载页面http:/ SDK,下载完成后解压。然后选择Eclipse菜单中的Windows- Preferences 在左侧的Android项目中SDK Location中填入Android SDK解压后的目录,然后点击

19、Apply,如图2.3所示。图2.3 SDK安装成功界面按“确定”后,重新启动计算机。重启计算机以后,进入cmd命令窗口运行 android -h 如果有类似以下的输出,如图2.4所示,表明SDK安装成功:图2.4 验证Android SDK是否安装成功至此Android的开发环境搭建成功15。第三章 系统分析与设计3.1 研究目标使用组件技术在Android 平台实现手机GPS软件的开发。具体目标包括:(1)界面友好,简单实用,可操作性强,适合各年龄阶层使用(2)程序运行速度快,占用系统内存小(3)软件大小要小,便于用户用手机直接下载使用3.2 需求分析本设计实现了基于Android 平台手

20、机开发的GPS接收机系统设计的运行。 GPS应用越来越广泛,我们的设计只是应用的基础和开端。在实际应用中我们要结合各个领域的特殊情况和特定的技术需求,进行有针对性的处理和设计。GPS提供的定位信息包括了经度、纬度、海拔、速度、航向、磁场、时间、卫星个数及其编号等卫星信息其接收数据方法类似,故本设计只是提取了其中的部分价值性较高的数据信息,主要就是显示用户当前所在位置的经纬度坐标,并可以对视图框中的地图进行放大和缩小操作,如果用户看不懂地图,还可以调用此区域的卫星视图。3.3 系统功能设计系统的主要功能包括:(1)定位当前位置信息,通过智能手机内置的GPS硬件,对用户的地理位置进行卫星定位,将所

21、得到的经纬度显示在操作界面上,并将此坐标上传至GoogleMap,以便获得当前位置的地图信息,然后将得到的信息以图片的形式显示在手机终端上。(2)地图信息的放大和缩小,用户如果所在位置比较空旷,难以从地图上辨认位置,便可放大或缩小地图,通过观察附近的道路或村庄来推断自己的实际位置。(3)卫星视图切换,如果用户的地图意识不强,还可以进行视图切换,看到此区域的卫星视图,这样以来就可以通过观看地图上的房屋排列或者是标志性建筑来进行定位。第四章 系统实现4.1 Elipse文件的结构及功能 首先,要在Eclipse里面创建一个新工程,命名为MapView,如图4.1所示。图4.1 工程的源代码文件 下

22、面介绍下Android的工程目录结构。res:放置应用程序用到的资源文件。其包含(Drawable,layout,values等目录)。当这个目录下的文件发生变化时,src目录下面的R.java就会自动发生变化。assets:主要放置多媒体等数据文件 。res/drawable:放置应用到的图片资源。res/layout:放置一些与UI相应的布局文件,都是xml文件。res/values:放置字符串,颜色,数组等常量数据。AndroidManifest.xml:相当于应用的配置文件。在此文件里必须声明应用的名称,应用所用到的Activity,Service,Reveiver等10。4.2 界面

23、设计根据需求分析可以知道,应用程序包含一个界面就可以了,但是这个界面虽然简单,但是要包含一个视图框、三个按钮和一个状态栏。您当前的位置是:纬度:经度:放大缩小卫星视图(开)视图框根据对用户界面显示内容的分析,绘制出用户界面的草图,如图4.2所示。 图4.2 用户界面草图4.3 程序模块以及功能设计4.3.1 程序模块介绍该程序的模块设计非常简单,总共分为五个模块:一个视图框、一个坐标显示区域和三个按钮。视图框负责对当前位置进行图像进行显示。坐标显示区域负责对显示当前坐标。三个按钮分别为:放大,缩小,卫星视图。4.3.2 程序模块的功能 (1)坐标显示区域 LocationManager.GPS

24、_PROVIDER 视图框将从GPS获取最近的定位信息。 location.getLatitude,获取纬度信息。 location.getLongitude,获取经度信息14。 (2)视图框 根据GPS的定位信息,系统将通过com.google.android.maps 把地图显示在视图框中。 (3)放大、缩小钮 分别调用zoomIn和zoomOut来放大或缩小地图(4)卫星视图编写switchMap来调用mapview.setSatellite来实现卫星视图和普通视图之间的切换。到这里该程序所要实现的功能就基本可以实现了。4.4 主要功能的实现 为了实现系统功能,我对此进行了深入的研究。要

25、知道每一种移动开发环境都有自己的基类。如J2ME应用程序的基类是midlets,而Android程序的基类是 Activity。这个Activity为我们提供了对移动操作系统的基本功能和事件的访问。这个类包含了基本的构造方法,键盘处理,挂起来恢复功能,以及其他底层的手持设备的访问。实质上,我们的应用程序将是一个Activity类的扩展。在本论文中我将使用Activity类来编写Android程序。 View类是Android的一个超类,这个类几乎包含了所有的屏幕类型。但它们之间有一些不同。每一个view都有一个用于绘画的画布。这个画布可以用来进行任意扩展。本文为了方便起见,只涉及到了两个主要的

26、View类型:定义View和Android的XML内容View。在上面的代码中,使用的是 “Hello World” XML View,它是以非常自然的方式开始的。如果我们查看一下新的Android工程,就会发现一个叫main.xml的文件。在这个文件中,通过一个简单的XML文件,描述了一个屏幕的布局。由于本文主要应用就是Google Map API,所以其中涉及到大量方法以及相关参数,简单介绍如下12: (1)GBrowserIsCompatible() -是否支持Google Map API (2)location.getLatitude() 目标位置的纬度坐标; (3)location.

27、getLongitude() 目标位置的经度坐标 (4)new GLatLng(myLat, myLng) -设置经纬度 (5)map.setCenter(new GLatLng(myLat, myLng), 14) -设置地图默认的中心点经纬度 (6)new GLatLng(myLat, myLng) -设置中心点的经纬度 (7)14 -地图的默认缩放比例大小值,范围为1 - 18 (8)new GMap2(document.getElementById(GoogleMap) -获取显示的地图容器 (9)map.setMapType(G_NORMAL_MAP); -设置显示地图的类型可选值:

28、a. G_NORMAL_MAP -默认地图样式b. G_SATELLITE_MAP - Google Earth卫星地图c. G_HYBRID_MAP -混合模式地图 (10)new GIcon(G_DEFAULT_ICON) -设置标记样式 (11)addControl() -给地图添加控件常用的可选控件有:a. new GLargeMapControl() -大的地图缩放级别控件b. new GOverviewMapControl() -地图缩略图控件c. new GScaleControl() -比例尺控件d. new GMapTypeControl() -地图类形选择控件 (12)en

29、ableContinuousZoom() -允许连贯改变地图比例 (13)createMarker(latlng) -自定义方法 (14)new GMarker(latlng) -在地图中设置标签,参数latlng -标签的坐标 (15)Event.addListener(marker,event,function) -给标签设置事件marker -标签对象,event -事件名称function -时间的处理函数 (16)openInfoWindowHtml(latlng, myHtml) -将信息框添加到标签上latlng -标签坐标,myHtml -提示信息的HTML字符串4.4.1获得

30、Google Map API Key使用Google Map API前,必须先生成Google Map API KEY.具体步骤如下: 第一步:生成Google Map API Key 要使用android debug模式下的keystore密钥库14。其位于C:usersdongliang.android debug.keystore目录下(dongliang是电脑用户名)。 输入命令生成MDK5 Key,如图4.3所示图4.3 生成MDK5 Key 第二步:到Google Map API的主页去申请Google Map API KEY。登录地址http:/ fingerprint一栏中输入

31、刚才生成的MD5密纹,如图4.4所示图4.4 生成Google Map API KEY 如果你是第一次使用Google Map API你要按照提示申请一个账号。然后就可以得到唯一密钥,本机的密钥为android:apiKey=0_kiK_qH-JI4hNZxaSZ50LaDmeX7_pxeSggjlhQ/4.4.2 布局及按钮的设置这部分模块代码在res/layout/main.xml中: /定义一个宽高都满屏的垂直排列窗口 /定义一个宽满屏高随内容自动拉伸的文本框 /定义一个水平的流输出口 /定义一个名称为in的按钮,其上显示放大,级别为1 /定义一个名称为out的按钮,其上显示缩小,级别为

32、1 /定义一个双位开关,默认显示卫星视图(关),点击后显示卫星视图(开),高宽都为自动拉伸类型 /此为与谷歌地图连接的必要代码其中倒数第二行中就使用到了上一章节所得的密钥。4.4.3 配置窗体部件字符串文件将字符串显示分别放入res/values/string.xml。代码如下: Hello World, MapView! MapView /显示软件的名称为MapView4.4.4关于应用配置及声明的设置 /版本信息 /声明类MapView1 /允许此程序联网 /允许程序进行精确定位4.4.5 主程序框架介绍工程的主程序,位置应在src/com.map的两个源程序里,需要将各个包名已经类的属性

33、进行声明,具体如下:package com.map; /com.map包import java.util.ArrayList; import android.app.AlertDialog; import android.content.Context; import android.graphics.drawable.Drawable; import com.google.android.maps.ItemizedOverlay; import com.google.android.maps.OverlayItem; /以上为导入的一些方法public class HelloItemized

34、Overlay extends ItemizedOverlay /公共类的声明private ArrayList mOverlays = new ArrayList(); private Context mContext; package com.map; /另一个com.map包import java.util.List;import android.content.Context;import android.graphics.drawable.Drawable;import android.location.Criteria;import android.location.Locatio

35、n;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener; /设置鼠标监听import android.widget.Button;import android.widget.CompoundButton;import android.widget.TextView;import android.widget.ToggleButton;import android.widget.CompoundButton.OnCheckedChangeListener;import com.google.android.maps.GeoPoint;import com.google.android.maps.MapActivity;import com.google.android.maps.MapController;import com.google.android.maps.MapView;import com.google.android.maps.MyL

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1