文档库

最新最全的文档下载
当前位置:文档库 > 基于Android移动平台和GPS应用服务研究

基于Android移动平台和GPS应用服务研究

基于Android移动平台和GPS应用服务研究

文章编号:1009-2552(2012)01-0082-04中图分类号:TN967.1文献标识码:A

基于Android移动平台和GPS应用服务研究

刘胜前,陈立定,任志刚

(华南理工大学自动化科学与工程学院,广州510640)

摘要:利用Android智能手机平台和GPS特性,结合Google Map,设计并实现了一个基于An-droid智能手机平台的个人移动地图的终端软件系统,并对整个系统的各个主要功能模块进行了详细的分析与研究。系统经过严格测试,可以稳定良好运行,记录数据准确,基本上满足手机用户的地图服务需求,具有广阔的推广应用前景。

关键词:Android平台;GPS定位;Google Map;智能手机

Research on application service based on Android

mobile platform and GPS

LIU Sheng-qian,CHEN Li-ding,REN Zhi-gang

(School of Automation Science&Engineering,South China University of Technology,Guangzhou510640,China)Abstract:This paper used Android smartphone platform and GPS properties,with Google Map,designed and implemented a personal mobile maps of terminal software systems based on Android smartphone platform,and carried the detailed analysis and research on each main function module of the whole system.The system runs stably and well,records data accurately,basically meets the demand of the map service of mobile phone user after rigorous testing,illustrates a good prospect of application and extension.

Key words:Android platform;GPS;Google Map;smartphone

0引言

移动3G网络时代,智能手机已经成为当今人们生活中主流的掌上设备。在智能手机领域中,基于Android操作系统的手机凭借其强大的智能性已经成为人们的最爱,其内置的GPS功能模块更是给人们的出行带来了极大的方便。目前大部分的位置地图服务都是基于GPS功能,基本上都是采用Web 网页或单机形式进行实现,极大地限制了在移动设备上的应用。如何开发出方便、实时、高效、个性的移动地图位置服务已经成为当今智能手机应用服务的热门领域。本文基于Android移动平台,利用内置GPS功能模块,结合Google Maps API,设计和实现了一个智能手机地图服务,使用户自由方便的获取移动实时地图服务功能,极大的方便了智能手机用户的使用。1Android平台,GPS介绍

1.1Android平台介绍

Android是Google于2007年11月宣布的基于Linux平台开源手机操作系统名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。Google重新设计了Java虚拟机和系统,使得An-droid的Java应用更接近于底层系统,效率更高;另外使用虚拟机技术使得Android的应用在被监控的情况下运行,安全性更高。Android包括移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍,具有平台标准化、用户可定制以及服务免费等特色。它是一个对第三方软件完全开放的平台,代码完全开源免费。Android的应用

收稿日期:2011-07-11

作者简介:刘胜前(1984-),男,硕士研究生,研究方向为网络化控制。

28

程序是用Java 语言开发的,其编程语言完全开源免费,基于此平台,对此系统进行开发设计[1]

1.2

GPS 介绍

GPS (Global Positioning System )即全球定位系统,又称全球卫星定位系统,由美国国防部研制,是一个中距离圆型轨道卫星导航系统,结合卫星及通讯发展的技术,利用导航卫星进行测时和测距。GPS 的基本定位原理是卫星不间断地发送自身的星历参数和时间信息,用户接收到这些信息后,经过计算求出接收机的三维位置,三维方向以及运动速度和时间信息。GPS 是一个无线电导航系统,可以给任何一个GPS 接收器提供精确的定位和授时服务。GPS 服务于1996年正式向公众免费开放,支持世界上的任何地方,支持无数的用户接入服务。今天的智能手机大多都配备了全功能的GPS 接收机及配套应用

[2]

2系统总体设计

本应用软件总体功能框图如图1所示。系统主

要实现五大模块:自我定位、浏览地图、地址查询、路径跟踪、

手机定位。应用程序首次启用成功后,首次运行成功后,程序会将当前使用者的位置实时标注在地图界面上,实现个人位置的标定,在用户移动的过程中,位置标注界面会定时进行刷新当前位置,显示当前用户的位置,其他功能模块可以设成菜单形式,用户选择相应的菜单实现浏览地图、地址查询、路径跟踪、手机定位等功能。在浏览地图的过程当中,还可以实现对地图大小的任意缩放

基于Android移动平台和GPS应用服务研究

图1系统总体设计

3各个模块详细设计

在应用程序开发过程中,要用到一系列用于在

Google Map 上显示、控制、层叠和定位信息的功能类。以下是开发过程中用到的最重要的几个类

[3]

(1)MapController :控制地图移动,伸缩,以某个GPS 坐标为中心,控制MapView 中的View 组件,管理Overlay ,提供View 的基本功能。使用多种地图模式(地图模式(某些城市可实时对交通状况进行更新),

卫星模式,街景模式)来查看Google Map 。(2)MapView :Mapview 是用来显示地图的View 组件,它派生android.view.ViewGroup 。当MapView 获得焦点,可以控制地图的移动和缩放。MapView 只能被MapActivity 来创建,这是因为mapview 需要通过后台的线程来连接网络或者文件系统,而这些线程要由mapActivity 来管理。

(3)MapActivity :管理Activity 的生命周期,为mapview 建立及取消对map service 的连接。MapAc-tivity 是一个抽象类,任何想要显示MapView 的ac-tivity 都需要派生自MapActivity 。并且在其派生类的onCreate ()中,都要创建一个MapView 实例,可以通过MapViewconstructor (然后添加到View 中View-Group.addView (View ))或者通过Layout XML 来创建。

(4)Overlay :Overlay 是覆盖到MapView 的最上层,可以扩展其ondraw 接口,自定义在MapView 中显示一些自己的东西。MapView 通过MapView.ge-tOverlays ()对Overlay 进行管理。

(5)LocationProvider :该类是定位提供者的抽象类,定位提供者具备周期性报告设备地理位置的功能。

(6)LocationManager :该类提供访问定位服务的功能,提供获取最佳定位提供者的一系列功能。

(7)LocationLister :提供定位信息发生改变时的回调功能。

(8)Criteria :该类使得应用能够通过在Loca-tionProvider 中设置相应的属性来选择合适的定位提供者。

(9)Geocoder :用于处理地理编码和反向地理编码的类。地理编码是将地址或其他描述转变成精度和纬度,反向地理编码则是将经度和纬度转变成地址或描述语言。

地图的基本界面组件为“Map View ”,在使用

Google Map 服务时,必须首先通过Google Map 网站,通过注册“证书”,取得属于自己的Google 地图服务“开发密钥”(API Key ),并在AndroidManifest.xml 注册相应的活动和权限,然后进行一系列的地图地图功能开发。3.1

自我定位功能实现

自我定位功能模块就是将使用者的当前地理位置信息显示和标注在地图界面。在界面布局文件中,

设置一个TextView 用于显示当前的地理位置信息,主界面为View 地图界面,在界面底端设计两个

38—

Button按键实现对地图各个模式的切换。

用Android提供的地理位置服务功能API去收集当前的位置。这里主要用到LocationManager,Lo-cationProvider,Location,Criteria等功能类进行定位实现。同时通过继承OverlayItem类对当前所在位置进行地图标注显示。程序的部分关键代码如下:LocationManager

locationManager=(LocationManager)getSystemService (Context.LOCATION_SERVICE);//取得定位服务对象实例

String

provider=locationManager.getBestProvider(criteria,true);//取得效果最好的criteria

Location

location=locationManager.getLastKnownLocation(pro-vider);//得到地理坐标相关信息

updateLocation(location);//更新新坐标

locationManager.requestLocationUpdates(provier,1000,0,locationListener);//注册一个周期性更新,每1000ms更新一次,locationListener用来设置监听定位信息的改变

//添加Overlay,用于显示标注信息

MyLocationOverlay myLocationOverlay=new MyLocationOverlay();

List<Overlay>list=myMapView.getOverlays ();

list.add(myLocationOverlay);

3.2浏览地图功能实现

用户浏览地图模式时,地图可以以不同的形式来显示出来,如街景模式,交通模式,卫星模式等,在程序中通过MapView类对象中方法setSatellite (boolean)setTraffic(boolean),setStreetView(boole-an)方法实现各个地图模式。核心代码如下

myMapView.setStreetView(true);

myMapView.setTraffic(true);

myMapView.setSatellite(true);

3.3地址搜索功能实现

在用户进行地址搜索时,当用户在搜索框键入目标地址时,程序开始读取数据并开始进行地址解析,然后将目标地址用Overlay在地图上标注出来。在此功能设计过程中,主要用到了处理地理编码的Geocoder类,对地址进行正向地理编码处理[4]。部分关键代码实现如下:

Geocoder geocoder=new Geocoder(getApplica-tionContext,Locale.getDefault);//实例化Geocoder 对象

List<Address>locations=null;//建立位置列表

locations=geocoder.getFromLocationName(ad-dress,10);//获得位置

3.4路径跟踪功能实现

当用户点击路径跟踪选项功能后,系统会将用户以往的行踪在地图上绘制出来,方便用户回顾以前所走过的路线。

在程序中,创建一个PositionChanging函数进行位置管理和位置监听,并将每次位置变化的经纬度信息都记录保存到SQLite数据库表中,SQLite是Android系统中自带的一个轻量型数据库,可以方便永久储存数据信息。接着通过继承Overlay<Over-layIte m>类,实现一个新的类MyOverlay,对数据库中的经纬度数据进行读取,并通过函数toPixels将GPS获得的GePoint点转化成手机屏幕上相应的位置坐标以实现对标注图层的管理,最后重写draw函数实现对坐标数据依次进行绘图实现[5]。

3.5手机跟踪功能实现

当用户的手机不小心丢失了以后,可以用另外一部手机通过向目标手机发送特定格式短信,自动启动丢失手机后台服务GPS程序,然后丢失手机通过短信回执,将其当前的地理位置信息发送给请求手机,从而实现手机跟踪服务。

在程序中,需要建立一个意图(Intent)接收器SMS_Intent,活动类型为“android.provider.Telepho-ny.SMS_RECEIVED”,并在AndroidManifest.xml文件中进行声明。通过编写一个意图接收类Location-Receiver实现对短信息的监听,该类继承自广播接收类BroadcastReceiver类。在复写函数onReceive 函数中,首先判断监听到的Intent是否为需要的SMS_Intent,如果满足条件,则将Intent对象进行数据封装,然后通过SmsMessage类对象函数create-FromPdu,getDisplayMessageBody(),getDisplayOrigi-natingAddress()对短信内容进行解析,如果接收到短信息内容包含LOCATION_MESSAGE字段,则启动位置服务,并将位置信息自动回执给请求手机。3.6手机测试结果

整个功能模块实现后,运行程序,选取几个功能画面如图2-4所示,结果表明,整体设计满足要求,运行良好。

48

图2个人位置定位画面图3

基于Android移动平台和GPS应用服务研究

浏览地图显示界面

图4路径功能显示界面

4结束语

本文利用当前最流行的Android智能手机平台和GPS定位服务实现了智能手机应用地图的设计与实现,完成了移动手机自我定位、浏览地图、地址查询、路径跟踪、手机定位功能的实现,紧扣目前主流技术,有极其重要的利用性和其他开发人员再次开发的参考价值性。未来的工作重点是在此应用功能上做进一步功能扩展,结合Google Map实现更多的应用服务,实现更个性化的应用设置。

参考文献:

[1]农丽萍,王力虎,黄一平.Android在嵌入式车载导航系统的应用研究[J].计算机工程与设计,2010,31(11):2473-2476.[2]Whipple J,Arensman W,Boler M S.A Public Safety Application of Android Operating System[J].Systems,Man and Cybernetics,2009.SMC2009.IEEE International Conference on.11-14Oct.2009:2059-2061.

[3]源代码网址[Z].

[4]郭宏志.Android应用开发详解[M].北京:电子工业出版社,2010.

[5]靳岩,姚尚朗.Google Android开发入门与实践[M].北京:人民邮电出版社,2010.责任编辑:

櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀

刘新影

(上接第81页)

4结束语

ASTN白背光负显技术将进一步优化收音机的显示效果,提升汽车品质,在一定时期内将得到更广泛的应用。并且该技术在持续研发中不停地提升显示效果,ASTN白背光负显技术的使用范围和领域也将更为丰富。因此,本文将对该技术进行不断地研究分析,寻找最佳应用方式,并且建立有效的测试评价体系,提升和确保白背光产品的效果及品质。参考文献:

[1]田民波,叶锋.平板显示器技术发展[M].科学出版社,2010(4).

[2]Individual specification of TEP[Z].Polatechno Co.,LTD.

[3]王钟明,张盛兵,卢国建.一种LCD显示控制器的设计与实现[J].科学技术与工程,2006(10).

[4]黄子强.液晶显示原理[M].2版.国防工业出版社,2008.[5]TN型液晶显示器原理[Z/OL].电子技术资料网站.

[6]LAH_1K0_947_Beleuchtungslastenheft_VW_V15_V.Volkswagen AG[Z].

[7]李方.车载多媒体信息系统的设计与实现[D].武汉理工大学.

责任编辑:么丽苹

58

基于Android移动平台和GPS应用服务研究