DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 656|回复: 0
打印 上一主题 下一主题

[GPS] 基于Android平台的GPS导航系统的设计与实现

[复制链接]
跳转到指定楼层
楼主
发表于 2014-9-30 07:05:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于Android平台的GPS导航系统的设计与实现
曾薪夷
(重庆金美通信有限责任公司,重庆400030)
摘要:针对人们对地理信息的实时性及便捷出行旅游的需求,以及Android系统的优良性能,提出基于Android平台的
GPS导航系统的设计与实现,利用完整、免费、开放的Android平台并结合Google Map API,实现基于卫星授时、定位、轨迹
记录、路径规划的车载导航系统。本文还针对导航应用的响应速度和流量控制提出解决办法,优化用户体验。
关键词:安卓应用;全球定位系统;谷歌地图;导航
中图分类号:TP316;TN929.5 文献标识码:A doi:10.3969/j.issn.1006—2475.2012.09.059
Design and Implementation of GPS Navigation System Based on Android Platform
ZENG Xin—yi
(Chongqing Jinmei Communication Co.,Ltd.,Chongqing 400030,China)
Abstract:Taking into account of demands of the real—time geographic information and convenient travel and tourism,as well as
the exceUent performance of Android system,this paper designs and implements the GPS navigation applications system based O11
Android platform.Taking use of complete,free and open Android platform and combining with Google Map API,it achieves the
satellite time,location,track record,path planning for car navigation.About response speed an d flow control for navigation ap—
plications,the paper also proposes a solution to get a better user experience.
Key words:Android application;GPS;Google map;navigation
0 引 言 1 各种操作系统的比较
目前,Android不仅仅应用到手机,而且已经涉
足车载终端和上网本市场。随着国内3G进入正式
的应用阶段,采用Android系统的智能终端越来越
多,Android吸引了不少商家和终端开发人员,这使应
用之间的通用性和互联性在最大程度上得到保持。
由于私家车辆的速增,人们对户外出行导航提出更高
要求,导航软件在智能系统中的应用成为研究热点之

。在Android系统GPS定位服务的支持以及3G无
线网络的驱动下,基于Android的良好的发展形势,
采用Google地图实现导航服务,是具有可行性的。
本文将Android与市场上其他的手机系统进行比较,
研究其发展现状;然后分析Android平台的系统架
构;最后针对Android平台结合Google Map API的导
航应用开发进行深入研究。
目前应用在移动终端上的操作系统主要有Sym—
bian、Windows CE、Palm OS和Linux、IOS、Android六
种。Palm OS是一种32位的嵌入式操作系统,其产
品本身就包括智能手机,但这种操作系统更倾向于
PDA市场。Symbian是一个实时性、多任务的纯32
位操作系统,可以支持GPRS、蓝牙、SyncML,以及3G
技术。用户可以在这个平台上进行Java程序开发,
扩展手机功能。目前Nokia等厂商手机终端采用了
Symbian。Windows CE是一个32位、多任务、多线程
的操作系统,是一种压缩并可升级的软件系统,即使
在小内存条件下也能提供较高的性能,并且拥有好的
电源管理系统,为嵌入的、移动的,或多媒体产品线提
供了支持。而Linux系统源代码开放,手机制造商可
根据实际情况有针对性地开发自己的Linux手机操
作系统,也吸引了众多软件开发商对内容应用软件的
收稿日期:2012-04.10
作者简介:曾薪夷(1987.),女,重庆大足人,重庆金美通信有限责任公司工程师,本科,研究方向:通信工程。
226 计算机与现代化 2012年第9期
开发,但它入门难度高,熟悉其开发环境的工程师少,
集成开发环境较差,尚未得到较广泛的支持。iPhone
OS是由苹果公司为iPhone开发的操作系统。它主
要是给iPhone和iPod touch使用,就像其基于的Mac
OS X操作系统一样,它也是以Darwin为基础的,它
良好的性能深受消费者青睐,但其并不开源。
相比以上的系统,Android系统是一个真正意义
上的开放性移动设备综合平台,以Linux为内核,它
包括操作系统、用户界面、中间件和应用程序,具有友
好的开发和调试环境,而且还支持各种可扩展的用户
体验,不仅如此,平台集成的地图模块,轻型的SQLite
数据库,可视化的界面设计方案,方便快捷的2D、3D
绘图,为对媒体功能和浏览器提供强大的支持。An—
droid的平台开发性促进了应用创新,有助于降低开
发成本,还可以使运营商能非常方便地制定开发富有
特色的产品,具有很大的市场潜力。
2 Android的系统架构
Android结构分为4层¨ ,从高到低分别是应用
层、应用框架层、系统运行库层和Linux内核层。
(1)应用层:应用是用Java语言编写的运行在虚
拟机上的程序。Google最开始时在Android系统中搁绑
了一些核心应用,如E.mail客户端、日历、浏览器等。
(2)应用框架层:这层包含各种组件(丰富可扩
展的视图、内容提供器等),构成了编写Google发布
的核心应用时所使用的API框架,也可以使用这些框
架来开发自己的应用,简化了程序开发的架构设计,
但是必须遵守其架构开发原则。
(3)系统运行库:包含一些C/C++库和Adroid
运行库,这些库能被Android系统中不同的组件使
用,它们通过Android应用框架为开发者提供服务。
(4)Linux内核层:Android 的核心服务基于
Linux内核,如安全性、内存管理、进程管理、网络协议
栈和驱动模型等都依赖该内核。Linux内核同时也作
为硬件和软件栈之间的抽象层。
3 Android开发环境的搭建
PC主机安装Windows XP系统,本研究为应用层
开发,安装Java开发包版本为JDKI.6 ,除此外,还
需安装Eclipse作为开发IDE,之后,安装 SDK,
Android SDK(Software Development Kit)是Google公
司针对Android推出的用于手机和移动设备的开发
包,它通用性高,开发出的应用程序可保证能运行在
大部分设备上,同时它具有强大的功能和完善的调试
手段,它提供运行模拟器,DDMS等丰富的组件。本
系统是在SDK1.5的环境下进行开发的。在此基础
上载入Google官方提供的Android开发插件ADT。
开发环境搭建完成,即可新建工程来进行应用开发。
4 GPS导航系统设计与实现
本系统针对车载应用设计了卫星时间校准、GPS
定位、路径规划导航、兴趣点搜索、路书应用、人工服
务等功能。本文主要围绕GPS展开对卫星授时、GPS
定位、移动终端轨迹记录和路径规划进行研究。
4.1 UI设计
图1 系统界面
Android应用程序的基础功能单元就是Activity
类中的一个对象。本系统的界面如图1所示,该界面
使用GridView控件配XML样式来进行布局,并对其
设置容器ImageAdapter,它继承BaseAdapter类并加
载该类方法 J,加入界面要显示的图片,最后为图片
添加点击事件,实现系统界面的设计。
4.2 系统功能实现
点击界面图标,通过Intent跳转相应的Activity
实现具体的功能。本系统是基于定位导航的设计与
实现,首先在Manifest.xml文件中加入应用包并进行
需要的权限 声明:
4.2.1 卫星时间校准
点击第一个图标,实现卫星时间的获取,通过
2012年第9期 曾薪夷:基于Android平台的GPS导航系统的设计与实现 227
DDMS发送的模拟卫星数据帧(如图2所示),由Log—
Cat【 知获得的时间数据为1330992014000,再利用
Date进行时间的转换,并设置为YYYY—MM—dd HH:
mm:ss显示格式,卫星授时结果为2012-03-06 00:00:
14。
图2 LogCat信息
long GpsTime = location.getTime();
Date date =new Date(GpsTime);
DateFormat df = flew SimpleDateFormat f ”YYYY—MM—dd
HH:m/n:ss”);
4.2.2 GPS定位
进入GPS定位功能,可获取所在位置信息。首
先在布局文件中加载地图,然后获取LoeationManag—
er 对象,设置Criteria(服务商)的信息,并设置Pro—
vider,取得效果最好的Criteria,由于终端是移动的,
所以注册一个位置监听器LocationManager监听定位
信息改变,设置更新周期为3000ms,再获取当前的
Location,取得位置的经纬度信息,再进行位置解析,
通过address.getCountryName(),address.getl_~cality
(),address.getPostalCode(),即可获取当前位置所在
国家、城市及邮政编码,在DDMS中向模拟器发送模拟
经纬度如图3所示,模拟器运行定位结果如图4所示。
td~mud.
*Jr
Longi rude 105 ,1578
29.5505
l: 钟x 捌L ~ ~一 i鏊
D? l i
0s?f—md l i
一一~ i
} t tuae j i: l


图3 DDMS模拟发送 图4 定位结果图
经纬度数据
4.2.3 轨迹记录
在实现轨迹记录的设计中,周期性获取移动终端
的地理位置,通过OverLay类 在地图上两点间画直
线,只要获取位置的时问周期足够短,即可实现终端
的轨迹记录。设置位置监听周期为1000ms,gpl、gp2
是终端移动前后两点的GeoPoint。
mLocationManager.requestLocationUpdates(mLocationPfiv—
ider,1000,10,mLocationListener);
MyOverLay mOverlay=new MyOverLay(gpl,gp2,mode);
Listoverlays=mMapView.getOverlays();
overlays.add(mOverlay);
通过DDMS加载KML文件,如图5所示,载人模
拟位置数据,模拟器运行结果如图6所示。
图5 载入模拟轨迹数据
KML文件
图6 移动终端轨迹
记录图
4.2.4 路径规划导航设计
基于GPS授时、定位和轨迹记录来设计实现系
统导航,在Android SDK中已移除原有M5版本里的
DrivingDirection Package,但是Google发布了Google
Maps JavaScript API V3,开发人员可以基于Android
提供的WebView控件中载入Web导航网页的方式实
现导航功能。WebView 不但可以运行一段Html代
码,还有更重要的一个特点,它可以同JavaScript互相
调用,因此可以用Html和JavaScript来编写Android
应用。首先在XML布局文件中定义WebView控件,
在程序中加载该控件,并通过loadUrl方法载入网页。
下面通过调用Google Maps JavaScript API V3用
JavaScript编写Html网页实现路径规划-】 。从Activity
中获取起始及目的地址与出行方式,本次出行
方式默认为DRIVING,在Activity中先对输入的地址
进行解析,在JavaScript脚本中获取Activity传来的起
始点与目的点的经纬度,设置路径规划请求re—
quest[14]
, 出行方式为自驾,要求返回多条规划结果,
通过调用directionsService.route进行路径规划¨ :
direetionsServiee.route(request,funedon(response,status){
if(status= google.maps.DirectionsStatus.OK){
direetionsDisplay.setDireetions(response);
}});
228 计算机与现代化 2012年第9期
图7 路径规划界面 图8 路径规划结果图
实现了路线规划,通过调用OverLay类将得到的
路线结果以地图图层的方式覆盖在MapView上,显
示如图7、图8,对路径规划的结果进行处理,对返回
的多条路径规划结果routes[n]根据用户需求进行选
择,再对选定的一条规划路径(如收费最少的路线)
提取每一段中文规划信息,由于本次只是研究两点间
的路径规划,故只存在legs[0],对该段结果的每一步
steps[m]的持续时间stp..duration.text和长度stp.dis—
tance.text进行提取,结合GPS定位,将得到的路段信
息,传人1TS模块,判断控制车辆前行方向和距离,
实现导航功能。
var stp=directionsDisplay.getDireetions().routes[n].1egs
[0].steps[m];
disp disp+stp.distance.text+stp.duration.text:
4.3 性能改进
为了解决每次加载地图时出现终端流量耗损及
延时大的问题,本文提出下面的处理方法:首先使用
Mobile Arias Creator软件下载不同级别的地图瓦片,
将下载的瓦片解压缩到本地,并且将Google mapfiles
文件夹(包含AP1-3包)及mapapi.jS放在本地。通过
实例化地图原型并实现其方法,实现本地地图的
调用:
LocalMapType.prototype.tileSize = new google.maps.Size
(256,256);
LocalMapType.prototype.getTile=function(coord,zoom,
ownerDocument){
var img ownerDocument.createElement(”img”);
img.style.width=this.tileSize.width + ”px“:
img.style.height=this.tileSize.height+ ”px”;};
va~strURL=zoom +”/” + coord.X+”/” + coord.Y + ”.
png”;
img.src strURL;
5 结束语
本文基于Android开放平台结合Google API设
计实现了导航功能,对卫星授时、定位、终端移动轨迹
记录和路径规划进行研究,经测试,能实现精确定位,
可根据用户需求选择的规划路线进行导航。由于
Android的强大功能以及其完全开放的平台,Android
应用开发将会有广阔的市场前景,能够为用户提供更
多有用的信息服务。
参考文献:
[1] 杨丰盛.Android应用开发揭秘[M].北京:机械工业出
版社,2010.
[2] 孙卫琴.Java面向对象编程[M].北京:电子工业出版
社,2006.
[3] 公磊,周聪.基于Android的移动终端应用程序开发与
研究[J].计算机与现代化,2008(8):85—89.
[4] 陈育春.Google Map API开发大全[M].北京:机械工
业出版社,2010.
[5] 张利国,代闻,龚海平.Android移动开发案例详解
[M].北京:人民邮电出版社,2010.
[6] 余志龙,陈昱勋,郑名杰.Android SDK开发范例大全
[M].王世江改编.北京:人民邮电出版社,2009.
[7] 张勇.Google Android开发技术[M].西安:西安电子科
技大学出版社,2011.
[8] 杨丰盛.Android技术内幕[M].北京:机械工业出版
社,2011.
[9] 杨文志.Google Android程序设计指南[M].北京:电子
工业出版社,2009.
[1O]邹天思.JavaScript程序设计[M].北京:人民邮电出版
社,2009.
[1 1]Bruce Ecke1.Thinking in Java[M].Prentice Hall,2006.
[12]Brian Keeton,Chuck Cavaness,Geof Friesen.Special E—
dition Using Java2[M].Que Publishing,2000.
[13]DiMarzia Jerome.Android:A Programmer's Guide[M].
McGraw—Hill,2008:85—120.
[14]Google Developers.Google Maps JavaScript API v3[EB/
OL].https://developers.google.com/maps/documenta—
tion/javaseript/reference?hl:zh—CN.2012-04-01.】
基于Android平台的GPS导航系统的设计与实现.pdf (346.16 KB, 下载次数: 0)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-5-4 09:05 , 耗时 0.096208 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表