APP下载

基于Android 的手机定位软件

2015-11-26冯玉平王曙光

计算机与现代化 2015年2期
关键词:邮电大学经纬度视图

冯玉平,王曙光

(1.西安邮电大学计算机学院,陕西 西安 710061;2.西安邮电大学自动化学院,陕西 西安 710121)

0 引言

由于Android 系统的免费开源、开发维护成本低、使用简单等特点,因此被广泛作为移动智能应用的开发平台[1-3]。近年来GPS 和北斗卫星导航系统的定位服务[4-7]在手机终端应用中更是非常流行,手机移动定位早已成为了人们出行旅游、查找路线、景点、美食等位置信息的好帮手,现如今市面上许多广告、网络、杂志等信息,除了提供名胜古迹或商家的地址、电话等信息外,还会附上经纬度坐标[8],方便人们直接输入坐标,便可通过卫星导航系统指引到目的地。

因此,本文描述了基于Android 平台、采用Google Android SDK、Eclipse、ADT 等开发包和开发工具,并与Google 的网络服务Google Map 相结合,实现手机地图搜索定位[9]应用的开发,该软件设计2 个Edit-Text 可供用户输入经纬度坐标,实现通过手机查找目标位置信息或定位用户当前所在位置,满足了手机用户基本的地图服务需求。

1 Android 开发环境的搭建

开发一个Android 应用程序首先需要搭建Android 运行环境,即下载与此坏境相关的各种软件,如Eclipse、JDK、Android SDK。Android 平台下的应用程序都是采用Java 语言编写的,所以首先需要安装JDK,用以支持Android 和Eclipse,然后解压Eclipse开发工具到指定的目录即可,无需安装。接下来要为Eclipse 安装ADT 插件,打开Eclipse,在菜单栏上依次选择help >>Install NewSoftWare,点击Add 按钮,输入站点名,进入下一步,同意安装条款即可在线安装ADT。再配置Android SDK,点击菜单window >>preferences,点击Browse 选择刚才Android SDK 的解压目录。最后还需要创建Android 模拟器AVD,这样整个开发环境就配置完成[10]。

2 系统设计方案的实现

系统基于Android 平台,通过申请Google Map API Key 实时调用Google Map,在此基础上进行手机定位软件的主界面和各功能模块的相关开发。

2.1 申请Goole Map API Key

基于Goole Map 服务的应用程序开发,在开发之前需申请一组验证过的Map API Key,而要获取这个密钥首先得获取debug.keystore MD5 指纹,然后再打开浏览器,进入谷歌网页登录自己的谷歌账号,输入网址:http://code.google.com/android/maps-api-signup.html,在输入框中填写MD5 指纹,即可获得API Key。在XML 布局文件中进行API Key 的相关配置即可使用。

2.2 主界面布局

在main.xml 布局文件中,总体布局为垂直的分布线性布局,在此布局中还需要声明2 个水平分布的线性布局,第一个水平布局用于添加2 个用于分别显示经纬度的静态文本TextView 控件和2 个用来供用户输入的经纬度的EditText 控件;第二个水平布局包需要添加一个点击查询Button 和一组用于切换普通视图和卫星视图的RadioButton,这2 个RadioButton需要编制在一个RadioGroup 中,同一时刻一个Radio-Group 中只能有一个按钮处于选中状态[11-13]。最后还要声明一个MapView 控件用于添加前面申请的Google Map API Key。

2.3 功能模块的设计

本程序创建了2 个功能类,一个是继承MapActivity 的Googlemap 子类,在程序中需要使用MapView来显示地图信息,而MapView 只能用在Mapactivity中,这是因为MapView 需要通过后台的线程来连接网络或者文件系统,而这些线程需要MapActivity 来管理。另一个是继承Overlay 的GoogelOverLay 子类,该类主要实现的功能是在MapView 上绘制一个额外的能指定经纬度位置方向朝下的箭头,标明该位置在地图中的确切位置,并将其添加到MapView 的Overlay 列表中才可以被绘制,具体代码实现如下:

继承Mapactivity 的子类主要实现以下功能:

1)判断输入经纬度是否有效。

当用户点击查询按钮后,系统通过查询B-utton的对象调用为此按钮添加的setOnClickListner(new View.OnClickListener()...)监听器函数,该函数在重写onClick 方法中首先获得经纬度坐标值,然后通过if 语句函数来判断输入的经纬度是否有效,代码实现如下:

2)更新并缩放地图。

若输入的经纬度坐标无效,则要求输入正确的经纬度坐标,若有效,则调用updateMapView()方法更新MapView 视图中的内容,该方法将经纬度坐标转换为GeoPoint 对象后,再调用MapController 的animateTo()方法将地图的中心点移到GeoPoint 的坐标上,同时调用继承Overlay 的子类将箭头图片移动到指定的坐标位置,并设置displayZoomCont-rols(true)显示地图的放大和缩小按钮,代码实现如下:

3)切换视图。

在切换视图过程中,程序通过RadioGroup 的对象来调用为此单选按钮组添加的setOnChecked-ChangeListner(new OnCheckedChangeListener()...)监听器函数,并通过if 语句函数来实现判断用户按下的是普通视图按钮还是卫星视图按钮。

因为地图使用的是Google Map API,不是Android 类库,所以完成了功能代码开发之后需在AndroidManifest.xml 文件中添加Google Map 相关的类库:<uses-library android:name="com.google.android.maps"/ >和添加访问网络的权限<uses-permissionan-droid:name=" android.permission.INTERNET"/ >。整体设计流程如图1 所示。

图1 设计流程图

3 测试结果

为了验证该软件在输入经纬度值后能否正确地定位显示,本文首先通过UM220 BD2/GPS 导航授时平台获取到西安邮电大学这个位置的Longtitude:108.949339100°E 和Latitude:34.214819350°N,该平台是一款集于BD2 和GPS 双系统模块的定位导航开发板,定位精度优于20 m。然后利用智能手机加载本程序,开启手机的网络连接,将上述经纬度值输入该软件中,如图2 所示,准确地显示了西安邮电大学的位置,同时在测试的过程中能够灵活地对地图进行拖拉、缩放和快速地切换普通视图和卫星视图,达到了预期效果。

图2 普通视图

4 结束语

通过申请Google Map API Key,在智能手机内可以实时调用Google Map,从而实现实时定位和导航[14-17]。本文首先介绍了Android 运行坏境的搭建和Map API Key 的申请,然后根据Android 和Google Map 提供的编程应用程序接口,设计并实现了基于Android 平台能以经纬度查询目标的手机定位软件。以Android 智能手机为平台,借助Google Maps 提供的地图数据服务,为用户外出旅行,查找目标位置实现地图的定位显示,具有一定的实用价值。

[1]陈莉君,张超.Android 进程间通信Binder 扩展模型的设计与实现[J].西安邮电学院学报,2013,18(3):96-99.

[2]刘建华,田岁苗,赵勇.基于Android 的智能家居系统设计[J].西安邮电大学学报,2013,18(4):71-74.

[3]杨帆,赵东东.基于Android 平台的WiFi 定位[J].电子测量技术,2012,35(9):116-119.

[4]龙昌生.北斗/GPS 双模导航终端关键模块的设计与实现[D].重庆:重庆大学,2011.

[5]康永,胡安平.基于网络的北斗位置信息服务研究[J].全球定位系统,2013,38(1):40-44.

[6]刘正,陈强.基于Android 的GPS 应用中的研究与开发[J].中国西部科技,2010,9(32):15-16.

[7]秦超,姜良君,蔡永香.基于Android 的移动终端GPS 测量系统的设计与开发[J].城市勘测,2011(1):64-67.

[8]翟玉山.基于Android 平台手机地图的设计与实现[D].西安:西安电子科技大学,2012.

[9]佘凤娅.基于Android 的手机搜索定位应用开发[D].北京:北京邮电大学,2010.

[10]黄艺锋,闫巧.基于Android 平台电子词典的设计与实现[J].计算机应用,2012,31(S2):228-232.

[11]吴亚峰,索伊娜.Android 核心技术与实例详解[M].北京:电子工业出版社,2010:51-86.

[12]余志龙,陈昱勋,郑名杰,等.Android SDK 开发范例大全[M].北京:人民邮电出版社,2009.

[13]叶达峰.Eclipse 编程技术与实例[M].北京:人民邮电出版社,2006.

[14]陈婷,畅伟杰,张立臣.基于Google Map 的西安旅游电子地图设计与实现[J].计算机技术与发展,2013,23(9):230-233.

[15]吴肖,彭璇,朱明磊.基于Google Map API 的校园电子地图开发[J].测绘工程,2010,19(3):35-38.

[16]周鹏,陈红顺,尹菲.Google Maps API 技术在移动终端上的GIS 应用[J].测绘通报,2012(3):95-96.

[17]江南,白小双,曹亚妮,等.基础电子地图多尺度显示模型的建立与应用[J].武汉大学学报(信息科学版),2010,35(7):768-772.

猜你喜欢

邮电大学经纬度视图
《西安邮电大学学报》征稿启事
西安邮电大学设计作品
《西安邮电大学学报》征稿启事
基于经纬度范围的多点任务打包算法
5.3 视图与投影
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
自制中学实验操作型经纬测量仪
重庆邮电大学学报( 自然科学版》2016年第28卷第1-6期总第114-125期