admin管理员组

文章数量:1534368


2024年6月5日发(作者:)

毕业设计(论文)

题 目 基于Android平台的

手机地图应用开发

专 业 数字媒体技术

班 级 媒体091

学生学号 **********

学生姓名 齐文龙

指导教师 张二虎(教授)

完成时间 2013年6月

2013

Abstract

摘 要

随着智能手机一步步走进普通人的生活,它将成为人们获取信息的主

要设备。因此手机的应用服务将会有很大的发展空间,手机地图服务就是

其中之一。传统的地图服务主要以使用网页方式实现,这些方式仅限于室

内或者携带电脑,并不适合户外、出差、旅游等场合下进行,给用户带来

极大不便。手机地图的发展满足了人们在手机上对地理信息的需求。

Android集成了地图模块和丰富的API,能有效的支持嵌入式软件在分布式

移动环境中的定位功能。所以,基于Android的手机地图能精确定位您所

在的位置,并能实现公交、步行等路线规划和场所的检索功能。

本文采用了百度地图API包作为开发包,成功实现了地图应用的开发。

百度地图包具有快速强大的搜索功能、精致的地图界面、地图信息全、方

便用户后期开发等优点,所以国内开发者都倾向于采用百度地图开发包。

系统使用java语言和eclipse开发工具进行编写。同时给出了详细的

系统设计过程、部分界面图及主要功能运行流程图,本文还对开发过程遇

到的问题和解决方法进行了讨论。本系统页面设计精美,视觉效果良好,

应用简单方便。主要功能包括手机实时定位,指定地点的寻址,酒店、ktv

等场所的查找,规划导航路径等。

关键词:Android,百度地图API,GPS,eclipse

摘要

Abstract

As smartphones step by step into the lives of ordinary people, it will

become the main equipment for people to obtain information. Therefore,

the application of mobile services will have great development space,

mobile map service is one of them .The traditional use of web map

services mainly be achieved, these methods are limited to indoor or

portable computer, not suitable for outdoor, travel, tourism and other

occasions carried out has caused great inconvenience to the user .The

development of mobile maps to meet the people on the phone on the

geographic information needs. Android integrates a map module and rich

API, which can effectively support the embedded software in a distributed

mobile environment positioning. Therefore, the Android-based mobile

maps can pinpoint your location, and can achieve public transport,

walking and other places of route planning and search functions.

Here used Baidu Maps API package as a development kit, the

successful implementation of the map application development. Baidu

map pack with fast powerful search capabilities , sophisticated map

interface , map information full , user- late development , etc., so that

domestic developers tend to use Baidu Map development kit .

The system using java language and development tools for writing

eclipse. At the same time gives a detailed system design process , part of

the interface and main functions of operation flow chart diagram , this

article on the development process problems and solutions are discussed.

Abstract

The system's page is beautifully designed, visual effect is good and

easy application. It main functions include mobile real-time location,

specify the location of addressing, hotel, KTV and other places of search,

planning, navigation path and so on.

Key Words:

Android, Baidu Map API, GPS, eclipse

目录

目 录

1 绪论 ................................................................................................ 1

1.1 研究背景及意义 ................................................................. 1

1.2 课题目前发展现状 ............................................................. 1

1.3 本文的研究内容与结构安排 ............................................. 2

2 Android智能手机平台概述 ......................................................... 3

2.1 Android手机平台的优点及特征 ...................................... 3

2.1.1 Android手机平台的优点 ....................................... 3

2.1.2 Android手机平台的特征 ....................................... 3

2.2 Android系统构架 .............................................................. 4

2.3 Android software development kit(SDK) ................... 6

2.4 关于Eclipse ...................................................................... 6

3 系统设计及相关技术 .................................................................... 9

3.1 系统需求分析 ..................................................................... 9

3.2 系统总体流程图 ................................................................. 9

3.3 系统关键技术 ................................................................... 10

3.3.1 Android界面布局 ................................................. 11

3.3.2 Activity之间的传值 ........................................... 12

4 系统实现 ...................................................................................... 13

4.1地图展示的实现 ................................................................ 13

4.1.1 Android SDK 下载与安装 .................................... 13

4.1.2 获取API Key ......................................................... 14

4.1.3 显示地图 ................................................................ 15

4.2 菜单功能的实现 ............................................................... 16

4.3 定位功能的实现 ............................................................... 17

目录

4.4 路线导航功能的实现 ....................................................... 18

4.5 地点检索功能的实现 ....................................................... 20

5 项目调试与系统测试 .................................................................. 23

6 总结与展望 .................................................................................. 25

致 谢 ................................................................................................ 27

参考文献 .......................................................................................... 29

2013届数字媒体技术专业毕业设计(论文)

1 绪论

1.1 研究背景及意义

随着智能手机的普及和发展,基于地图的服务不断深入社会的生活。

Android是目前最流行的手机智能系统,其强大、快速的处理能力吸引了很

多手机厂商如三星、摩托罗拉、HTC、中兴、华为、酷派、魅族等的加入,

而其开源的系统框架更是为手机厂商制定有特色的软件、服务提供了方便。

目前的地图服务主要是以单机或者Web的方式实现,不适合身处外地

的用户使用,给用户的出行带来了不便。而手机地图服务的便携性和数据

的实时性很好的解决了这一问题,因此,设计手机地图服务的应用具有非

常实用的价值

[1]

。所以综上所述,研究并设计开发Android手机地图具有很

好的市场前景。

1.2 课题目前发展现状

随着社会的发展,人们对地理信息的需求越来越多,从地图服务中人

们得到的不仅仅是方便,还有效率和效益。手机地图服务作为一项高新技

术产业,对行业的影响是积极的。一方面,将位置服务与地图相结合可以

提高一些相关行业服务的效率

[2]

。例如在安全救援行业,手机地图服务可以

通过手机定位,及时获取救援对象的位置,并在地图上标识出来,给救援

工作带来了极大的便利。另一方面,对一些传统行业加以改造,实现其在

新环境下的飞跃。最典型的例子便是物流管理,运用基于手机平台的位置

服务,将货物的物理位置在地图上标识出来,并以此为基础,处理物流业

务的各个环节,实现了物流业务的电子化。随着技术的不断发展,手机地

图服务将会渗透到更多的行业,但还存在一些限制条件。比如移动通讯网

的覆盖范围,虽然目前我国移动通讯网络的覆盖已经非常广泛,但一些偏

1

齐文龙:基于Android平台的手机地图应用开发

远地区还存在盲区

对于受众来说,手机终端地图的准确性以及渐变灵活性仍然是所关注

的焦点,同时伴随着国内外厂家的不断入驻,近期手机地图市场看点颇多。

相比较国外产品,国产终端下载软件的优势更加明显

[3]

,无论在准确性与

实用性来讲,但毕竟选择性因人而异

[4]

。从市场总体来看,谷歌、百度、

高德仍然占据绝大部分市场份额。2013 对于国内 GPS 用户来说,从实际

导航体验上来看最切身实际的改变,首当其冲我们认为从理想变成现实的

当属手机地图的成功普及应用了

[5]

1.3 本文的研究内容与结构安排

本课题主要研究的是在Android平台下基于百度地图API的手机地

图,在eclipse的基础上采用Java语言实现了安卓版手机地图的开发,主

要包括定位、路线查询、地点检索、酒店、ktv查询等地图基础服务功能。

主要分三大版块来说明。

第一,论述说明了Android的起源、现状及发展趋势,Android的优

点等;

第二,论述了本课题采用的一些技术方法和系统实现手段;

第三,在开发过程中遇到的一些问题及解决方法。

2

2013届数字媒体技术专业毕业设计(论文)

2 Android智能手机平台概述

2.1 Android手机平台的优点及特征

Android平台是一种开源的、高自由度的手机操作系统。“开源”是用

于描述那些源码可以被公众使用的软件,并且此软件的使用、修改和发行

也不受许可证的限制。“高自由度”是指用户可以根据自己的喜好来设置手

机界面,Android的应用市场甚至还有各式各样的启动器来供用户自己选

择,让自己的手机与众不同

[6]

2.1.1 Android手机平台的优点

(1)开放性

Android手机平台是Google公司开发的智能手机操作系统,它的开

源、开放将允许更多的手机厂商加入,同时其开放的特性将给开发者带来

方便。新的创意的应用将在这个开发的平台不断发光发热。

(2)自由性

摆脱运营商的束缚,让手机能自由接触网络。

(3)兼容性

由于Android的应用程序是基于Java的框架,而Java具有一次编写、

到处运行的跨平台的能力。实现了与硬件无关,降低了开发者的负担。

(4)拓展性

Android底层的各种库文件、驱动文件都是开放的,它允许手机厂商

指定特色的辅助功能和服务。这给Android智能平台带来很好的拓展性。

2.1.2 Android手机平台的特征

Android应用框架具有可重用性、可替代性。

3

齐文龙:基于Android平台的手机地图应用开发

Dalivk虚拟机:Android平台使用的Dalivk虚拟机是Android最核心

的部分之一,Google自主开发。它将Java代码编译成dex类型的数据文件,

而后生成APK文件,最后运行。它保证了API向下的兼容性,同时优化了

个资源的处理方式,使运行效率较JAVA虚拟机更高。

优化的图形系统:Android提供了一个遵循OpenGL ES1.0标准的3D

图形库及自定义的2D图形库,它们都被优化过。OpenGL ES是OpenGL的缩

减版,能够实现各种常用的3D建模、处理效果

[7]

网络支持:支持蓝牙通讯、GPRS-EDGE、3G等大带宽传输和WIFI无限

网络连接。

硬件支持:支持相机、摄像、GPS、导航以及感应加速器(如重力感应,

温度感应)等各种硬件。

开发环境:包括设备模拟器、调试工具(DDMS),内存和性能分析工具

以及其他Eclipse IDE相关的开发插件。

2.2 Android系统构架

Android是一个复杂的智能手机操作系统,其系统构架如图2-1所示。

4

2013届数字媒体技术专业毕业设计(论文)

图2-1 Android系统框架

(1)应用程序(Applications)

此层是应用程序层,即软件层。此层包括所有的应用,它通过调用系

统的特定API而形成一个具有特定功能的软件。比如主页、通讯录、电话

本、以及浏览器,这些都属于应用程序范畴。

(2)应用框架(Application Framework)

此层是应用程序与虚拟机以及底层库的中间件,应用程序通过调用此

层的接口实现对底层的操作,应用框架是Android系统框架最核心的部分

之一。它封装了系列接口供应用程序调用。

(3)系统库(Libraries)

系统库大部分的代码采用C/C+编写,它是系统调用的底层库,文件格

式为.so。由于Java语言无法控制硬件,而在底层运行中,由需要代码效

率高的程序库,所以C/C++编写而成的库,大部分在控制着底层硬件以及一

些驱动的实现。

(4)Linux内核

5

齐文龙:基于Android平台的手机地图应用开发

Android操作系统采用的是Linux 2.6版本的内核。在底层内核中,通

过编写驱动程序,实现各种功能的驱动。

2.3 Android software development kit(SDK)

Android SDK(Android software development kit)是Google公司

针对Android推出的用于手机和移动设备的开发包,是除了手机厂商的专

用开发包外唯一的手机模拟器开发包。他通用性高,开发出的应用程序可

以保证能运行在大部分设备上,而不是像专用厂商具有一定的不兼容性。

同时他具有强大的功能和完善的调试手段,提供运行模拟器、DDMS等丰富

的组件,是其他IDE需集成采用的必备元素。目前我们通用的主要有5个

版本,分别是android 2.1、2.2、2.3、4.0、4.2。

Android SDK包括各种各样的定制工具,可以帮助开发人员在Android

平台上开发移动应用程序。其中最重要的工具是Android模拟器和Eclipse

的Andrdoid开发工具插件,同时SDK也包含了各种在模拟器上用于调试、

打包和安装的工具。

2.4 关于Eclipse

Android平台为开发者提供了源码开放的软件开发包(SDK),它包含了使

用Java语言开发Android平台应用的必要工具和组件(API)。进行开发前先

要建立合适的开发环境,其中基于Java的整合型可扩展平台Eclipse是我们

的首选

[8]

(1)搭建Eclipse开发环境

Eclipse的运行建立在JRE之上,因此必须先安装JRE。可以从

下载JDK5或JDK6,然后按提示进行JDK的安装;安装

完成后,再配置环境变量:如在Windows XP或Windows 2000的操作系统中,

可右键单击“我的电脑”,然后依次选择“属性”、“高级”、“环境变

6

2013届数字媒体技术专业毕业设计(论文)

量”,在弹出的窗口的“系统变量”中找到“Path”环境变量,点击“编

辑”按钮,在弹出的对话框中的“变量值”一栏输入JDK的安装路径即可,

最后用同样的方法设置环境变量“Class—path”,至此便完成了JDK的安

装。

有了Java运行环境,就可以下载Eclipse ZIP包,解压后就能直接运行

Eclipse.exe。

在Eclipse中安装一个名为ADT的Android开发工具插件,就可以使用SDK

进行Android应用开发。ADT安装步骤:在Eclipse中依次选择

Help>SoftwareUpdates> Find and Install,在弹出的对话框中选择

Search for new features to install并点击Next,选择NewRemote Site。

在结果对话框中为远端站点命名,并在URL栏中输入https://dlss1.

/android/eclipse/,点击OK,随后ADT站点被添加到搜寻列表

中,再点击Finish即可;在搜索结果对话框中选择ADT>Eclipse

Integration>Android Development Tools,单击Next,接受协议,点击Next

和Finish;选择Install All,并重启Eclipse,ADT安装完成。

ADT安装完毕后,还要配置Eclipse参数,使其指向SDK根目录,过程

如下:在Eclipse中选择Window>Preferences打开参数设置面板,选择

Android选项;在SDK路径中填入Android的安装路径,单击Apply和OK,

完成参数设置。至此,就能在Eclipse环境下进行Android应用的开发了。

Java IDE的产品在IDE领域中是最多的,有商业的也有免费开源的。

在本项目中我们选用Eclipse作为开发工具,Eclipse是一个开源代码的、

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

用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插

件集,包括Java开发工具(Java Development Tools,JDT)。JDT使得Eclipse

在Java开发上有如下一些优点:快速的性能,方便的重构功能,快速修复

错误,调整组织导入包,弹出窗口进行代码自动装配等。

7

齐文龙:基于Android平台的手机地图应用开发

8

2013届数字媒体技术专业毕业设计(论文)

3系统设计及相关技术

本章主要阐述离线地图服务系统的需求分析、系统流程和界面设计,

并对系统实现过程中用到的关键技术和算法进行介绍说明。

3.1 系统需求分析

离线地图的主要功能是以图片、文字的形式向用户提供地图服务功能,

同时它将提供友好、方便的用户界面

[9]

。其功能需求包括:

(1)地图操作:能实现对地图进行放大、缩小和移动。

(2)定位操作:此程序能通过底层驱动获取目前用户所在的经纬度,

然后根据相关算法,在地图上标注目前用户所在的地理位置。

(3)地点检索:用户只要在检索栏输入自己想知道的地点或者搜索附

近的酒店、KTV等场所,都可以在地图上搜索到具体位置。

(4)路线显示:系统实现了两种路线方法,步行和驾车路线,并且路

线上都会有导航提示。

3.2 系统总体流程图

系统采用了简单的操作方式和布局方式去完成软件设计。显示页面主要

分为三个页面,进入页面、地图展示缩放页面、菜单页面。而技术页面有

五个页面,其中地图展示缩放页面由两个Activity完成,菜单页面由两个

Activity完成。

程序流程图如下图3-1:

9

齐文龙:基于Android平台的手机地图应用开发

搜索地点

地图展示

点击开始

进入主题

菜 单

定 位 路 线

结束

图3-1 系统流程图

3.3 系统关键技术

Android是一个优秀的智能手机平台,其提供四个关键的组件供我们

开发选择,不同的组件适应不同的开发需求

[10]

。Android系统也采用MVC

的架构,整体上,我们可以把代码部分看作是Cntrol,Android的XML布

局文件我们大体上可以看成是View。基于上述的理解,所以开发的关键技

术就在于我们如何协调Android提供的各种功能,我们选择XML来进行界

面布局。

(1)活动(Activity)是Android中非常重要的概念,选择Activity

是开发的首要步骤。简单的说就是一个界面就是一个Activity,它有其自

己的生命周期。界面创建时,此活动开始,而当界面关闭或者消失时,此

10

2013届数字媒体技术专业毕业设计(论文)

活动结束其生命周期。在ty类中,Android 定义了

一系列与生命周期相关的方法,在我们自己的 Activity 中,只是根据需

要复写需要的方法,Java 的多态性会保证我们自己的方法被虚拟机调用,

这一点与 J2ME 中的 MIDlet 类似。以下是Activity的生命周期。

public class OurActivity extends Activity {

protected void onCreate(Bundle savedInstanceState);

protected void onStart();

protected void onResume();

protected void onPause();

protected void onStop();

protected void onDestroy();

}

(2)XML文件在Android不仅是布局文件,同时它也是资源文件。通

常情况下,我们在layout中创建程序的布局;在values目录下的创建资

源文件,它的键-值存储的方式为开发提供了快捷的通道。Java 平台支持

通过许多不同的方式来使用 XML,并且大多数与 XML 相关的 Java API 在

Android 上得到了完全支持

[11]

3.3.1 Android界面布局

Android系统中,界面布局是一个热门的话题,因为它直接关系到用户

的体验。同时,一个美观、简洁而大方的布局不仅可以提高用户体验,同

时又能保证很高的执行效率。Android生成用户界面有三种方式:XML配置

生成、通过用户自己的界面接口生成、直接用代码生成。第一种界面生成

方式应用最为广泛,因为它符合了MVC模型,同时也容易对界面进行修改。

下面具体介绍主要的布局方式

[12]

线性布局(LinearLayout):以单一方向对其中的显示对象进行排列显

11

齐文龙:基于Android平台的手机地图应用开发

示,如以垂直排列显示,则布局管理器中将只有一列;如以水平排列显示,

则布局管理其中将只有一行。同时,还可以对个别的显示对象设置显示比

例。

表格布局(TableLayout):表格布局通过行、列的形式来管理UI组件,

TablelLayout并不需要明确地声明包含多少行、多少列,而是通过

TableRow,以及其他组件来控制表格的行数和列数,TableRow也是容器,

因此可以向TableRow里面添加其他组件,没添加一个组件该表格就增加一

列。

相对布局(RelativeLayout):允许通过指定系显示对象相对于其他显

示对象的父级对象的相对布局来布局。一个控件的位置它决定于它和其他

控件的关系,好处:比较灵活;缺点:掌握比较复杂。

3.3.2 Activity之间的传值

Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行

描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent

传递给调用的组件,并完成组件的调用

[13]

。因此,Intent在这里起着一个

媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调

用者之间的解耦,两个Activity直接的传值还直接与Intent的Extra对

象有关。

12

2013届数字媒体技术专业毕业设计(论文)

4 系统实现

4.1 地图展示的实现

地图展示是系统最基本的功能。要开发地图应用首先要下载百度地图

Android SDK,并且要申请百度地图的密钥Key。

4.1.1 Android SDK 下载与安装

[14]

百度地图的Android SDK包含了丰富的LBS功能:

(1)地图展示:包括2D图、卫星图、3D图地图展示。

(2)地图操作:提供平移、缩放、双指手势操作、底图旋转等地图相

关操作。

(3)自定义绘制:提供自定义绘制点、线、面基本几何图形的功能。

(4)百度地图导航:提供调起百度地图Android版(v5.0及以上版本)

导航功能。

(5)地图搜索:提供根据关键字进行范围检索、城市检索和周边检索。

且支持LBS云检索用户自有数据。

(6)详情查询:提供餐饮类的POI的详细信息查看(Place详情)。

(7)线路规划:提供公交、驾车和步行三种类型,多种方案(不含地

铁、时间优先、最少换乘、最少步行)的线路规划。

(8)地理编码:提供地址信息与坐标之间的相互转换。

(9)位置标注:提供一个或多个POI位置标注,且支持用户自定义图

标。

(10)离线地图:提供离线地图功能,可节省用户流量。

(11)定位:采用GPS、WIFI、基站、IP混合定位模式,请使用Android

定位SDK获取定位信息,使用地图SDK定位图层进行位置展示。百度地图

13

齐文龙:基于Android平台的手机地图应用开发

Android SDK从2.0.0版本开始采用的是矢量版的地图,开发者如果需要使

用栅格版的地图数据,请使用1.3.5及之前的版本。

(12)实时路况:提供城市实时交通路况信息图。

安装配置:

第一步:在工程里新建libs文件夹,将开发包里的

拷贝到libs根目录下,将拷贝到libsarmeabi目

录下,拷贝完成后的工程目录如下图4-1所示;

图4-1 地图包存放位置

第二步:在工程属性->Java Build Path->Libraries中选择“Add

External JARs”,选定,确定后返回。这样,这个包就会

出现在Libraries中,如图4-2。

图4-2 Path后的地图包

通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全

部功能了。

4.1.2 获取API Key

用户在使用SDK之前需要获取百度地图移动版API Key,该Key与自己

的百度账户相关联。我们必须先有百度帐户,才能获得API Key。并且,该

14

2013届数字媒体技术专业毕业设计(论文)

Key与我们引用API的程序名称有关。

4.1.3 显示地图

百度地图SDK为开发者提供了便捷的显示百度地图数据的接口,通过以

下几步操作,即可在您的应用中使用百度地图数据:

第一步:创建并配置工程(具体方法参见工程配置部分的介绍);

第二步:在Manifest中添加使用权限及Android版本支持;

常用使用权限如下图4-3所示(开发者可根据自身程序需求,添加所需

权限):

图4-3 部分使用权限

添加完“使用权限”后要添加“屏幕支持”并且要对Activity进行配

置。这里百度开发官网上都给出了开发代码,具体就不一一列出。

之后,还要在布局xml文件中添加地图控件,布局文件保存为

app_。本系统主要采用的是相对布局与线性布局结合的布局方法,

使得文本框和按钮的位置更为合理准确。

Android开发最为重要的就是Activity的设计。这里首先要创建地图

的Activity,并且import相关的类。之后通过初始化Activity,并且将

申请的SDK添加到Activity中的代码("我的Key", null);

中,最后重写Activity的生命周期函数管理API,这样就可以显示出可以

缩放的地图。地图显示如下:

15

齐文龙:基于Android平台的手机地图应用开发

图4-4 地图显示

4.2 菜单功能的实现

菜单界面如图4-5:

图4-5 Menu截图

此菜单界面需要用户点击 Menu按键才能激活。菜单中用三个选项:我

的位置、路线、退出,点击“路线”还有“步行”和“驾车”两种选择。

当菜单第一次被打开时,系统会复写Activity父类中的

onCreateOptionMenu()方法。重写该方法并生成传递给你的这个菜单对

象。你可以通过扩充定义在XML文件中的一个菜单资源或者通过为你想要

的每一个菜单项调用add()方法生成这个菜单。这个方法增加一个菜单项

MenuItem,并返回新创建的对象。你可以用返回的MenuItem来设置附加属

性如图标,快捷键,意图以及这个菜单项的其它设置。

16

2013届数字媒体技术专业毕业设计(论文)

其菜单设计代码为:

@Override

public boolean onCreateOptionsMenu(Menu menu)

{

// TODO Auto-generated method stub

teOptionsMenu(menu);

int menuItemId = Menu.

FIRST

;

MenuItem menu1 = (1, 1, 1, "我的位置");

n(le.

mylocation

);

MenuItem menu3 = (1, 3, 1, "路线");

n(le.

get_incident

);

MenuItem menu5 = (1, 5, 1, "退出");

n(le.

exitapp

);

return true;

}

4.3 定位功能的实现

在Android的定位(on)接口中包含了几个与位置

service相关的类,就可以使用这几个服务类来获得Android提供的定向

API,同时需要手持移动设备支持GPS模块或者A—GPS。在使用

LocationManager来提供定位服务时不会直接提供使用者的坐标情况,首先

需要一个句柄,它可以通过系统提供的getSystemService来获得并实现对

它的应用。当程序拥有了指向LocationManager的句柄服务时,然后就可

以使用下列3个功能:1)搜索LocationManager服务所能给的地理位置坐

标;2)注销、释放或者获得LocationProvider提供的地理位置信息;3)当

手持移动设备进入某一个活动范围以后,可以激活一个Intent来实现下一

个功能模块的设定(在用虚拟机进行开发、模拟时并不能够获取位置信息,

通常在制作GIS应用时需使用工程机进行开发)。

在Android中实现定位功能,需要知道经纬度就可以定位到相应的地

点。这时在程序中先要构造一个经纬度点,经纬度点的构造方法如下

[15]

17

齐文龙:基于Android平台的手机地图应用开发

GeoPoint(int latitudeE6, int longitudeE6)。

在构建经纬度时需要注意经纬度的取值精度,在Android系统中,要求

经度和纬度的精度为小数点后6位,因此在构造经纬度点的时候需要用到

“数值*1E6”方式,或者直接将经纬度的精度写全。效果图如图4-6。

图4-6 定位

定位信息获取的主要技术代码为:

Lotion mylocation = ocation();

rchflag(false);

if(mylocation!=null)

{

}

break;

location(mylocation);

4.4 路线导航功能的实现

百度地图SDK集成搜索服务包括

[16]

:位置检索、周边检索、范围检索、

公交检索、驾乘检索、步行检索,通过初始化MKSearch类,注册搜索结果

18

2013届数字媒体技术专业毕业设计(论文)

的监听对象MKSearchListener,实现异步搜索服务。首先自定义

MySearchListener实现MKSearchListener接口,通过不同的回调方法,获

得搜索结果。

“路线导航”部分的效果图如图4-7所示:

图4-7 路线导航

主要代码如下:

new r()

.setIcon(le.

alert_dialog_icon

)

.setTitle("温馨提醒")

.setView(textEntryView)

.setNegativeButton("驾车", new

kListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Toast.

makeText

(, "起点

="+t().toString()+"n终点

="+t().toString(), Toast.

LENGTH_LONG

).show();

MKPlanNode stNode = new MKPlanNode();

=

t().toString();

MKPlanNode enNode = new MKPlanNode();

=

19

齐文龙:基于Android平台的手机地图应用开发

t().toString();

gSearch("西安", stNode, "西安

", enNode);

}

})

.setNeutralButton("步行", new

kListener() {

@Override

public void onClick(DialogInterface dialog, int

which) {

// TODO Auto-generated method stub

Toast.

makeText

(, "起点

="+t().toString()+"n终点

="+t().toString(), Toast.

LENGTH_LONG

).show();

MKPlanNode stNode = new MKPlanNode();

=

t().toString();

MKPlanNode enNode = new MKPlanNode();

=

t().toString();

gSearch("西安", stNode, "西安

", enNode);

}

})

.show();

4.5 地点检索功能的实现

这里主要展示“周边检索”。周边检索指的是以指定坐标点为圆心,根

据给定关键字查询一定半径范围内的全部兴趣点

[17]

。使用方法:

poiSearchNearBy(String key, GeoPoint pt, int radius);比如检索周

边5000米之内的KFC餐厅,主要代码如下:

20

2013届数字媒体技术专业毕业设计(论文)

rchNearBy(keyWord, new

GeoPoint((int)(ocation().getLatitude()*1E6),

(int)(ocation().getLongitude()*1E6)), 5000);

注:

1.这里的“keyWord”指的是搜索框的关键词;

2.这两个函数:“ocation().getLatitude()”和

“ocation().getLongitude()”分别得到的是定位的地

点的经度、纬度。效果图如下图4-8:

图4-8 地点检索

21

齐文龙:基于Android平台的手机地图应用开发

22

2013届数字媒体技术专业毕业设计(论文)

5 项目调试与系统测试

Android提供了优秀的调试工具,DDMS。全称Dalvik Debug Monitor

Service,是 Android 开发环境中的Dalvik虚拟机调试监控服务。它为我

们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及

堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标

等等。

运行Android程序是有时候会出现内存泄露等异常类型问题。 Android

虽然会自动管理内存,JAVA也有garbage collection (GC)内存回收机制。

此类异常很难意料到,除非在特定情况下,它才能发生。所以排除此类异

常显得比较困难。但Android tools中的DDMS就带有一个很不错的内存监

测工具Heap。用Heap监测应用进程使用内存情况的步骤如下:

启动eclipse后,切换到DDMS透视图,并确认Devices视图、Heap

视图都是打开的;

链接成功后,在DDMS的Devices视图中将会显示手机设备的序列号,

以及设备中正在运行的部分进程信息;

是否会有内存泄漏,判断方法如下:

不断的操作当前应用,同时注意观察data object的Total Size值;

正常情况下Total Size值都会稳定在一个有限的范围内,也就是说由于程

序中的代码良好,没有造成对象不被回收的情况。所以说虽然我们不断的

操作会不断的生成很多对象,但在虚拟机不断的进行GC的过程中,这些对

象都被回收了,内存占用量会会落到一个稳定的水平;

反之如果代码中存在没有释放对象引用的情况,则data object的

Total Size值在每次GC后不会有明显的回落,随着操作次数的增多Total

Size的值会越来越大,直到到达一个上限后导致进程被kill掉。如果调试

的程序出现上述情况,可能在LogCat中会出现下面错误:

02-04 21:46:08.703: ERROR/dalvikvm-heap(2429): 1920000-byte

external allocation too large for this process.

02-04 21:52:28.463: ERROR/AndroidRuntime(2429): .

OutOfMemoryError: bitmap size exceeds VM budget.

移动终端因为内存有限,可能因为下面几种原因导致:

(1)图片处理

23

齐文龙:基于Android平台的手机地图应用开发

1.明确调用();这种内存回收会有一定的作用。

2.图片处理完成后回收内存,调用BitMap进行图片处理后进行内存回

收e(),如此才会把刚刚用过的图片占用的内存释放。

3.图片处理时指定大小。

(2)对象循环调用

比如循环申请Object 对象,并将所申请的对象放入一个Vector 中,

如果仅仅释放引用本身,那么Vector 仍然引用该对象,所以这个对象对

GC 来说是不可回收的。因此,如果对象加入到Vector 后,还必须从Vector

中删除,最简单的方法就是将Vector对象设置为null。

主要代码如下:

Vector v = new Vector(10);

for (int i = 1; i<100; i++)

{

Object o = new Object();

(o);

o = null;

}

24

2013届数字媒体技术专业毕业设计(论文)

6 总结与展望

实现了一个基于最新最流行智能手机系统Android上的个人地图程序。

完成一个整体框架、地图显示、地点检索、路线显示等多功能的产品项目。

基于百度地图的地图应用开发是现在国内外地图开发的热门项目,它

完善的地图信息功能和精准的定位功能使它在广大Android地图开发者当

中成为热门话题。市场上以百度地图为基础的各类地图应用服务已经有近

百种,里面不乏有很多优秀的地图应用作品,并且还增加了许多自己独立

的功能,改善了地图应用的使用界面和体验。这都是国内软件开发蓬勃发

展、向着更高更好的方向前进的好事情。希望国内在先进的科技方面一路

向前,与国外水平达到一致。

世界上没有完美的事情,系统也是一样。本系统的优点在于定位功能

的精准、定位快,地图缩放级别很高,可以放大到很具体很细致的地图层。

缺点就是没有添加实景地图,没有很强的错误处理机制。这里的错误处理

是指在搜索地点时候如果敲一行乱码就会报错。这里曾经做过很多次尝试

修改,不过由于自己技术能力有限最终还是搁浅了,但这不妨碍地图的应

用,因为没有人会在需要地图搜索的时候,在搜索栏输入乱码,不是吗?

25

齐文龙:基于Android平台的手机地图应用开发

26

2013届数字媒体技术专业毕业设计(论文)

致 谢

行文至此,我的这篇论文已接近尾声,我四年的大学时光也即将敲响

结束的钟声。离别在即,站在人生的又一个转折点上,心中难免思绪万千,

一种感恩之情油然而生。生我者父母。感谢生我养我,含辛茹苦的父母。

是你们,为我的学习创造了条件;是你们,一如既往的站在我的身后默默

的支持着我。没有你们就不会有我的今天。谢谢你们,我的父亲母亲!

其次,衷心地感谢敬爱的张二虎教授不断督促我并且定期的检查我,

使我才能按时的完成作品、撰写毕业论文。感谢老师给我的全力支持和对

我的信任,使我能够在开发中掌握步调,循序渐进。感谢西安理工大学所

有教育我的老师和所有给予我帮助的同学们,正是由于你们的帮助和支持,

我才能一个一个克服困难、解明疑惑,直至本文顺利完成,在这里请接受

我诚挚的谢意。

这里还要感谢亲爱的刘雅菲学姐在整个毕业设计过程中对我无微不至的关

心和监督,并且分享给了我许多参考文献和Android开发时用到的教程和

视频,还在技术层面上对我仔细地讲解和支持。

27

齐文龙:基于Android平台的手机地图应用开发

28

2013届数字媒体技术专业毕业设计(论文)

参考文献

[1] 张艳芳.

Android手机Web地图服务的应用设计[D].南昌:南昌大学,

2010.1

[2] 赵建勋.基于Android平台的移动位置服务的开发与实现[J]. 现代商

贸工业,2010,20: 1672-3198.

[3]

徐光侠,封雷,涂演,李成.基于Android和Google Maps的生活辅助系

统的设计与实现[J].重庆邮电学院校刊,2012,2:1673-825X.

[4] 刘值. Android 手机地图 POI 及路线搜索的设计与实现[D].吉林:吉

林大学,2012.6.

[5] 吴亚峰.Android应用案例开发大全[M].人民邮电出版社:2011—09版.

[6] 李兴华.Android开发实战经典[M].清华大学出版社,2012.3.

[7] 公磊.基于Android的GPS测量系统开发[D].南昌:南昌大学,2008.12

[8] 百度文库.基于Android平台的手机离线地图开发设. wenku.

/view/.

[9] 公磊,周聪.基于Android的移动终端应用程序开发与研究[J].计算机

与现代化,2008,8:1006-2475.

[10] 党李成.基于Google Android智能手机应用平台的研究与应用[D].安

徽:安徽大学,2010.4.

[11] 百度文库.基于Android手机平台的web地图服务. wenku.

/view/

[12] 赵情融.基于Android平台的个人移动地图应用[D].武汉:华中科技大

学,2011.1.

[13] 刘正,陈强. 基于Android的GPS应用中的研究与开发[J].苏州工业园

区外包学院,2010,32:1671-6369.

[14] 百度.百度开发者中心./map/

.

29

齐文龙:基于Android平台的手机地图应用开发

[15] 胡舒鹏. 基于Android系统的手机地图探索与实践[J].科技创新论

坛,2012,1671-7597.

[16] 赵亮,张维.

基于Android技术的界面设计与研究[J].电脑知识与技

术,2009,9:15-29.

[17] 代敏.

基于Android平台下手机定位程序的设计及实现[J].计算机与

数学工程,2012,4:143.

30


本文标签: 地图手机开发应用平台