资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
基于谷歌地图的Android导航应用设计一、引言在当今社会,手机己经成为人们日常生活中不可或缺的工具,以用户体验为核心诉求的智能手机,使手机 由单一的通信终端发展成为1L联网终端。越来越多的互联网应用被移植到智能手机中来,导航软件在智能 手机中的应用成为K研究热点之一。在H前大部分智能手机都提供GPS定位服务以及3G无线网络越来越 普及的双重驱动下,在Google地图中实现导航服务,是具有可行性的。本文提出并实现了一种基于Google Map Api的Android导航应用,能够给用户提供人性化和智能化的地 图导航服务。二、系统体系结构Google Maps javascnpt APIAndroid操作系统豆示器GPRS或者3GAI 块智能手机硬件平台图1系统体系结构三、UI界面设计Android应用程序的基本功能单元就是AcTIvity类中的一个对象,Activity主要功能为界面显示和事件处 理。在Activity中使用View和ViewGroup控件配XML样式来进行界面设计,使用事件处理进行人机交互, 主要的事件处理为按钮事件、触屏事件以及一些高级控件的事件监听。通过设置控件与事件处理就形成r UI界面。1、GPS定位信息的显示通过text View控件显示定位信息。在程序打开时就显示目前用户的具体位置和邮编,门牌号等相关信息, 若GPS定位不成功或者出错,则显示“无法获取目前地址”。2、用户输入导航起始地点通过设置EditView控件,用户能在改控件中输入自己需要导航的起始地点,通过设置名为“导航”的ButtON 控件对输入信息进行提交,当监听到Button按钮OnQick时则分析起始地址,若起始地址都能被解析,则载入导航地图,若又一个地址解析失败,则通过对话框控件Dialog提示用户“输入地址错误,请重新输 入”。3、导航界面设计在导航界面中设置WebView控件,WebView控件通过与javascript互相调用,把起始地址等信息传递给 服务器中的HTML导航网页。网页获得地址等信息后进行导航并通过WebView控件显示在应用程序导航 界面中。4、语音功能界面设计在导航界面中设置名为语音导航的Button控件,当用户按住该按钮时就为用户提供语音导航服务。下图为定位与输入地址信息UI界面:6上午8:21Anavigater 你目前的位置是 中国湖南省长沙市美首区芙眷中路6号邮政编码:410005起点长沙市芙蓉广场长沙市五一广场交通地图模式卫星地图模式图2定位与输入地址信息UI界面 四、GPS定位功能实现全球卫星定位系统(Gobal Fbsitioning System, GPS)是一个中距离圆型轨道卫星导航系统,它W以为地 球表面超98%的地区提供准确的定位、测速和高精度的时间标准服务,在各个领域都有广泛的应用。Android支持GPS服务的API.该服务可以用来获取当前设备的地理位:置,应用程序通过该API获得地理 位置,并可以定时请求更新当前设备的地理定位信息。该系统将用到GPSAPI中包儿个重要的功能类:LocATI on Manager,用于管理Android用户定位服务:Location Provider,提供多种定位方式供开发者选择;Criteria,是应用通过Location Provider中设置的属性来选择合适的定位提供者。获取用户当前位置的步骤如下:1、在AndroidManifeST.xml中声明相应的权限:v android: name= android.permission.ACXDESS_OOARSE_LOCATION!M, permission2、获取 LocationManager 对象:LocationManager location Manager =( LocationManager ) getSystemSERvice(Cont ext. LOCATI ON_SERVI CE):3、设置Criteria对象:Criteria criteria = newCriteria ():criteria.setAccuracy( Criteria.ACXURAOLFINE):criteria.setAltitudeRequired (false):criteria.setBearingRequired (false):criteria, set Cost Al lowed (false):criteria.setFbwerRequirement( Criteria. POWER_LOW);4、设置 Provider:String provider = locationManager.get Best Provider (criteria, true):Location location= locationManager.getLastKnownLocation (provider);五、导航功能实现在正式版本的Android SDK中,移除原有M5版本里面DJ DrivingDirection package.所以无法透过程序 来规划导航线路。因此导航功能的实现我们是通过载入web导航网页的方式实现的。Android提供了一个 名为WebView的控件来专门浏览网页。WebView控件是基于WebKit浏览器网页排版引擎的一个java接11,它能够完美支持htmL javascript css.有时我们可以把整个UI甚至数据处理都交给WebView配合PHP等服务器端程序,这样的Android应 用开发更为简单UI更为丰富。因此本系统的导航功能的主要工作就集中在编写Google Map Api javascript 版本的导航网页以及WebView与javascript的数据交互中。1、WebView的定义及设置:首先要在XML布局文件中定义WebView控件:然后在程序中装载这个控件,设置属性;最后通过loadUrl 方法实现网页的载入。WebView 常用的类有:WebSettings WebViewClient、WebChromeOient.WebSettings用来设置WebView的一些属性状态,如:/设置可以访问文件webSettings.setAllowFileAccess (true):/设置支持缩放webSettings.setBuiltlnZoomControls (true):WebViewQient专门辅助WebView处理各种通知、请求等事件类,通过WebView的setWebViewGient方 法来指定一个WebViewGient对象,如下:webView.setWebViewQient (newWebViewQient () public boolean shouldOverrideUrILoading (Web View view. String url) (viewdoadUrl (url);return true;)WebChromeOient类专门用来辅助WebView对话框、网站图标、网站Title、加载进度等。使用方法如下:webView. setWebChromeOient (newWebChromeOient ()(Override/该方法为处理javascript中的alert事件public boolean onJsAlert ( WebView view, String url, Stringmessage.JsResult result) (/ TODO Auto- generated method stubreturn super.onJsAlert (view, url, message, result););设置完WebView后主要工作就是Html网页的编写。2、编写Html网页实现线路规划:线路规划的前提是必须要指定起始地址以及出行方式,本系统用户是通过在Activity中输入地址和选择出 行方式来向系统提交信息。WebView必须从应用中获取信息,然后发送给Html,供javascript调用并实 现导航。在android应用端,定义一个类保存用户输入的起始地址的经纬度信息:/在javascript脚本中调用得到LatlngData对象public LatlngData getLatlngData()( return latlngData;/*定义一个latlngData类,保存经纬度信息,经纬度山Geocoder, get From Location NAME ()方法按照用 户输入地址解析而得到。*/class LatlngData( String startLatlng;String endLatlng;public LatlngData ()(this, start Latlng=,n;this.endLatlng =”;public String get St art Lat I ng() return startLatlng;public String getEndLatlng () return endLatlng;/通过LatlngDatalnterface ()方法将数据类绑定给javascript,这样javascript就能够获得用户 的数据了。public class DataJavaScriptl nterface(public LatlngData LatlngDatal nterface () (latlngData = getLatlngData ():return latlngData;)在Html网页中编写以卜代码获得数据,并通过格式转换使数据能够为线路规划所接受,代码如Evar latlngData = window.demo.LatlngDatalnterface ();/获取起点和终点位置的经纬度信息为String格式startLatlng = latlngData.getStartLatlng ();endLatlng = latlngData.getEndLatlng ():/把String格式经纬度转换为Float格式startLat = parse Float (startLatlng.substring(0,8);starting = parseFloat startLatlng.substring (10, 18):endLat = parseFloat (endLatlng.substring (0, 8):endLng = parseFloat (endLatlng.substring (10, 18):通过DirectionsService对象计算路线(使用各种交通方式)。此对象与Google Maps API DirectionsService进行通信,该服务将接收路线请求并传回计算结果。可以自 行处理这些路线结果,也可以使用DirectionsRenderer对象渲染这些结果:function calcRoute () (start = beginLatlng;end = endLatlng;var request = origin:start,destination:end,travelMode: google, maps.
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号