<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 基于google地圖的Android系統(tǒng)導航應用設(shè)計

          基于google地圖的Android系統(tǒng)導航應用設(shè)計

          作者: 時間:2013-10-21 來源:網(wǎng)絡 收藏


          四、GPS 定位功能實現(xiàn)


          全球衛(wèi)星定位系統(tǒng)(Global Positioning System,GPS)是一個中距離圓型軌道衛(wèi)星導航系統(tǒng),它可以為地球表面超98%的地區(qū)提供準確的定位、測速和高精度的時間標準服務,在各個領(lǐng)域都有廣泛的應用。

          Android 支持GPS 服務的API.該服務可以用來獲取當前設(shè)備的地理位置,應用程序通過該API 獲得地理位置,并可以定時請求更新當前設(shè)備的地理定位信息。該系統(tǒng)將用到GPS API 中包幾個重要的功能類:

          LocATIonManager,用于管理Android 用戶定位服務;LocationProvider,提供多種定位方式供開發(fā)者選擇;Criteria,是應用通過LocationProvider 中設(shè)置的屬性來選擇合適的定位提供者。

          獲取用戶當前位置的步驟如下:
          1、在AndroidManifeST.xml 中聲明相應的權(quán)限:
          android:name="“android.permission.ACCESS_COARSE_LOCATION”" permission>
          2、獲取LocationManager 對象:
          LocationManager locationManager =(LocationManager)getSystemSERvice (Context.LOCATION_SERVICE);
          3、設(shè)置Criteria 對象:
          Criteria criteria = newCriteria();
          criteria.setAccuracy(Criteria.ACCURACY_FINE);
          criteria.setAltitudeRequired(false);
          criteria.setBearingRequired(false);
          criteria.setCostAllowed(false);
          criteria.setPowerRequirement(Criteria.POWER_LOW);
          4、設(shè)置Provider:
          String provider = locationManager.getBestProvider(criteria,true);
          Location location= locationManager.getLastKnownLocation(provider);

          五、導航功能實現(xiàn)

          在正式版本的Android SDK 中,移除了原有M5 版本里面的DrivingDirection package,所以無法透過程序來規(guī)劃導航線路。因此導航功能的實現(xiàn)我們是通過載入web 導航網(wǎng)頁的方式實現(xiàn)的。Android 提供了一個名為WebView的控件來專門瀏覽網(wǎng)頁。

          WebView控件是基于WebKit 瀏覽器網(wǎng)頁排版引擎的一個java接口,它能夠完美支持html、javascript、css.有時我們可以把整個UI 甚至數(shù)據(jù)處理都交給WebView,配合PHP 等服務器端程序,這樣的Android 應用開發(fā)更為簡單UI 更為豐富。因此本系統(tǒng)的導航功能的主要工作就集中在編寫 Map Api javascript 版本的導航網(wǎng)頁以及WebView與javascript 的數(shù)據(jù)交互中。

          1、WebView 的定義及設(shè)置:

          首先要在XML 布局文件中定義WebView控件;然后在程序中裝載這個控件,設(shè)置屬性;最后通過loadUrl 方法實現(xiàn)網(wǎng)頁的載入。

          WebView 常用的類有:WebSettings、WebViewClient、WebChromeClient.
          WebSettings 用來設(shè)置WebView的一些屬性狀態(tài),如:
          // 設(shè)置可以訪問文件
          webSettings.setAllowFileAccess(true);
          // 設(shè)置支持縮放
          webSettings.setBuiltInZoomControls(true);

          WebViewClient 專門輔助WebView處理各種通知、請求等事件類,通過WebView 的setWebViewClient 方法來指定一個WebViewClient 對象,如下:
          webView.setWebViewClient(newWebViewClient()
          {
          public boolean shouldOverrideUrlLoading(WebViewview,String url){
          view.loadUrl(url);
          return true;
          }
          })

          WebChromeClient 類專門用來輔助WebView對話框、網(wǎng)站圖標、網(wǎng)站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);
          });
          設(shè)置完WebView后主要工作就是Html 網(wǎng)頁的編寫。

          2、編寫Html 網(wǎng)頁實現(xiàn)線路規(guī)劃:

          線路規(guī)劃的前提是必須要指定起始地址以及出行方式,本系統(tǒng)用戶是通過在Activity 中輸入地址和選擇出行方式來向系統(tǒng)提交信息。WebView 必須從應用中獲取信息,然后發(fā)送給Html,供javascript 調(diào)用并實現(xiàn)導航。
          在android 應用端,定義一個類保存用戶輸入的起始地址的經(jīng)緯度信息:

          // 在javascript 腳本中調(diào)用得到LatlngData 對象
          public LatlngData getLatlngData()
          { return latlngData;
          }
          /* 定義一個latlngData 類,保存經(jīng)緯度信息,經(jīng)緯度由Geocoder.getFromLocationNAME()方法按照用戶輸入地址解析而得到。*/


          關(guān)鍵詞: 智能手機 Google Maps

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();