安卓手机定位软件

更新时间:2023-03-07 15:50:20 阅读: 评论:0

弘阳欢乐世界-王者英雄熟练度

安卓手机定位软件
2023年3月7日发(作者:花卉养护)

I

基于Android系统的手机地图应用软件开发

摘要

随着日异月新的科技发展,人们的生活越来越丰富多彩。我们已经身处信息爆炸以

及知识经济繁荣的世界。这样的潮流同时带动了移动设备的迅猛发展,其中智能手机大

有作为。而安卓操作系统正是现今智能手机上最为流行,最为开放,最有可能统治智能

手机市场的一种功能强大的系统。

本文通过介绍安卓系统的历史渊源,体系结构以及同各大主流手机操作系统的对比,

指出安卓系统能独树一帜,统领手机市场的必然性。

本文还全面展示了用Eclip开发工具开发手机应用软件的方法,介绍了例如

Activity,Intent,Service以及ContentProvider等基础概念,分析了安卓应用程序

的目录结构,基本组件以及数据存取等。在这些基本概念的理解之上,本文还详尽介绍

了手机地图开发的步骤和实现机制。通过百度公司提供的API,获取其地图密钥,结合

帮助文档,实现了地图的定位,路线绘制以及标记等基本功能。

文章最后全面展示了此款手机地图应用软件的系统界面,调试结果以及各大功能,

从而说明前期设计理念和方法的正确性和可行性。

关键词:安卓,智能手机,定位,地图

II

TheDevelopmentofMobilePhoneMapBadonAndroid

OperatingSystem

ABSTRACT

Withthedevelopmentofchangeablescienceandtechnology,people’slifehasbecome

livedintheworldthatinformationexplosionand

ametime,thetideputinmotiononthemobile

edevices,thesmartphoneismakingitlfthe

ys,AndroidSystemwhichisthemostpopularandopen,hasbecomethe

mostdominatedintelligenthandtoperatingsystems,anditspowerfulfunctionwillmake

itlftheleaderamongthesmartphonemarket.

ThisarticlehasintroducedthehistoryandstructureofAndroid,andmadeacontrastive

withtheprentmainintelligenthandtoperatingsystems,throughwhichwecan

acknowledgethereasonandinevitabilitywhyAndroidcanbeuniqueanddominatethe

handtphonemarket.

Thisarticlealsoentirelydemonstratedthemethodofdevelopingphoneapplicationwith

theEclipdevelopmenttool,andintroducedthebasicconceptionsuchas“Activity”,

“Intent”,“Service”and“ContentProvider”,andmadeanalysisonarchitecture,basicmodules

nderstoodallthebasicconception,

thisarticlealsodetaileddemonstratedtheprocedureandrealizationmechanismofmobile

htheBaiduCorporation’sAPIandobtainedthemapkeyand

combinedwithrelativehelpdocument,itcanrealizethebasicfunctionsuchaspositioning,

routedrawingandmarking.

Attheendofthisarticle,theinterfaceofthemobilephonemapapplicationaswellasthe

debuggingresultsandesntialfunctionhasbeentotallydemonstrated,whichstronglyproved

thatthedesignphilosophyandmethodarerightandfeasible.

KEYWORDS:Android,smartphone,positioning,map

III

目录

摘要„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„Ⅰ

ABSTRACT„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„Ⅱ

1绪论„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„1

1.1选题背景和意义„„„„„„„„„„„„„„„„„„„„„„„„„1

1.2安卓发展历史„„„„„„„„„„„„„„„„„„„„„„„„„„2

1.3安卓与主流手机系统„„„„„„„„„„„„„„„„„„„„„„„3

1.4本文主体结构„„„„„„„„„„„„„„„„„„„„„„„„„„4

2安卓系统简介„„„„„„„„„„„„„„„„„„„„„„„„„„„„„6

2.1安卓SDK„„„„„„„„„„„„„„„„„„„„„„„„„„„„6

2.1.1AndroidSDK内容„„„„„„„„„„„„„„„„„„„„„„6

2.1.2AndroidAPI核心包分析„„„„„„„„„„„„„„„„„„„6

2.1.3AndroidSDK提供的工具包„„„„„„„„„„„„„„„„„„7

2.2安卓系统的应用程序组成„„„„„„„„„„„„„„„„„„„„„8

2.2.1Activity„„„„„„„„„„„„„„„„„„„„„„„„„8

2.2.2BroadcastIntentReceiver„„„„„„„„„„„„„„„„8

2.2.3Service„„„„„„„„„„„„„„„„„„„„„„„„„„8

2.2.4ContentProvider„„„„„„„„„„„„„„„„„„„„„„8

2.3安卓系统的应用程序体系结构„„„„„„„„„„„„„„„„„„„9

3开发工具及系统环境搭建„„„„„„„„„„„„„„„„„„„„„„„„10

3.1开发工具简介„„„„„„„„„„„„„„„„„„„„„„„„„„10

3.2开发环境搭建„„„„„„„„„„„„„„„„„„„„„„„„„„10

3.3虚拟机简介„„„„„„„„„„„„„„„„„„„„„„„„„„„11

4安卓系统手机地图设计„„„„„„„„„„„„„„„„„„„„„„„„„13

4.1开发方法及步骤„„„„„„„„„„„„„„„„„„„„„„„„„13

4.2设计理念„„„„„„„„„„„„„„„„„„„„„„„„„„„„13

4.3功能需求分析„„„„„„„„„„„„„„„„„„„„„„„„„„14

4.4系统模块分析„„„„„„„„„„„„„„„„„„„„„„„„„„14

4.5程序流程图„„„„„„„„„„„„„„„„„„„„„„„„„„„15

4.5.1应用程序流程跳转„„„„„„„„„„„„„„„„„„„„„16

4.5.2应用程序流程跳转及Activity分析„„„„„„„„„„„„„16

5手机地图应用软件的实现„„„„„„„„„„„„„„„„„„„„„„„„18

5.1程序主界面„„„„„„„„„„„„„„„„„„„„„„„„„„„19

IV

5.2程序主界面的实现„„„„„„„„„„„„„„„„„„„„„„„„19

5.3我的地图功能实现„„„„„„„„„„„„„„„„„„„„„„„„22

5.4实时定位功能实现„„„„„„„„„„„„„„„„„„„„„„„„25

5.5绘制图形功能实现„„„„„„„„„„„„„„„„„„„„„„„„27

5.6地图标记功能实现„„„„„„„„„„„„„„„„„„„„„„„„28

5.7地点搜索功能实现„„„„„„„„„„„„„„„„„„„„„„„„29

5.8公交查询功能实现„„„„„„„„„„„„„„„„„„„„„„„„31

5.9离线地图功能实现„„„„„„„„„„„„„„„„„„„„„„„„32

6结束语„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„34

6.1总结„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„34

6.2展望„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„34

致谢„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„35

参考文献„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„36

附录„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„37

基于Android系统的手机地图应用软件开发

1

1绪论

1.1选题背景和意义

莱特发明飞机的前200年,人们都说那种在天上飞翔的机械根本不可能实现,同样,

人们也无法想象贝尔发明的电话最终会演变成现在的移动电话。

进入3G时代的人们,早就不能满足于用手机打电话或者发短信,现在的手机已经

成为我们不可缺少的娱乐工具,闲暇之余,我们用手机看电影,听音乐,看电子书,和

家人视频聊天,我们甚至用手机网上购物,把手机充当支付工具。这些强大的功能是一

般手机系统或是非智能手机所不能实现的。

软件的实现需要硬件的支持才能完成,所以要实现以上功能,必须是以硬件同等发

展为前提的。而近些年,人们就可以切身体会到硬件的变化,手机内存卡容量的不断增

大,电阻屏向多点式电容屏的转变,还有各种芯片运算速率的不断加快,摄像头像素的

不断细化,使得上述需求得到更有利的满足。

正是在这样的背景之下,谷歌公司在2005年推出了第一代安卓智能手机操作系统。

经过8年的发展,我们惊奇的发现,如今在电脑上流行的社交,娱乐等应用程序,可以

同样的在安卓手机上运行,所以,当电脑上的应用软件更新的时候,也意味着你的手机

应用软件需要更新了。于是,人们终于感受到“PC机最终会手机化,而手机终将会PC

机化”这种预言,这并不是一种矛盾,而是信息革命前行之路上的必然,只有更满足人

们使用习惯,使用快捷方便的形式和工具才能不被淘汰,继续发展,“优胜劣汰”在这

里同样适用。

手机地图应用软件正是一款满足人们需求的软件,通过它,人们不仅能随时随地知

道自己的位置,还能方便的查询附近的餐馆,商店以及汽车站等信息,大大地改善了我

们的生活质量。而在几十年前,对于个人开发者来说,要开发一款手机地图几乎不太现

实,因为在当时,手机开发者要实现地图服务,大多数需要GPS传感器支持,与此同

时还要支付某些地图所有者相关费用。

而如今,只需要申请简单的密钥,程序员就可以轻松免费地调用谷歌或者百度等大

型公司的地图服务,而在安卓系统上,开发地图也不再需要直接控制GPS,而是基于

Web上的开发。这样,不仅省去了和地图开发商沟通的人力物力,而且使程序员能更有

效、更集中在软件开发本身。

因此,基于安卓系统的手机地图应用软件开发是十分有意义的,它不仅能让初学者

更好的了解安卓系统,熟悉安卓开发的完整过程,还能培养我们面对用户需求,分析并

解决问题的能力,加强我们分析市场,并根据市场导向及时有效地制定方案的洞察力,

为我们不如社会,走向工作岗位提供强有力的实践基础。

陕西科技大学毕业论文(设计说明书)

2

1.2安卓发展历史

(1)2005年Google收购了刚刚成立了22个月的Android公司。

(2)2007年11月5日,以Google为首的34家公司宣布成立开放手机联盟(Open

HandtAlliance,简称OHA)。

(3)2008年9月22日,美国运营商T-MobileUSA在纽约正式发布第一款Google

手机——T-MobileG1。

下面,将用表格的形式来说明安卓不同版本的相关变化。

表1-1Android各大版本功能及相关变化

Android版本号相关功能

1.0

2.0

3.0

4.0.1

AndroidMarket;网页浏览器;照相机支持;E-mail传输;声音识别;支持Wi-Fi

和蓝牙

优化硬件速度;支持更多屏幕分辨率;改良用户界面;内置相机闪光灯;改进虚

拟键盘;支持动态界面设计

仅供平板电脑使用;GoogleeBooks;GoogleTalk视讯功能;支持多核心处理器

统一了手机和平板电脑使用的系统,应用会根据设备自动选择最佳显示方式;提

升硬件性能,系统优化,流畅度提升;脸部识别锁屏;内置流量监控功能

相关版本的截图如图1-1,图1-2,图1-3。

图1-1搭载Android2.2Froyo的GoogleNexusOne

基于Android系统的手机地图应用软件开发

3

图1-2搭载Android2.3Gingerbread的Google'sNexus

图1-3Android4.1Home界面显示

1.3安卓与主流手机系统

当今流行的手机系统中,除了Android系统之外,还有诺基亚的塞班系统,苹果公

司的iOS操作系统,微软公司的WindowsPhone系统以及黑莓的RIM系统。下面,就

这几款软件与Android作简要的对比:

(1)塞班系统:Symbian系统是塞班公司为手机而设计的操作系统,其优点是在

安卓出现之前,占有了市场份额的绝大部分,但由于缺乏新技术支持,驻足不前,导致

陕西科技大学毕业论文(设计说明书)

4

用户量骤减。塞班系统具有较完整的功能,并且简单易用,对手机的内存要求比较低,

但是其反应速度较慢,且并不利于软件更新,为相关功能的扩展带来不便。因此,它被

淘汰成为必然。

(2)iOS操作系统:其全称是iPhoneOS,其第三方软件十分丰富,屏幕支持多点

式触摸,可以通过屏幕对应用进行直接的操作,这是苹果公司的一大创举,由于其界面

稳定友好,受到了广大用户的喜爱。但是其缺点在于,无论从硬件还是软件方面,苹果

公司对改操作系统进行了绝对的保护,完全封闭了iOS。另外一方面,苹果的产品价格

不菲,影响了iOS在低端市场的推广和发展。

由于Android和iOS十分相似,所以下面将用表格的形式対它们进行比较。

表1-2AndroidVSiOS

AndroidiOS

可以在PC,MAC和Linux下开发

以Linux为基础

Java

25美元

可以通过Web下载应用程序

支持Flash

Google,ARM,高通,三星

超过50000个应用程序

只能在MAC下开发

以MACOS为基础

ObjectiveC

每年99美元

只能在AppStore下载应用程序

不支持Flash

Apple

超过100000个应用程序

(3)WindowsPhone8系统:目前WindowsPhone机型的最新版本,仅是诺基亚

Lumia610采用的Tango系统,也被称为WP7.5系统,但其定位低端,性能一般。AT&T

版本的WindowsPhone8机型,将定位在高端机、中低端机两个类别,且机型代号不尽

相同,代号“Prodigy”的机型极有可能定位在高端机型,而代号“AC/DC”机型则被

限定在中低端行列。它的开发语言是C#,有利于初学者学习,但由于发布时间较晚,

上市机型偏少等缺点,使得其较Android和iOS更缺乏竞争力。

1.4本文主体结构

第一章介绍了应用系统的开发背景和开发意义,简要叙述了Android系统的发展历

史,同时深入比较了安卓系统同其他主流手机操作系统的区别。

第二章详细地介绍了安卓系统,其中包括SDK的介绍,系统应用程序的组成,系

统应用程序的体系结构,为以后章节的开发奠定了基础。

第三章首先介绍了系统应用需要的开发工具——Eclip,然后详细的说明了开发应

用所需要搭建的环境,最后简要介绍了虚拟机的使用方法。

第四章首先介绍了手机地图的开发方法和步骤,同时说明了开发的理念和本款软件

基于Android系统的手机地图应用软件开发

5

的优势。其次,分析了功能需求,初步设定了软件所需要的基本功能。最后,把软件合

理模块化,将系统的程序流程图绘制完成。

第五章首先展示了手机地图的整体界面,然后逐一介绍了各大功能的实现方法,最

后展现了调试结果。

第六章总结了本文的相关工作,指出了应用软件的很多疏漏和需要改进的地方,对

安卓系统应用以及本文软件的前景作出了展望。

陕西科技大学毕业论文(设计说明书)

6

2安卓系统简介

2.1安卓SDK

学过Java的人都知道,AndroidSDK类似于JDK,它的全称是AndroidSoftware

DevelopmentKit,即安卓系统的软件开发工具包。这个开发包可以从相关网址经行下载,

其中,官方版网址为/sdk/。

AndroidSDK管理器提供了3个平台的版本:Windows、Linux(i386)和MacOSX

(Intel),下载时可以根据目标平台选择相应的SDK进行下载。

2.1.1AndroidSDK内容

打开下载并安装好的SDK,可以看到文件夹中含有如图2-1所示的一些子文件夹。

图2-1SDK包含的文件

下面就这些文件作简要的介绍[1]:

(1)docs文件夹中包含的是完整的AndroidSDK参考文档,包括SDK发布的历

史信息(主要包括该版本的亮点和与上一版本的API差异报告)、开发引导和API参考。

(2)tools文件夹中存放的是SDK附带的Android平台的公用工具,如Android模

拟器、SQLite数据库工具等。

(3)platform-tools文件夹中存放的是与平台有关的工具,如调试桥接工具、Dalvik

字节码转换工具、Android资源打包工具等。

(4)samples文件夹中存放的是相关的开发实例,初级开发者可以通过这些实例代

码更好地理解安卓应用程序的实现过程。

2.1.2AndroidAPI核心包分析

从安装系统平台的最底层到最高层的基本核心API包有如下[2-3]:

基于Android系统的手机地图应用软件开发

7

(1):包含一些底层辅助类,例如,特定的容器类、XML辅助工具类等。

(2):提供基本的操作服务,消息传递和进程间通信IPC。

(3)cs:作为核心渲染包,提供图形渲染功能。

(4)、、、:提供一套

丰富的文本处理工具,支持富文本,输入模式等。

(5):包含底层API处理数据库,方便操作数据库表和数据。

(6)t:提供各种服务访问数据在手机设备上,程序安装到手机设备和其

他的相关资源,以及内容提供展示动态数据。

(7):核心用户界面框架。

(8):提供标准用户界面元素,list(列表),button(按钮),

layoutmanagers(布局管理器)等,以上是组成我们界面的基本元素。

(9):提供高层应用程序模型,实现使用Activity。

(10)e:提供方便调用系统提供的contentproviders的接口。

(11)ony:提供API系统交互和手机设备的通话接口。

(12)t:包含一系列工作在基于web内容的API。

除了以上面介绍的这些核心包外,Android还提供了一些可选的API,如:GPS的

API-LBS定位服务(Location-BadService),可以通过集成的GPS芯片来接收卫星信

号,从而确定手机的位置;多媒体接口(MediaAPIs)Android平台集成了很多影音解

码器及相关的多媒体API,通过这些可选的API,开发者可以让手机支持MP3、MP4、

高清晰视频播放等;图形处理API,Android平台上的游戏娱乐功能,可以支持3D游

戏;低级硬件访问,这个功能主要用于控制手机的底层方面操作[4]。

2.1.3AndroidSDK提供的工具包

Google公司为Android开发平台提供Android模拟器和Eclip的Android开发工

具插件,AndroidSDK也包含了各种在模拟器用于调试、打包和安装的工具,其针对不

同的使用场景,能带来很多便利[5]。

(1)Android系统模拟器(AndroidEmulator):一个运行在计算机上的虚拟移动模拟

器,可以使用模拟器在一个实际的Android运行环境下设计,调试和测试用户的应用程

序。

(2)集成开发环境插件:用于Eclip集成开发环境的Android系统应用开发工具插

件,它为Eclip集成开发环境增加了强大的功能,使得创建和调试Android应用程序

更加简单和快速。

(3)调试系统监视服务:它集成在Dalvik(Android平台的虚拟机)中,用于管理

运行在模拟器或设备上的进程,并协助进行调试。可以用它来去除进程、选择一个特定

程序来调试、生产跟踪数据、查看堆和线程数据、对模拟器或设备进行屏幕快照等。

陕西科技大学毕业论文(设计说明书)

8

(4)Android系统调试桥:它用于向模拟器或手机设备安装应用程序的Apk文件和从

命令行访问模拟器或手机设备。也可以用于将标准的调试器连接到运行在Android模拟

器或手机设备上的应用代码。

2.2安卓系统的应用程序组成

开发安卓系统应用程序之前,了解其组成是十分重要的,几乎所有的应用程序都包

含如下几个方面的内容:Activity、BroadcastIntentReceive、Service、ContentProvider。

当然,在某些特殊情况,取上述四大部分的三大部分内容便可完成一个完整的应用

程序开发。

2.2.1Activity

首先,必须弄清楚Activity的具体含义。其实,Activity相当于一个应用程序的门

面,也即一个屏幕就是一个Activity。每个Activity有序的组合、跳转便构成了一个应

用程序。每个Activity都有相应的生命周期,分别是产生、运行和销毁。

在Android系统中为了在各个Activity之间进行跳转可以使用Intent,Intent中两个

最重要的部分是Intent的动作(Action)和动作对应的数据(data)[6]。

此外还有一个IntentFilter类,它与Intent有着密切的关系,IntentFilter类是用来描

述Intent请求的,如果有一个Intent的有效请求,那么IntentFilter就会被用来描述一个

Activity操纵那个Intent。

2.2.2BroadcastIntentReceiver

顾名思义,这是一种事件响应的机制,即对程序的某种指令做出响应,并通知其他

应用程序。有些BroadcastIntentReceiver需要在文件中注册以后才

能被系统执行,但有些在系统开启的时候会自动执行。这是一种很重要的响应机制,它

使得应用程序有了动态和广播的特性。

2.2.3Service

Service是用来处理耗时比较长的操作,它不同于Activity,它是一个应用程序组件,

没有图形化的界面,不是一个单独的进程。正如字面意思一样,它类似于一个后台服务

者。在安卓系统中,启动一个Service的方法是调用StartService(Intentrvice)方法,

启动之后就可以控制后台程序的运行了。

2.2.4ContentProvider

ContentProvider是一个强大的获取数据和存储数据的接口。如果两个应用程序需要

交换数据,ContentProvider是必不可少的。用ContentProvider的好处在于,外界可以

基于Android系统的手机地图应用软件开发

9

通过这个接口方便地对数据进行增,删,改,查操作。

常用的接口有:

(1)query(Uri,String[],String[],String):通过关键字查询数据[5-8]。

(2)inrt(Uri,ContentValues):将一组数据插入到指定的地方。

(3)update(Uri,ContentValues,String,String[]):更新数据。

(4)delete(Uri,String,String[]):删除数据。

2.3安卓系统的应用程序体系结构

要了解安卓系统的应用程序体系结构,首先需要明白其基础框架结构。图2-2为

Google官方网站提供的一张安卓的体系结构图。

图2-2安卓系统体系结构图

由这张图可以知道,软件的结构从下往上依次是:

(1)基于Linux内核的操作系统:它包括了一些显示器的驱动程序、照相机的驱

动程序以及闪存的驱动程序等等。

(2)库和运行时环境:库中包括一些程序包,大多数是用C或C++编写并封装的;

安卓的运行时环境和Java的类似,包括了核心包、开发中常用的类库(如IO,Utility

等类)、一个针对手机优化过的虚拟机。

(3)应用程序框架:提供了一些手机开发最基本的API,程序员开发工作主要是基

于这个框架之上的。

(4)应用程序:程序员开发的程序便在这个层上。

陕西科技大学毕业论文(设计说明书)

10

3开发工具及系统环境搭建

3.1开发工具简介

学过Java的人都用过Eclip,这是一款功能强大的软件,是一个开放源代码的、

基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过

插件组件构建开发环境。另外,Eclip附带了一个标准的插件集,最新的版本还附带

了ADT等开发工具。

Eclip官方下载网站是:/downloads/。

图3-1为其界面。

图3-1Eclip界面

从这张图便可以看出,Eclip是一款界面友好的开发软件,它强大的功能使得程

序员不用花费大量时间和精力在语法上,这样有利于节约时间,提高开发效率。因此,

Eclip越来越受开发者的青睐。

3.2开发环境搭建

本文的开发环境为Windows7,为开发安装的相关软件包括Eclip最新版、Android

SDK、JDK1.6。

下面简要介绍环境搭建的一般步骤:

(1)JDK的下载:

基于Android系统的手机地图应用软件开发

11

官方网站/technetwork/java/java/downloads/。

安装好JDK后,有一个细节需要注意,那就是环境变量的更改。鼠标右击“我的

电脑”,选择“属性”,在弹出的对话框中选择“高级系统设置”,再在弹出对话框选择

“环境变量”,接下来你就可以设置相关路径了。

(2)安装Eclip。下载完成后,一般是以压缩包的形式呈现在用户面前,只要解

压缩就可以使用了。第一次开启Eclip最好设定一个统一的工作路径,这样有利于以

后的开发工作。

(3)安装AndroidSDK。下载网址为:/sdk/。

要特别注意,新版的SDK已经包括以下内容:Eclip+ADTplugin、AndroidSDKTools、

AndroidPlatform-tools、ThelatestAndroidplatform、ThelatestAndroidsystemimageforthe

emulator。所以本文介绍的很多工具的下载和安装方法应该合理进行参考。

(4)安装ADT。ADT是Google为Android开发者提供的一个开发Android应用

程序的Eclip插件,开发者通过ADT可以方便的穿件Android项目,创建应用程序界

面,在基于Android框架API的基础上添加组件,以及用SDK工具调试应用程序,甚

至导出签名的APKs以便发行应用程序。ADT有两种安装形式,一种是在线安装,另

一种是先下载ADT,在来安装ADT。本文选择先下载ADT后再进行安装。

3.3虚拟机简介

安卓系统虚拟设备(AndroidVirtualDevice)简称AVD。是专门为安卓开发而构建

的一个安卓模拟器,图3-2为其界面。

图3-2AVD界面

陕西科技大学毕业论文(设计说明书)

12

由于最新版的Eclip是自带ADT的,程序员的主要任务是设置虚拟机的相关参数。

在Eclip中点击AndroidVirtualDeviceManager,在弹出的对话框中选择New,在弹出

的对话框中输入一个AVDName,选择Device、Target、CPU/ABT的种类,SDCard的

容量选择250M便足够开发使用,单击“OK”完成创建。

每个AVD模拟了一套虚拟设备来运行Android平台,这个平台至少有自己的内核,

系统图像和数据分区,还可以有自己的SD卡和用户数据以及外观显示等。

但是虚拟机有一些缺点,如它不能模拟手机的Wi-Fi功能,所以很多涉及Wi-Fi操

作的功能开发不能顺利进行;其次,启动模拟器需要比较长的时间,而且它会占用比较

多的资源。所以,要求开发者的个人电脑满足主频至少在2.5以上的CPU,2G以上的

内存空间。

基于Android系统的手机地图应用软件开发

13

4安卓系统手机地图设计

4.1开发方法及步骤

一个应用软件的开发初期,绝对不能盲目的进行代码编写,必须先弄清楚用户需求,

计划好软件的总体架构,为后期的开发作指导。下面就具体分析安卓开发所应具备的一

般步骤[9]:

(1)应用程序功能:在应用程序编码之前,就应充分考虑到用户的需求,明确所

要达到的目的,以及为了达到这些目的应用程序应具有的基本功能。本程序的基本功能

为:记录用户移动线路、将轨迹显示在Map上、地图功能等。

(2)应用程序所需要的界面以及界面之间跳转的流程:在这个阶段应分析应用程

序为达到目的,在实现功能过程中的流程,以及所需要的界面和界面之间的跳转流程。

(3)应用程序所需要的数据及其数据的来源和格式:在这个阶段应深入分析为完

成应用程序的功能所必需具备的数据,数据的格式、来源、用途以及存储方式等。

(4)应用程序是否需要服务端支持:在这个阶段需要考虑应用程序在使用过程中

是否需要服务器端的支持,如果需要应该为其提供服务器端的支持。

(5)应用程序是否需要本地数据库支持:在这个阶段需要考虑应用程序是否需要

本地数据库的支持,以及数据支持的方式,如果需要应该为其提供本地数据库的支持。

(6)应用程序是否需要特殊的权限:在这个阶段需要考虑应用程序在使用过程中

的各种场景,是否有特殊场景需要特殊的权限,如果需要应该设计权限。

(7)应用程序是否需要后台进程:在这个阶段需要考虑应用程序的应用方式,是

否在使用过程中需要调用后台进程,如果需要应该为其设计合适的后台进程。

4.2设计理念

在设计该应用程序之初,就应该分析设计该程序所能产生的效应,即应用软件所具

备的优势。

现今的主流地图软件包括Google地图、百度地图、高德地图等。这些软件功能已

经十分强大,那么如果在功能上耗费时间和精力是没有成效和市场的。

用过这些软件的人应该知道,这些地图在中高端手机上运行时没有问题,但是面对

中低端智能手机,它们的缺点就凸显出来了,那就是运行比较缓慢甚至出现卡机的现象。

所以,该款软件的优势应该在于简易灵巧且功能完善,如果后期制作允许,还应该致力

于界面设计,因为一款界面友好的软件往往会得到用户的青睐。

因此,本文所涉及的这款软件旨在针对中低端智能手机市场,设计理念是尽量易于

运行且功能完善,界面美观。

陕西科技大学毕业论文(设计说明书)

14

4.3功能模块分析

本文将实现一个功能比较完备的手机地图软件,该应用程序可以如下功能。

(1)我的地图功能:包括截图,设置旋转角度,设置俯视等小功能。该功能主要

为了方便用户对地图进行合适角度的

(2)实时定位功能:这是每款软件的基础功能,也是核心功能,它能让用户时刻

知道自己身处的位置绘制。

(3)绘制图形功能:包括点的绘制,圆形的绘制以及矩形的绘制。这样可以方用

户进行范围设定和相关几何运算。

(4)地图标记功能:支持多地点的标记,用户可以根据自己的需求对相关地点进

行标识。

(5)地点搜索功能:该应用程序还具有地点搜索功能,如果输入某一关键字,地

图将在市区内搜索带有次关键字的所有地点,这样,用户可以进行相应的选择。

(6)公交查询功能:为用户提供城市部分公交路线图。

(7)离线地图功能:为用户提供某些城市的地图下载,这样,可以有效的节省用

户流量,能得到用户的喜欢。

4.4系统模块分析

(1)我的地图功能模块:其中截图功能会把用户所截图片存放在默认的图片收藏

夹里,可以方便在图库里进行查看。另外,系统默认把地图旋转45度,俯视角为45度,

当然用户可以根据自己的喜好自行修改旋转角度及俯视角度。

(2)实时定位功能模块:这个功能对手机的网络要求比较高,当用户点击实时更

新按钮的时候,地图会自动定位用户所在的地点,并用蓝色小圆点进行标识。

(3)绘制图形功能模块:内包含六个按钮,“绘制点”,“绘制线”,“绘制矩形”,

“绘制圆”,“移除矩阵”以及“清除所有”。点击“绘制点”,系统将绘制一个浅蓝色的

小圆点;点击“绘制线”,系统将绘制一条红色的折线;点击“绘制矩阵”,系统将绘制

一个浅紫色的矩形框;点击“绘制圆”,系统将绘制一个浅绿色的圆形。重复点击这些

按钮,所有种类的颜色都会加深。

(4)地图标记功能模块:该模块具有三个按钮——“添加标记”,“清楚一个标记”

以及“清除所有”。当点击“添加标记”按钮时,地图会出现一个“A”字样的红色标

识气泡,再次点击可以得到一个“B”字样的红色气泡标识,以此类推。点击“清除一

个标记”,会清除刚才产生的末尾标记,持续点击,将逆序清除标识。点击“清除所有”,

所有标识一次性清除。

(5)地点搜索功能模块:系统默认在“西安”市内找“大学”,即当用户点击开始

按钮时,系统会搜索西安市内的所有大学。

基于Android系统的手机地图应用软件开发

15

(6)公交查询功能模块:系统默认查询“西安”市内的“336”公交车,用户也可

以根据自己的需要输入其他城市进行查询。点击“开始”按钮,系统将绘制出“336”;

路公交车的行驶路线。

(7)离线地图功能模块:为用户提供某些城市的地图下载,这样,可以有效的节

省用户流量,能得到用户的喜欢。

程序的系统模块如图4-1。

开始

主界面

实时定位绘制图形地图标记地点搜索公交查询离线地图我的地图

地图缩放街道显示卫星显示

地图显示

图4-1程序系统模块

4.5程序流程图

开发人员都知道,Android系统的应用程序的页面是基于Activity跳转的,当程序

在不同的页面之间转换的时候,Activity也在进行着跳转,而Activity的跳转则在代码

层带动程序功能的实现,因此为了顺利的完成程序,必须对程序的流程和程序的页面和

Activity跳转流程有清晰的了解。

程序的流程本文将用流程图来展示,而本程序的Activity的跳转相对直接明了,因

此只做简要说明和分析。

结合之前的设计,先用流程图来分析整个程序的运行过程,在弄清楚运行过程之后,

再用例图来分析用户与程序页面的交互情况,从用例图的交互分析来得到程序页面的跳

转流程以及程序的Activity跳转流程。

4.5.1应用程序流程跳转

点击模拟器中的个人地图程序“晓伟地图”,程序运行后会打开一个主界面,用户

在主界面进行选择后再进行各种操作。程序的大致框图如图4-2。

陕西科技大学毕业论文(设计说明书)

16

开始

主界面

实时定位绘制图形地图标记地点搜索公交查询离线地图我的地图

截图旋转俯视

实时定位标记

选择绘制图形种类

输入信息查询

点击开始扫描

地图缩放街道显示卫星显示

图4-2程序框图

4.5.2应用程序流程跳转以及Activity分析

根据之前的程序流程分析再结合程序的功能和页面使用用例图分析程序的页面跳

转,程序的用例图如图4-3。

用户

公交查询

手机地图

绘制图形

地图搜索

实时定位

地点标记

离线地图

我的地图与MyMapActivity相关联

与MyPoiActivity相关联

与OfflineActivity相关联

与BuslineActivity相关联

与SearchActivity相关联

与MarkPoiActivity相关联

与ItemizedActivity相关联

Include

Include

图4-3程序的用例分析

由上图可知,在页面的跳转过程中,会有四个Activity伴随着页面的跳转而发生变

化,分别是MyMap、MyPoi、Itemized、MarkPoi、Search、Busline、Offline七个Activity,

为此应在程序中设置Activity跳转算法,跳转算法如下:

Intentintent=newIntent();

switch(mId()){

caMENU_MYMAP:

ss(,);

startActivity(intent);

基于Android系统的手机地图应用软件开发

17

returntrue;

caMENU_MYPOI:

ss(,);

startActivity(intent);

returntrue;

caMENU_ITEMIZED:

ss(,);

startActivity(intent);

returntrue;

caMENU_MARKPOI:

ss(,);

startActivity(intent);

returntrue;

caMENU_SEARCH:

ss(,);

startActivity(intent);

returntrue;

caMENU_BUSLINE:

ss(,);

startActivity(intent);

returntrue;

caMENU_OFFLINE:

ss(,);

startActivity(intent);

returntrue;

caMENU_EXIT:

finish();

break;}

returntrue;

}

陕西科技大学毕业论文(设计说明书)

18

5手机地图应用软件的实现

按照之前设计好的规划,我们将应用程序的界面功能先实现,再为应用程序添加

Service服务和数据的存储服务,最后将整个应用程序的功能连接起来,完成应用程序

的开发。在本程序的开发过程中将依次实现下列界面以及相关的服务:主界面、我的地

图界面、实时定位界面、绘制图形界面、地图标记界面、地图标记界面、地点搜索界面、

公交查询界面、离线地图界面、Service和数据库服务、流程连接等。一个Android的应

用是由一个或者多个Activity组成的,Activity是一个UI的容器,其本身并不在用户界

面上显示的。我们在具体编程之前,先简单地了解一下,具体编程当中用到的UI基本

元素以及它们之间是一种什么样的继承结构。在Android系统当中View类是最基本的

一个UI类,基本上所有的高级UI组件都是继承View类而实现的,在应用程序中所需

要用到的TextView(文本框)、Button(按钮)、List(列表)、EditText(编辑框)、RadioButton

(多选按钮)、Checkbox(选择框)等都是View类。如图5-1,Android系统的UI组件

的树形类图。在Android系统中界面的生产有三种方式:通过在xml中配置来生成系统

界面、用户使用自己的界面接口来生成系统界面、在程序中直接通过代码来生成系统界

面。在本程序中通过程序中编写代码来进行界面布局。程序的主界面用来显示系统的七

大功能,在主界面上,布局文件只需要定义一个“TextView”即可,而在资源文件里,

还需要添加几个菜单,菜单的作用分别是“退出”和“关于”。

ViewGroup

ViewGroupViewView

ViewViewView

图5-1安卓系统UI组件的树形结构

(1)视图组件(View):一个视图在屏幕上占据了一块矩形区域,它负责渲染这块

矩形区域(如将这块区域变成蓝色或其他颜色),也可以处理这块矩形区域发送的事件

(如用户单击了这块区域),并且可以设置这块区域是否可见,是否可以获取焦点等。

(2)视图容器组件(Viewgroup):一个视图容器对象是一个oup

基于Android系统的手机地图应用软件开发

19

的实例。就像它的名字显示的意义一样,Viewgroup的作用就是View的容器,它负责

对添加进Viewgroup的这些View进行布局。当然一个Viewgroup也可以加入到另一个

Viewgroup里边,因为Viewgroup也是继承于oup类,它是一个抽象类,也

是其他容器类的基类。

(3)布局组件:Viewgroup的实现类比较多,其中最重要的有两个实现类,一个

是LinearLayout,另一个是RelativeLayout。LinearLayout可以用来进行水平布局或者竖

直布局。如果将LinearLayout的布局方向设置为“vertical”,那么表明是竖直布局。也

就是说先加入进去的View会显示在顶端,后续加入的View会显示在底端。如果设置

为“horizontal”,那么表明是水平布局,也就是从左到右依次进行排列布局。

RelativeLayout负责相对布局,相识于CSS中的相对布局,例如,设置A显示在B的

左侧,那么的显示坐标不是固定的,而是相对于A的位置。

(4)布局参数:在将每一个View加入到这个RelativeLayout里边的时候,我们会

传递一组值(如果没有传递值,那么系统采用的默认值),这组值封装在LayoutParams

这个类当中。在显示这个View的时候,它的容器类会自动根据传进来的LayoutParams

进行计算,来确认这个View显示的大小和位置。

5.1程序主界面

在Android系统中界面的生产有三种方式:通过在xml中配置来生成系统界面、用

户使用自己的界面接口来生成系统界面、在程序中直接通过代码来生成系统界面。在本

程序中通过在程序中编写代码来进行界面布局。程序的主界面用来简单明了地显示了

系统的七大功能——“我的地图”,“实时定位”,“绘制图形”,“地图标记”,“地点搜索”,

“公交查询”以及“离线地图”。在主界面上需要一个标签(TextView),还需要添加几

个菜单,菜单的作用分别是“退出”和“关于”。

(1)关于按钮:提供本软件的相关信息。

(2)退出按钮:选择退出按钮,程序将自动退出。

5.2程序主界面的实现

在资源文件中,新建一个名为“MainFunction”的java文件,然后再中

定义界面的相关布局。

首先在res/value目录下的文件中添加一些需要用到的字符串的定义,代

码如下:

晓伟地图

//用来定义软件名称,这个标记会在所有的Activity中显示。

Helloworld!

陕西科技大学毕业论文(设计说明书)

20

Settings

MainActivity

退出

//用于使主界面的菜单选项为中文。

关于

//与上句代码的意义一致。

其次,编写中的代码,代码如下:

<?xmlversion="1.0"encoding="utf-8"?>

android:layout_width="fill_parent"//宽度填满父控件(整个屏幕)。

android:layout_height="wrap_content"//内容填满整个高度。

android:orientation="vertical">//设置布局风格为垂直布局。

android:id="@+id/text_Info"//设置文本的名字。

android:layout_width="wrap_content"

android:layout_height="wrap_content">

android:layout_height="wrap_content"

android:id="@+id/listView"

android:apiKey="30AFC67C1388B437734EEF7DC58DCCC70CF6AD41"

/>

在中,需要使用LinearLayout布局,在其中放置一个TextView组件和

ListView组件,其中TextView组件用来显示的文字引用“@string/title”,其值是“text_Info”,

再增加一个id为“@+id/android:list”的ListView组件,用来显示功能列表。系统会调

用onCreate方法来实现布局的加载,显示在列表中。为了在主界面上增加“退出”、“关

于”两个按钮,需要程序增加方法onOptionsItemSelected(),下面给出实现的具体代

码:

publicbooleanonCreateOptionsMenu(Menumenu){

//TODOAuto-generatedmethodstub

(0,1,1,);//添加一个按钮。

(0,2,2,);//再添加一个按钮。

teOptionsMenu(menu);

基于Android系统的手机地图应用软件开发

21

}

@Override

publicbooleanonOptionsItemSelected(MenuItemitem){

//TODOAuto-generatedmethodstub

if(mId()==1){//调用的是第一个按钮。

finish();//点击退出按钮时会完成退出动作。

}

onsItemSelected(item);

}

接着还有一个比较重要的方法onItemClick,当单击列表中的一个条目的时候会调

用该方法,在该方法中会获取被单击条目的ID、Name和Desc属性,以绑定(Bundle)

的方式传递给下一个活动,这样就实现单击以往跟踪记录条目的时候会打开一个新的活

动,将路径展示在地图上。打开Android系统模拟器,在模拟器运行起来后,在应用

程序选择界面上选择“晓伟地图”,模拟器运行图如图5-2。

图5-2模拟器运行图

在程序运行起来后,进入程序的主界面,点击模拟器右边的“MENU”按钮,在主

界面上显示操作按钮。程序主界面如图5-3。

陕西科技大学毕业论文(设计说明书)

22

图5-3程序主界面

5.3我的地图功能的实现

当在主界面上点击“我的地图”按钮时,会执行以下代码:

publicvoidonCreate(BundlesavedInstanceState){

te(savedInstanceState);

Applicationapp=(Application)lication();

if(anager==null){

anager=newBMapManager(this);

(,new

ralListener());

}

tContentView(ty_main);

mMapView=(MapView)findViewById(ew);

mMapController=troller();

//MapController用于对地图进行多种操作方法。

initMapView();//初始化

Click(true);

m(12);//设置地图的放大级别

基于Android系统的手机地图应用软件开发

23

bleClickZooming(true);

ouchListener(null);

//设置监听器,触发事件

mMapListener=newMKMapViewListener(){

@Override

publicvoidonMapMoveFinish(){

//在此处理地图移动完成消息回调

}

@Override

publicvoidonClickMapPoi(MapPoimapPoiInfo){

Stringtitle="";

if(mapPoiInfo!=null){

title=t;

xt(,title,_SHORT).show();

eTo();

}

}

运行此代码后,“我的地图”所对应的Activity会被执行,我们将看到如图5-4界面。

图5-4我的地图界面

陕西科技大学毕业论文(设计说明书)

24

其中,截图功能是调用onGetCurrentMap(Bitmapb)这个方法来实现的,最后把截取

的图片保存在"/mnt/sdcard/test"目录下。而为了实现“旋转”和“俯视”这两个功能需

要绑定连个监听器,部分代码如下:

OnClickListenerrotateListener=newOnClickListener(){//旋转地图监听器

publicvoidonClick(Viewv){

tMapRotateClick();

}

};

OnClickListeneroverlookListener=newOnClickListener(){//俯视监听器

publicvoidonClick(Viewv){

tMapOverlookingClick();

}

};

button1=(Button)findViewById(1);

lickListener(captureListener);

buttonRotate=(Button)findViewById(2);

lickListener(rotateListener);

buttonOverlook=(Button)findViewById(3);

lickListener(overlookListener);

}

privatevoidinitMapView(){

gClickable(true);

//ClickEnable(true);

//ellite(fal);

}

//截图,异步方法

publicvoidcaptureMapClick(){

rentMap();

}

//设置地图旋转角度

publicvoidtMapRotateClick(){

EditTextrotate=(EditText)findViewById(angle);

基于Android系统的手机地图应用软件开发

25

troller().tRotation(nt(t().toString()));

}

//设置地图俯视角度

publicvoidtMapOverlookingClick(){

EditTextoverlooking=(EditText)findViewById(okangle);

troller().tOverlooking(nt(t().to

String()));

}

通过这些方法,就实现了功能所需。

5.4实时定位功能的实现

当在主界面上点击“实时定位”按钮时,会执行以下代码:

publicclassMyLocationListennerimplementsBDLocationListener{

@Override

publicvoidonReceiveLocation(BDLocationlocation){

if(location==null)

return;

de=itude();

ude=gitude();

cy=ius();

ion=ect();

a(locData);

h();

eTo(newGeoPoint((int)(de*1e6),

(int)(ude*1e6)),Message(1));

}

运行完该部分代码之后,“实时定位”所对应的Activity会被执行,当然,与此同

时,你需要在布局文件夹中新建一个的布局文件,用来设计该Activity的

界面,相关代码如下:

<?xmlversion="1.0"encoding="utf-8"?>

android:orientation="vertical"

android:layout_width="fill_parent"

陕西科技大学毕业论文(设计说明书)

26

android:layout_height="fill_parent"

>

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="wrap_content">

android:id="@+id/button1"

android:text="实时更新"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

由于相关代码已经在上述的几个功能介绍过了,这里就不在赘述。

图5-4为运行结果。

图5-4定位功能界面

基于Android系统的手机地图应用软件开发

27

5.5绘制图形功能实现

当点击“绘制图形”按钮时,系统会执行文件,代码如下:

publicvoidonCreate(BundlesavedInstanceState){

te(savedInstanceState);

Applicationapp=(Application)lication();

if(anager==null){

anager=newBMapManager(this);

(,new

ralListener());

}

tContentView(ty_geometry);

mMapView=(MapView)findViewById(ew);

initMapView();

troller().tZoom(13);

troller().enableClick(true);

lineButton=(Button)findViewById(1);

polygenButton=(Button)findViewById(2);

circleButton=(Button)findViewById(3);

pointButton=(Button)findViewById(4);

removeButton=(Button)findViewById(5);

clearButton=(Button)findViewById(6);

graphicsOverlay=newGraphicsOverlay(mMapView);

rlays().add(graphicsOverlay);

lickListener(drawLineListener);

lickListener(drawPolygenListener);

lickListener(drawCircleListener);

lickListener(drawpointListener);

lickListener(removeListener);

lickListener(clearListener);

}

同样的,在布局文件夹中需要新建一个布局文件,用来设计该Activity

的界面,这里不再重复给出相关代码。

陕西科技大学毕业论文(设计说明书)

28

结果如图5-5。

图5-5绘制图形界面

5.6地图标记功能实现

点击主界面里的“地图标记”按钮,系统执行文件。代码如下:

publicvoidonCreate(BundlesavedInstanceState){

te(savedInstanceState);

Applicationapp=(Application)lication();

if(anager==null){

anager=newBMapManager(this);

(,new

ralListener());

}

tContentView(ty_itemizedoverlay);

mMapView=(MapView)findViewById(ew);

基于Android系统的手机地图应用软件开发

29

mMapController=troller();

initMapView();

troller().tZoom(13);

troller().enableClick(true);

ltInZoomControls(true);

testItemButton=(Button)findViewById(1);

removeItemButton=(Button)findViewById(2);

removeAllItemButton=(Button)findViewById(3);

}

在布局文件夹中新建一个布局文件,系统运行状态如图5-6。

图5-6地图标记界面

5.7地点搜索功能实现

相比于其他功能,这个“地点搜索”功能的实现要复杂很多,实现代码也相对较多,

因此耗费了比较长的时间。此模块主要用于实现两个功能,一个是关键词搜索地点,另

陕西科技大学毕业论文(设计说明书)

30

外一个缩小搜索范围。

Applicationapp=(Application)lication();

if(anager==null){

anager=newBMapManager(this);

(,new

ralListener());

}

tContentView(ty_poiarch);

mMapView=(MapView)findViewById(ew);

initMapView();

publicvoidonClickMapPoi(MapPoimapPoiInfo){

Stringtitle="";

if(mapPoiInfo!=null){

title=t;

xt(,title,_SHORT).show();

}

}

图5-7为运行结果。

图5-7地点搜索界面

基于Android系统的手机地图应用软件开发

31

5.8公交查询功能实现

当点击“公交查询”按钮时,系统会执行以下代码:

protectedvoidonCreate(BundlesavedInstanceState){

te(savedInstanceState);

Applicationapp=(Application)lication();

if(anager==null){

anager=newBMapManager(this);

(,new

ralListener());

}

tContentView(earch);

}

运行完该代码后,“公交查询”所对应的Activity会被执行,界面如图5-8。

图5-8公交查询界面

陕西科技大学毕业论文(设计说明书)

32

5.9离线地图功能实现

这是百度地图的一个专属功能,用过地图软件的人都知道,主流软件中,Google

地图和高德地图都没有离线地图功能,而百度地图可以用手机直接保存各大城市的详细

地图信息,这样为用户节约了大量的流量,这也是百度地图深受青睐的原因之一。

而本文的这款手机地图也正是基于为用户考虑的角度,借鉴了百度离线地图功能的

实现方法,构造了一个下载界面。但由于这项功能的真正实现需要庞大数据库的支持,

作为个人开发者无从下手,因此,仅提供几个实例作为说明。

在主界面点击“离线地图”按钮,会执行如下代码:

protectedvoidonCreate(BundlesavedInstanceState){

te(savedInstanceState);

DemoApplicationapp=(DemoApplication)lication();

if(anager==null){

anager=newBMapManager(this);

(,new

ralListener());

}

tContentView(ty_offline);

mMapView=(MapView)findViewById(ew);

mMapController=troller();

initMapView();

publicvoidonGetOfflineMapState(inttype,intstate){

switch(type){

_DOWNLOAD_UPDATE:

{

//Log.d("OfflineDemo",("cityid:%dupdate",state));

MKOLUpdateElementupdate=ateInfo(state);

if(update!=null)

t(("%s:%d%%",me,

));

}

break;

_NEW_OFFLINE:

//Log.d("OfflineDemo",("addofflinemapnum:%d",state));

t(("新安装%d个离线地图",state));

基于Android系统的手机地图应用软件开发

33

break;

_VER_UPDATE:

MKOLUpdateElemente=ateInfo(state);

if(e!=null){

//Log.d("OfflineDemo",("%dhasnewofflinemap:

",));

t(("%s有离线地图更新",me));

}

break;

}

}

执行完此段代码,系统会调用“离线地图”所对应的Activity,运行结果如图5-8。

图5-8离线地图界面

陕西科技大学毕业论文(设计说明书)

34

6结束语

6.1总结

随着科学技术的不断进步,人们的生活越发向着简单便捷的方向发展,而快速的生

活节奏使得移动设备有了更加广阔的市场,因为它正好满足了这样一种时代潮流。安卓

系统只能手机正是在这样一种契机下诞生的。未来数十年是触摸屏的时代,人们将像习

惯windows窗口界面操作一样习惯Android的触摸式体验。因此,开发安卓系统上的应

用软件显得格外有希望,有前景。

本文首先简要介绍了安卓系统的发展历史,比较了Android系统和其他主流系统的

区别,如苹果公司的iOS系统,微软公司的WP系统,诺基亚公司的Symbian系统。通

过总结这些系统的优劣之处,给出了安卓系统主导智能手机市场的相关原因。

本文还介绍了AndroidSDK相关内容,详细说明了在安卓系统上开发软件的前期工

作,如开发工具的下载和安装,开发环境的搭建等等。在此基础上,简要展示了安卓系

统的应用程序组成以及安卓系统应用程序组成。最后,结合前面所讲述的基础知识,给

出了本文设计的软件的设计理念、功能需求分析,结合BaiduMap设计出一个集绘制图

形、地图标记、经纬度标记以及离线地图功能为一体的地图软件。

6.2展望

从诺基亚的塞班系统我们可以学习到很多经验,曾经独占鳌头的手机霸主,因为没

有对其系统进行及时的技术革新,导致自我没有赶上时代发展的潮流,从此退出历史舞

台。因此,无论是对待一种操作系统,还是一款手机应用软件,我们一定要有长远的打

算,要用发展的眼光看待问题,这样才能避免被淘汰的危险。在本软件的开发过程中,

由于时间因素,加上编者自身水平限制,使得程序在很多方面都存在不足和需要改进的

地方,所以下文特别指出应该优化和改变的功能。

(1)程序界面:一款软件的市场占有率,很多情况并决定于软件本身有多么强大

的功能,而在于是否满足了用户的体验。因此,本软件首先要重视的便是界面优化。如

果有幸拥拥有一个团队,其中有足够优秀的美工人才以及界面设计人才,相信这一点一

定可以更好的完善。

(2)功能扩展:这款手机地图的设计宗旨在于简易灵巧且功能齐全,但由于对于

个人开发者,很多功能,例如公交查询,附近地点查询以及导航功能,这些涉及大量数

据库操作并且需要大量人力物力支持的功能都难以完成,然而,这些功能对于一款优秀

的地图应用软件来说是必不可少的。因此,在不违背开发宗旨的情况下,希望以后能将

这些功能逐一得到实现。

基于Android系统的手机地图应用软件开发

35

致谢

我们正处于信息革命时期,科技日新月异地向前发展着,身为一名合格的应届毕业

生,以为以科学探索为己任的工程人员,我们应当时刻准备着迎接新世界的挑战,不断

用科学文化知识武装自己。

Android系统正是在信息时代里脱颖而出的一种智能手机操作系统,它的优越性越

来越得到业内和业外人士的一致认可。在这里,我要首先感谢我的指导老师王老师,是

他鼓励我自选题目,并且秉持自己的想法,勇于创新,敢于接受新兴事物。在论文的编

写过程中,王老师以严谨、科学和诚信的态度对我的论文进行了批改和审核,热情地为

我提供学习资料,对我完成论文的编写有很大的帮助。

然后,我要感谢我在安卓论坛上的朋友,他们对我在开发中遇到的问题给出了宝贵

的意见,让我不至于被问题表象所迷惑,顺利地进行软件的开发。再次,我还要感谢杨

斌同学、夏令居同学、徐相光同学、张成同学以及赵凡同学等同学的大力支持,他们对

本软件的界面设计给了很多创造性的意见,使我在用户体验上有了更深的理解。我还有

感谢赵梓颀同学,他为我提供了很多有关安卓系统的参考资料,其中绝大部分都为我丰

富自己的软件起到了很大的作用,开发期间,我还和他多次讨论安卓系统的发展前景,

激烈争论应用软件的受欢迎程度的影响因素,极大地促进了我对安卓系统的兴趣。

最后,我要感谢我的家人,四年的大学生活,他们给了我精神上地极大支持,没有

他们的辛勤劳动,没有他们的关心和照顾,就没有现在的我。感谢父母的谆谆教诲,感

谢父母的养育之恩,在今后的人生道路中,我会更加努力,争取早日实现自己的理想和

人生价值。

陕西科技大学毕业论文(设计说明书)

36

参考文献

[1]汪永松.Android平台开发之旅[M].机械工业出版社,2012.3:17-19.

[2]陈璟,陈平华,李文亮.Android内核分析[M].现代计算机.2009(11).

[3]://.

[4]nternational

ColloquiumonComputer,Communication,Control,andManagement(CCCM).

[5]MarkL,yCoder’nsware

LLC,2008.

[6]张仕成.基于GoogleAndroid平台的应用程序开发与研究[M].电脑知识与技

术.2009(28).

[7]李艳丽,Android事件处理剖析[J].长春理工大学学报(自然科学版).2010(3):

159-162.

[8]高昂,冯大祥.GoogleAndroid开发入门与实践[M].北京:人民邮电出版社,2009.

[9]k`sGuidetotheAndroidEnabledPhone.2009

[10]陈昱.基于GoogleAndroid平台的移动开发研究[M].福脑.2008,(11):156-157.

[11]马越.Android的架构与应用[M].北京:中国地质大学,2008.

基于Android系统的手机地图应用软件开发

37

附录

1主界面相关程序

<?xmlversion="1.0"encoding="utf-8"?>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="vertical">

android:id="@+id/text_Info"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

android:layout_height="wrap_content"

android:id="@+id/listView"

android:apiKey="30AFC67C1388B437734EEF7DC58DCCC70CF6AD41"

/>

2我的地图相关程序

//初始化

privateMapControllermMapController=null;

FrameLayoutmMapViewContainer=null;

MKMapViewListenermMapListener=null;

Buttonbutton1=null;

ButtonbuttonRotate=null;

ButtonbuttonOverlook=null;

@Override

publicvoidonCreate(BundlesavedInstanceState){

te(savedInstanceState);

Applicationapp=(Application)lication();

if(anager==null){

陕西科技大学毕业论文(设计说明书)

38

anager=newBMapManager(this);

(,new

ralListener());

}

tContentView(ty_main);

mMapView=(MapView)findViewById(ew);

mMapController=troller();

initMapView();

Click(true);

m(12);

bleClickZooming(true);

ouchListener(null);

3实时定位相关程序

<?xmlversion="1.0"encoding="utf-8"?>

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="wrap_content">

android:id="@+id/button1"

android:text="实时更新"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

android:layout_width="fill_parent"android:layout_height="fill_parent"

android:clickable="true"

基于Android系统的手机地图应用软件开发

39

/>

4绘制图形相关程序

privatevoidinitMapView(){

gClickable(true);

//ClickEnable(true);

//ellite(fal);

}

publicvoidtestRemoveClick(){

Graphic(envelopeId);

h();

}

publicvoidtestClearClick(){

All();

h();

}

publicvoidtestLineClick(){

intlat=(int)(mLat1*1E6);

intlon=(int)(mLon1*1E6);

GeoPointpt1=newGeoPoint(lat,lon);

lat=(int)(mLat2*1E6);

lon=(int)(mLon2*1E6);

GeoPointpt2=newGeoPoint(lat,lon);

lat=(int)(mLat3*1E6);

lon=(int)(mLon3*1E6);

GeoPointpt3=newGeoPoint(lat,lon);

5地图标记相关程序

<?xmlversion="1.0"encoding="utf-8"?>

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

陕西科技大学毕业论文(设计说明书)

40

>

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="wrap_content">

android:id="@+id/button1"

android:text="添加标记"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

android:id="@+id/button2"

android:text="清除一个标记"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

android:id="@+id/button3"

android:text="清除所有"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

android:layout_width="fill_parent"android:layout_height="fill_parent"

android:clickable="true"

/>

6地点搜索相关程序

;

ty;

基于Android系统的手机地图应用软件开发

41

w;

rlay;

nfo;

ch;

publicclassMyPoiOverlayextendsPoiOverlay{

MKSearchmSearch;

publicMyPoiOverlay(Activityactivity,MapViewmapView,MKSearcharch){

super(activity,mapView);

mSearch=arch;

}

@Override

protectedbooleanonTap(inti){

(i);

MKPoiInfoinfo=getPoi(i);

if(erDetails){

ailSearch();

}

returntrue;

}

}

7公交查询相关程序

<?xmlversion="1.0"encoding="utf-8"?>

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

陕西科技大学毕业论文(设计说明书)

42

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="wrap_content">

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

android:id="@+id/city"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="西安"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

android:id="@+id/archkey"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="336"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="公交车"/>

android:id="@+id/arch"

android:text="开始"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

基于Android系统的手机地图应用软件开发

43

/>

android:layout_width="fill_parent"android:layout_height="fill_parent"

android:clickable="true"

/>

9离线地图相关程序

publicvoidonGetOfflineMapState(inttype,intstate){

switch(type){

_DOWNLOAD_UPDATE:

{

//Log.d("OfflineDemo",("cityid:%dupdate",state));

MKOLUpdateElementupdate=ateInfo(state);

if(update!=null)

t(("%s:%d%%",me,

));

}

break;

_NEW_OFFLINE:

//Log.d("OfflineDemo",("addofflinemapnum:%d",state));

t(("新安装%d个离线地图",state));

break;

_VER_UPDATE:

MKOLUpdateElemente=ateInfo(state);

if(e!=null){

//Log.d("OfflineDemo",("%dhasnewofflinemap:

",));

t(("%s有离线地图更新",me));

}

break;

}

}

本文发布于:2023-03-07 15:50:19,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/1678175420174391.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:安卓手机定位软件.doc

本文 PDF 下载地址:安卓手机定位软件.pdf

上一篇:趣味七巧板
下一篇:返回列表
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
  • 安卓手机定位软件
    弘阳欢乐世界-王者英雄熟练度2023年3月7日发(作者:花卉养护)I基于Android系统的手机地图应用软件开发摘要随着日异月新的科技发展,人们的生活越来越丰富多彩。我们已经身处信息爆炸以及知识经济繁荣的世界。这样的潮流同时带动了移动设备的迅猛发展,其中智能手机大有作为。而安卓操作系统正是现今智能手机上最为流行,最为开放,最有可能统治智能手机市场的一种功能强大的系统。本文通过介绍安卓系统的历史渊源
  • 0℃趣味七巧板
  • 0℃趣味七巧板
  • 0℃网络赚钱
  • 0℃鱼汤
  • 0℃雾凇岛
  • 0℃皮肤干燥瘙痒怎么办
  • 0℃硬盘不显示
  • 0℃硬盘不显示
  • 0℃荷花花期
Copyright ©2019-2022 Comsenz Inc.Powered by © 站长QQ:55-9-10-26 专利检索|