基于Google Map Api的Android导航应用

最新更新时间:2012-04-30来源: OFweek 关键字:Google  Map  Api  Android  导航 手机看文章 扫描二维码
随时随地手机看文章

  一、引言

  在当今社会,手机已经成为人们日常生活中不可或缺的工具,以用户体验为核心诉求的智能手机,使手机由单一的通信终端发展成为互联网终端。越来越多的互联网应用被移植到智能手机中来,导航软件在智能手机中的应用成为了研究热点之一。在目前大部分智能手机都提供GPS 定位服务以及3G 无线网络越来越普及的双重驱动下,在Google 地图中实现导航服务,是具有可行性的。

  本文提出并实现了一种基于Google Map Api 的Android 导航应用,能够给用户提供人性化和智能化的地图导航服务。

  二、系统体系结构

  

  图1 系统体系结构

  三、UI 界面设计

  Android 应用程序的基本功能单元就是AcTIvity 类中的一个对象,Activity 主要功能为界面显示和事件处理。在Activity 中使用View和ViewGroup 控件配XML 样式来进行界面设计,使用事件处理进行人机交互,主要的事件处理为按钮事件、触屏事件以及一些高级控件的事件监听。通过设置控件与事件处理就形成了UI 界面。

  1、GPS 定位信息的显示

  通过textView控件显示定位信息。在程序打开时就显示目前用户的具体位置和邮编,门牌号等相关信息,若GPS 定位不成功或者出错,则显示“无法获取目前地址”。

  2、用户输入导航起始地点

  通过设置EditView控件,用户能在改控件中输入自己需要导航的起始地点,通过设置名为“导航”的ButtON 控件对输入信息进行提交,当监听到Button 按钮OnClick 时则分析起始地址,若起始地址都能被解析,则载入导航地图,若又一个地址解析失败,则通过对话框控件Dialog 提示用户“输入地址错误,请重新输入”。

  3、导航界面设计

  在导航界面中设置WebView 控件,WebView 控件通过与javascript 互相调用,把起始地址等信息传递给服务器中的HTML 导航网页。网页获得地址等信息后进行导航并通过WebView控件显示在应用程序导航界面中。

  4、语音功能界面设计

  在导航界面中设置名为语音导航的Button 控件,当用户按住该按钮时就为用户提供语音导航服务。

  下图为定位与输入地址信息UI 界面:

 

  

  图2 定位与输入地址信息UI 界面

  四、GPS 定位功能实现

  全球卫星定位系统(Global Positioning System,GPS)是一个中距离圆型轨道卫星导航系统,它可以为地球表面超98%的地区提供准确的定位、测速和高精度的时间标准服务,在各个领域都有广泛的应用。

  Android 支持GPS 服务的API.该服务可以用来获取当前设备的地理位置,应用程序通过该API 获得地理位置,并可以定时请求更新当前设备的地理定位信息。该系统将用到GPS API 中包几个重要的功能类:LocATIonManager,用于管理Android 用户定位服务;LocationProvider,提供多种定位方式供开发者选择;Criteria,是应用通过LocationProvider 中设置的属性来选择合适的定位提供者。

  获取用户当前位置的步骤如下:

  1、在AndroidManifeST.xml 中声明相应的权限:

  < android:name="“android.permission.ACCESS_COARSE_LOCATION”" permission>

  2、获取LocationManager 对象:

  LocationManager locationManager =(LocationManager)getSystemSERvice (Context.LOCATION_SERVICE);

  3、设置Criteria 对象:

  Criteria criteria = newCriteria();

  criteria.setAccuracy(Criteria.ACCURACY_FINE);

  criteria.setAltitudeRequired(false);

  criteria.setBearingRequired(false);

  criteria.setCostAllowed(false);

  criteria.setPowerRequirement(Criteria.POWER_LOW);

  4、设置Provider:

  String provider = locationManager.getBestProvider(criteria,true);

  Location location= locationManager.getLastKnownLocation(provider);

  五、导航功能实现

  在正式版本的Android SDK 中,移除了原有M5 版本里面的DrivingDirection package,所以无法透过程序来规划导航线路。因此导航功能的实现我们是通过载入web 导航网页的方式实现的。Android 提供了一个名为WebView的控件来专门浏览网页。

  WebView控件是基于WebKit 浏览器网页排版引擎的一个java接口,它能够完美支持html、javascript、css.有时我们可以把整个UI 甚至数据处理都交给WebView,配合PHP 等服务器端程序,这样的Android 应用开发更为简单UI 更为丰富。因此本系统的导航功能的主要工作就集中在编写Google Map Api javascript 版本的导航网页以及WebView与javascript 的数据交互中。

  1、WebView 的定义及设置:

  首先要在XML 布局文件中定义WebView控件;然后在程序中装载这个控件,设置属性;最后通过loadUrl 方法实现网页的载入。

  WebView 常用的类有:WebSettings、WebViewClient、WebChromeClient.

  WebSettings 用来设置WebView的一些属性状态,如:

  // 设置可以访问文件

  webSettings.setAllowFileAccess(true);

  // 设置支持缩放

  webSettings.setBuiltInZoomControls(true);

  WebViewClient 专门辅助WebView处理各种通知、请求等事件类,通过WebView 的setWebViewClient 方法来指定一个WebViewClient 对象,如下:

  webView.setWebViewClient(newWebViewClient()

  {

  public boolean shouldOverrideUrlLoading(WebViewview,String url){

  view.loadUrl(url);

  return true;

  }

  })

  WebChromeClient 类专门用来辅助WebView对话框、网站图标、网站Title、加载进度等。使用方法如下:

  webView.setWebChromeClient(newWebChromeClient()

  {

  @Override

  // 该方法为处理javascript 中的alert 事件

  public boolean onJsAlert (WebView view,String url,Stringmessage,

  JsResult result){

  // TODO Auto- generated method stub

  return super.onJsAlert(view,url,message,result);

  });

  设置完WebView后主要工作就是Html 网页的编写。

  2、编写Html 网页实现线路规划:

  线路规划的前提是必须要指定起始地址以及出行方式,本系统用户是通过在Activity 中输入地址和选择出行方式来向系统提交信息。WebView 必须从应用中获取信息,然后发送给Html,供javascript 调用并实现导航。

  在android 应用端,定义一个类保存用户输入的起始地址的经纬度信息:

  // 在javascript 脚本中调用得到LatlngData 对象

  public LatlngData getLatlngData()

  { return latlngData;

  }

  /* 定义一个latlngData 类,保存经纬度信息,经纬度由Geocoder.getFromLocationNAME()方法按照用户输入地址解析而得到。*/

  class LatlngData

  { String startLatlng;

  String endLatlng;

  public LatlngData()

  {

  this.startLatlng=“”;

  this.endLatlng =“”;

  }

  public String getStartLatlng()

  {

  return startLatlng;

  }

  public String getEndLatlng()

  {

  return endLatlng;

  }

  }

  // 通过LatlngDataInterface () 方法将数据类绑定给javascript,这样javascript 就能够获// 得了用户的数据了。

  public class DataJavaScriptInterface{

  public LatlngData LatlngDataInterface(){

  latlngData = getLatlngData();

  return latlngData;

  }

  在Html 网页中编写以下代码获得数据,并通过格式转换使数据能够为线路规划所接受,代码如下:

  var latlngData = window.demo.LatlngDataInterface();

  // 获取起点和终点位置的经纬度信息为String 格式

  startLatlng = latlngData.getStartLatlng();

  endLatlng = latlngData.getEndLatlng();

  // 把String 格式经纬度转换为Float 格式

  startLat = parseFloat(startLatlng.substring(0,8));

  startLng = parseFloat(startLatlng.substring(10,18));

  endLat = parseFloat(endLatlng.substring(0,8));

  endLng = parseFloat(endLatlng.substring(10,18));

  通过DirectionsService 对象计算路线(使用各种交通方式)。

  此对象与Google Maps API Directions Service 进行通信,该服务将接收路线请求并传回计算结果。可以自行处理这些路线结果,也可以使用DirectionsRenderer 对象渲染这些结果:

  function calcRoute(){

  start = beginLatlng;

  end = endLatlng;

  var request = {

  origin:start,

  destination:end,

  travelMode: google.maps.DirectionsTravelMode.DRIVING

  };

  directionsService.route(request,function(response,status){

  if(status == google.maps.DirectionsStatus.OK){

  var warnings = document.getElementById(“warnings_panel”);

  warnings.innerHTML = “” + response.routes [0].warnings + “”;

  directionsDisplay.setDirections(response);

  showSteps(response);

  }

  });

  }

  通过上述的操作我们基本上实现了线路规划,在此基础上我们能够添加更多的功能,如语音导航、路况提示、周边配套设施提示等,使用户获得更好的用户体验。最终效果如下图所示:

 

  

  图3 最终效果图

 

  六、结束语

  智能手机导航应用无疑将会有广阔的市场前景,能够为用户提供更多有用信息的导航软件将是未来该应用方向的必然趋势,Google Maps 作为最早的网上电子地图服务,其强大的功能和开放的API ,使得我们能够在其基础上二次开发出很好的应用。具有很大的商用价值。该系统还存在网页载入速度较慢、语音提示功能等问题,还有待进一步研究和开发。

关键字:Google  Map  Api  Android  导航 编辑:探路者 引用地址:基于Google Map Api的Android导航应用

上一篇:微处理器控制智能电池充电器的设计方案
下一篇:目前选择四核处理器移动平台并不是明智之举

推荐阅读最新更新时间:2023-10-18 16:42

未来导航仪会这样?开车如同玩赛车游戏
未来导航仪会这样?开车如同玩赛车游戏 未来导航仪会这样?开车如同玩赛车游戏     你有没有想象过,你以后开车可能会有像玩赛车游戏那样的感觉?今年5月初,日本著名电子生产企业先锋电子发布了一个车载导航仪“CYBERNAVI”的视频宣传广告,并号称是世界首款支持扩增显示的车载导航设备。这个车载导航仪能够给人一种玩赛车游戏的感觉,而且即将在7月下旬首先在日本上市。     与普通的导航产品不同,这款导航除了拥有传统导航的显示屏以外,还配备一套“抬头显示”投影系统。从图片中可以看到,画面投射在驾驶员前方约3米处,显尺寸为示90cm×30cm(约37英寸)的彩色影像,像素为720×260。两套设备分别安装,并且通过
[汽车电子]
中国内地可携式导航装置市场现状
  中国内地可携式导航装置(PND)市场呈现百家争鸣的混战状态,没有1家厂商市占率突破1成,尽管国际大厂Garmin及宇达电通(Mio)顺利跻身前5大之列,但部分中国内地本土品牌仍有一定优势,集中度明显偏低,市场生态迥异于其它地区,使得部分有意挥军中国内地市场的国际大厂仍持续观望中。   PND厂商表示,中国内地PND市场起步才2~3年,加上幅员广阔,且限制必须与本土图资业者合作,目前共有上百个品牌推出产品,尚无明显的领先者,其中国际大厂以Mio、Garmin,本土品牌则以新科及城际通较为领先,但市占率都仅有5~10%,与其它市场由少数国际大厂瓜分天下的生态截然不同。   目前导航3雄中Garmin及Mio布局中国内地
[焦点新闻]
中国内地可携式<font color='red'>导航</font>装置市场现状
苹果GOOGLE同拍700MHz频谱,究竟“鹿死谁手”我们拭目以待!
苹果可能将竞拍FCC即将开放的700MHz频段,以便让苹果iPhone用户能够更快地下载视频和音乐。 根据BusinessWeek网站的一则报道,有两个消息来源称苹果已经审核了参加竞拍的可能性。但是,700MHz频段最早也要到2009年才会开始向无线用户开放。 之前曾用于电视广播的700MHz频谱,被看作是无线服务提供商的上上之选,因为这一频率下的信号可以轻松穿透墙壁和建筑物,而且更容易构建面向手机用户的服务。 如果此事属实,那么苹果的举措将让Google主席Eric Schmidt陷入一个非常尴尬的境地。Schmidt也是苹果董事会成员之一。据称Google也在考虑推广一款可能会和苹果iPhone竞争的手机。S
[焦点新闻]
Android支持4K 多余还是必须的?
    随着推出的4K产品越来越多,很多人不再说它是毫无用处的,作为1080P的继任者,4K视屏许诺要改变我们的视觉体验,从电视、电影、内容上将带给我们前所未有的水平细节, 甚至Note 3都支持4K拍摄了,但是Android支持4K,是真有用还是纯噱头?毫无疑问,4K视频是未来,而它能被公司放到第一位,归结于市场发展的促进。 4K不可避免 公司都相信独特的科技特性会为他们赢得潜在买家,4K也被包括在其中,之前GS4融合了无数个传感器和App,诺基亚1020内置了42M摄像头,最新的Note 3则直接支持录制4K视频了。到现在为止,分辨率仍然收获了一堆注意力,显示屏也一年比一年明亮,高清输出也一直是个亮点。不过HD现在可不如过去,
[手机便携]
谷歌因Android定位追踪行为遭用户起诉
    北京时间5月3日上午消息,两名美国密歇根州妇女因Android系统的定位追踪技术向法院起诉谷歌。   这两名原告分别是朱莉·布朗(Julie Brown)和凯拉·莫拉斯基(Kayla Molaski),她们都是HTC Inspire 4G智能手机的用户,并且都认为谷歌搜集地理定位信息的行为“是暗中进行的,而且违反了法律”。   起诉书显示:“谷歌的服务条款并未透露对用户的全面追踪,也没有披露将使用UDID与每款特定设备绑定。谷歌只是表示,在通过Android操作系统获取手机用户定位信息前,会先征求用户同意。布朗、莫拉斯基和其他用户并未授权全面追踪行为。”   上月有两名研究人员披露了苹果iPhone的地理定位信息
[手机便携]
谷歌高管表示Android的开发之路才走到了1/3处
    Android系统自2007年推出以后发展地非常迅速,现在它已经成为了全球使用最广的智能手机OS。今年刚推出的Android 4.1系统可以说是谷歌到目前为止最精良的一个移动OS。虽然,Android在市场上表现不俗,不过谷歌Android用户体验部门的高级主管却表示他们仍然还有很长的一段要走,在他看来,Android的发展之路才走了1/3。 Android 4.1发布于今年6月,该系统在各方面进行了升级,其中包括语音识别功能、搜索功能、Google Now以及一系列可以帮助Android运行更加顺畅的调整。
[手机便携]
谷歌将关闭智能家居操作系统的Android Things
据外媒消息,谷歌即将关闭Android Things,这是专为智能家居设备设计的简化版Android。该操作系统从未真正起步,因此损失不算太大,该系统也只是谷歌许多将要关闭的项目中的其中之一。   这一智能家居项目于2015年以Brillo的名称开始,旨在提供“物联网的基础操作系统”。 2016年,谷歌又对Brillo进行了改造,并重新启动了Android Things计划,该计划同样可以在连接的扬声器、安全摄像头和路由器等产品上运行。通过基于Android的开发,该操作系统被开发人员所熟悉并且易于上手。   根据谷歌的计划,该系统将于2022年1月完全关闭。2018年,一些使用基础操作系统的最初的智能扬声器和智能显示器
[手机便携]
微软高层揭示嵌入式应用三大方向
  在中国深圳会展中心举办的IIC-China 2008展览会上,微软Windows Embedded事业部总经理Kevin Dallas发表了题为“推动智能、连接性和服务导向设备的发展”的主题演讲,他指出:“未来的嵌入式应用将朝着更智能、更强互联性和面向服务的方向发展,例如,今天的智能手机集成了非常多的功能,对很多用户来说其中的大多数功能很可能一辈子都不会去用它,这从某种意义上讲就是一种浪费。但未来智能手机的功能可以根据特定用户不同时期的需要随时定制和更改,不必再为了某种新出现的应用而去购买新的手机。”   今天的客户正针对不同的产品提出更多不同的要求。以PND产品为例,客户希望它不只是一个导航的设备,他们希望它不仅能带最
[焦点新闻]
小广播
最新电源管理文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved