基于android的智能導航系統(tǒng)的設計與實現(xiàn)
《基于android的智能導航系統(tǒng)的設計與實現(xiàn)》由會員分享,可在線閱讀,更多相關《基于android的智能導航系統(tǒng)的設計與實現(xiàn)(31頁珍藏版)》請在裝配圖網(wǎng)上搜索。
I論文題目 基于 Android 的驢友導航系統(tǒng)設計與實現(xiàn)專 業(yè) 年 級 學 號 姓 名 指導老師 目 錄1 緒論 ....................................................................................................................................11.1 課題背景 ..................................................................................................................1II1.2 課題內(nèi)容 ..................................................................................................................11.3 課題目的及其意義 ..................................................................................................22 系統(tǒng)開發(fā)環(huán)境及相關技術 ................................................................................................22.1 Android 開發(fā)介紹與環(huán)境搭建 ................................................................................22.2 JSON 簡介 ................................................................................................................32.3 Struts2 框架簡介與環(huán)境搭建 ..................................................................................32.4 Baidu Maps API 簡介 ...............................................................................................43 系統(tǒng)分析 ............................................................................................................................43.1 研究目標 ..................................................................................................................43.2 需求分析 ..................................................................................................................43.3 性能分析 ..................................................................................................................54 系統(tǒng)設計 ............................................................................................................................54.1 用戶界面設計 ..........................................................................................................54.2 數(shù)據(jù)庫設計 ..............................................................................................................64.3 程序模塊設計 ..........................................................................................................85 系統(tǒng)功能模塊設計 ............................................................................................................95.1 文件結構與用途 ......................................................................................................95.2 后臺定位服務 ........................................................................................................115.3 MapApplication.java 類 ..........................................................................................135.4 登錄模塊 ................................................................................................................155.5 首頁模塊 ................................................................................................................155.6 導航模塊 ................................................................................................................205.7 周邊信息查詢模塊 ................................................................................................215.8 個人資料模塊 ........................................................................................................236 系統(tǒng)測試 ..........................................................................................................................257 總結 ..................................................................................................................................26參考文獻 ..............................................................................................................................27致 謝 ..................................................................................................................................28基于 Android 的驢友導航系統(tǒng)設計與實現(xiàn)1基于 Android 的智能導游系統(tǒng)的設計與實現(xiàn)摘 要 :本文首先分析討論 Android 手機軟件開發(fā)主要技術,以及國內(nèi)景區(qū)導游系統(tǒng)與智能導游的現(xiàn)狀。然后講述了基于百度地圖 Android SDK 以及定位 SDK技術所設計的 Android 平臺智能導游系統(tǒng)的實現(xiàn)。該系統(tǒng)設計實現(xiàn)了后臺定位、景點導航、景點信息瀏覽與下載、周邊查詢等實用功能,具有良好的通用性與靈活性。關鍵字:Android;智能導游;導航軟件;移動開發(fā);百度地圖1 緒論1.1 課題背景中國工業(yè)和信息部最新公布數(shù)據(jù)表明,中國智能手機的市場增長率不斷攀升,而且,隨著移動 3G 和 Wifi 熱點的不斷覆蓋,用戶對手機的互動娛樂體驗也提出了更高要求,各種應用軟件開始進入,手機日漸成為互動娛樂的焦點。有關資料顯示,我國的旅游業(yè)發(fā)展實力巨大。首先,是旅游收入增長迅速:2013 年春節(jié)黃金周全國接待游客達到 2.03 億人次,實現(xiàn)旅游收入 1170.6 億元人民幣,同比增長達到 15.1%和 15.4%[1];其次,固定資產(chǎn)投入力度的不斷加大:2009 年 12 月, 《關于加快發(fā)展旅游業(yè)意見》首次提出“中國旅游日”的概念,旅游業(yè)已經(jīng)出現(xiàn)在了中國國家戰(zhàn)略性產(chǎn)業(yè)中。然而,國內(nèi)旅游業(yè)的迅猛發(fā)展使得傳統(tǒng)的人工導游方式不能滿足新時代用戶的多元化需求。長期以來,游客在景點旅游時只能走馬觀花,對景點的多媒體信息了解甚少,就本人經(jīng)驗來說,對于外來游客來說更會由于語言的障礙而使得游覽質(zhì)量下降!于是,基于上述,手機終端的智能導游應用便應運而生。1.2 課題內(nèi)容本課題結合現(xiàn)代景區(qū)的相關特性和用戶需求,使用 JAVA 語言,應用百度地圖、百度定位(GPS+基站) 、JSON 數(shù)據(jù)交換和無線通訊等技術,開發(fā)一個基2于 Android 的 C/S 式智能導航軟件系統(tǒng)。這軟件使得用戶可以利用無線網(wǎng)絡以及手機的便捷性無時無刻地享受到景點信息查詢、自身位置查詢、周邊查詢、導航等功能所帶來的暢快旅游體驗。1.3 課題目的及其意義本課題的主要目的是將 Javaweb 后臺服務端、百度地圖、定位導航技術與景區(qū)導游相結合,從而實現(xiàn)景區(qū)導游系統(tǒng)的真正智能化。智能導游系統(tǒng)可以儲存大量的景區(qū)景點信息,不僅可以廣泛傳播,而且科學環(huán)保、方便快捷。此外,系統(tǒng)還提供了自定位、導航的實用功能,讓用戶可以徹底拋棄紙質(zhì)地圖,減少路癡的認路障礙。這不僅能直接為游客帶來更暢快的旅游體驗,同時還完善了景區(qū)的旅游管理體制。2 系統(tǒng)開發(fā)環(huán)境及相關技術2.1 Android 開發(fā)介紹與環(huán)境搭建Android 是 Google 公司開發(fā)的基于 Linux 內(nèi)核的開源操作系統(tǒng)。它包括:操作系統(tǒng)、用戶界面和應用程序,而且不存在任何以往阻礙移動產(chǎn)業(yè)創(chuàng)新的專有權障礙 [2]。Android 系統(tǒng)提供了四大基本組件,包括:Activity、Contentprovide 、 Service、Intentreceiver,每個組件都是一個視圖(view) 。但上述四大組件對于一個 Android 應用程序來說,卻并不是必須的,可能只需要其中的幾種酒可以滿足設計需求。Manifext.xml 配置文件時 Android應用程序不可或缺的一個 XML 配置文件,其中定義了程序所用到的組件、組件功能以及一些必要條件和權限。Android 的上層應用程序一般是由 java 語言開發(fā),所以首先應該有由 SUN公司提供的 Java SDK(其中包括 JRE:Java Runtime Environment)以及 Java 主流集成開發(fā)環(huán)境 Eclipse IDE。此外,還需要 Android 開發(fā)專用 Google 提供的Android SDK 和安裝在 Eclipse 的插件 Android ADT,為 Android 開發(fā)提供開發(fā)工具的升級或者變更,是 Eclipse 下開發(fā)工具的升級下載的工具 [3]。Android 開發(fā)平臺搭建步驟 [4]:(1)首先到 http://www.eclipse.org/downloads/下載 Eclipse 集成開發(fā)環(huán)境并且解壓,這里推薦下載 Java EE 集成版本,可以為平臺的搭建省下不少工作。接基于 Android 的驢友導航系統(tǒng)設計與實現(xiàn)3著再去 http://java.sun.com/javase/downloads/index.jsp 站點下載 SDK 后安裝,下載 http://dl.google.com/android/android-sdk-windows-1.5_r1.zip,Android SDK1.5后解壓。(2)雙擊 Eclipse 解壓后目錄中的 eclipse.exe 然后啟動,選擇 Eclipse 菜單中的 Help-> Install New Software-> 選項卡上的 Available Software,點擊右側(cè)的“Add”輸入 http://dl-ssl.google.com/android/eclipse/后確定,然后在“Work with”下拉菜單中選擇剛才輸入的網(wǎng)址。過一會就會出現(xiàn)一個 Developer Tools 選項,勾上以后點擊 Next 以后 Eclipse 會自動網(wǎng)上查找 Android 開發(fā)工具插件,然后找到 Android DDMS 和 Android Development Tools,選中這兩個點擊Finish, Eclipse 就會自動下載并安裝 Android 插件了,最后會提示重啟Eclipse。(3)重啟后選擇 Eclipse 菜單中的 Windows-> Preferences 在左側(cè)的 Android項目中 SDK Location 中填入 Android SDK 解壓后的目錄,然后點擊 Apply。(4)在 Windows7 的系統(tǒng)變量中的 path 變量中添加一個值,該值指向解壓后的 Android SDK 目錄下的 tools 文件夾。2.2 JSON 簡介JSON( javaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式,它基于javascript 卻采用了完全獨立于語言的文本格式。JSON 基于“名稱/值”對的集合和值的有效序列表這兩種格式,用 JSON 表示一組值時不但可以減少復雜性也能提高可讀性,是網(wǎng)絡編程中數(shù)據(jù)交換的常用格式。2.3 Struts2 框架簡介與環(huán)境搭建Struts 是采用 Java Servlet/JavaServer Pages 技術,開發(fā) Web 應用程序的開放源碼的 Framework。采用 Struts 能開發(fā)出基于 MVC(Model-View-Controller)設計模式的應用構架。而 Struts2 是在原有 Struts 和 Webwork 的技術基礎上進行合并的全新的框架,其體系結構而原有 Strcts 差異巨大。 Structs2 是以 Webwork 為核心,采用攔截器機制來處理用戶請求,這樣的設計也使得業(yè)務邏輯能夠與Servlet API 完全分離,使應用結構更為合理。Struts2 框架的開發(fā)需要使用 Myeclipse 集成開發(fā)環(huán)境。由于 Myeclipse 是Eclipse 的一個插件,所以在這忽略 Eclipse 的安裝。Myeclipse 的安裝:首先應該到 http://www.myeclipseide.com/index.php? name =Downloads&req=viewsdownload&sid=15 下載文件4MyEclipse_5.5.1GA_E3.2.2_ FullStackInstaller.exe 并安裝。安裝完畢后將其安裝目錄下的 feature 和 plugin 兩個目錄覆蓋到 Eclipse 的安裝目錄下,最后卸載剛才安裝的 Myeclipse[5]。Tomcat 應用服務器的安裝:首先,到 http://www.cuku.net/show.php/309.html選擇與自己 JDK 匹配的 Tomcat 安裝文件,在安裝時選擇路徑把路徑選到 JDK的安裝路徑下的 jre。最后配置環(huán)境變量:在“ 我的電腦” 上點右鍵—>“屬性”—>“高級 ”—> “環(huán)境變量(N)” 。 新建系統(tǒng)變量 CATALINA_HOME:C:\Program Files\Apache Software Foundation\Tomcat 5.5(我的 tomcat 安裝目錄,你寫你自己的) 在系統(tǒng)變 CLASSPATH 的值的后面加入: %CATALINA_HOME%\common\lib; 在系統(tǒng)變量 Path 的值中"%JAVA_HOME%\bin;"的后面加入以下內(nèi)容:%CATALINA_HOME%\bin; 到這里,Tomcat 安裝完畢 [6] 。Structs2 框架的搭建,包括以下步驟:首先創(chuàng)建 web 項目并導入 Structs2 所需要的包 struts2 –core-2.2.1.1.jar、xwork-core-2.2.1.1.jar、commons–fileupload-1.2. 1.jar comm.ons-io-1. 3.2.jar、freemarker-2.3.16.jar、ognl-3.0.jar 、javassist-3.7.ga.jar;配置 Structs 在當前 web 項目中,在 web.xml 中配置 Struts2 所需的核心過濾器。2.4 Baidu Maps API 簡介百度地圖 API 是為開發(fā)者免費提供的一套基于百度地圖服務的應用接口,包括 JavaScript API、Web 服務 API、Android SDK 、iOS SDK、定位 SDK、車聯(lián)網(wǎng) API、LBS 云等多種開發(fā)工具與服務,提供基本地圖展現(xiàn)、搜索、定位、逆/ 地理編碼、路線規(guī)劃、LBS 云存儲與檢索等功能,適用于 PC 端、移動端、服務器等多種設備,多操作系統(tǒng)下的地圖應用開發(fā) [7]。3 系統(tǒng)分析3.1 研究目標(1) 學習熟悉 Android 應用程序的框架、開發(fā)過程;(2) 學習熟悉 Struts2 框架、開發(fā)過程;(3) 基于 Android 的智能導游軟件主要實現(xiàn) Android 系統(tǒng)訪問服務端,利用基于 JAVA 的網(wǎng)絡編程(Apache HttpClient 項目)與 Webservice 調(diào)用,針對手機所在的地理位置,實時查詢相關景點的基本信息與天氣信息,并智能導航;基于 Android 的驢友導航系統(tǒng)設計與實現(xiàn)5(3) 學習熟悉基于 Android 的地圖 GIS 開發(fā)。3.2 需求分析本軟件是一個基于 Android 的智能導游系統(tǒng),故使用者應該為成分構成比較廣泛的游客,所以 UI 必須簡潔大方,有顯淺易懂。而要實現(xiàn)智能導游,首先就必須要求軟件起碼如人工導游般,能夠為用戶提供景點的基本信息講解、位置描述、導航等服務考慮到景區(qū)信息與用戶信息等的數(shù)據(jù)量可能十分巨大,本系統(tǒng)應該使用本地/服務器模式以節(jié)省用戶的移動設備儲存空間以及數(shù)據(jù)流量。綜上所述,本系統(tǒng)應該完成以下功能:(1) 采用 C/S 模式,基于 Struts2 框架服務端儲存用戶信息以及顯示地圖所必須的靜態(tài)信息,供 Android 客戶端的查詢?yōu)g覽與下載;(2) 用戶信息管理,包括:登錄與注冊、本地景點信息的管理;(3) 以城市為基本的景點信息查詢與模糊查詢,包括:名稱、地址、圖片、經(jīng)緯度、票價及其優(yōu)惠活動等,并提供景點信息的本地緩存、下載;(4) 用戶自定位,景點位置的地圖顯示與導航;(5) 周邊餐飲、衛(wèi)生間、住宿、醫(yī)院、加油站等信息的查詢。3.3 性能分析本項目的目標是提升游客的旅游體驗,所以對程序的性能要求較高,程序應該具有以下的良好性能:(1) 響應速度快。(2) 安全性高(3) 信息處理速度快4 系統(tǒng)設計4.1 用戶界面設計根據(jù)設計,本軟件系統(tǒng)有以下幾個界面:登錄界面、景點查詢綜合界面、景點信息顯示界面、景點信息本地收藏界面、周邊查詢界面、景點導航界面。景點查詢綜合界面是軟件的首頁,其主體是百度地圖。它能根據(jù)當前城市(自選或定位默認)或模糊查詢用百度地圖顯示出景點的分布情況。景點信息顯示界面為用戶顯示當前景點的詳細情況,包括:名稱、地址、6電話、門票、優(yōu)惠、簡介、圖片等資料,并能根據(jù)用戶意愿選擇下載當前景點信息。景點信息本地收藏界面,其主體是一個 ListView。它能夠顯示出用戶的本地景點信息,并實現(xiàn)管理(刪除) 。周邊查詢界面,其主體是一個百度地圖。用戶可以通過它來查詢到周邊諸如餐飲、酒店、加油站等信息。景點導航界面,其主體是一個百度地圖。它可以為用戶進行實時導航服務。根據(jù)對用戶界面顯示內(nèi)容的分析,繪制出用戶界面的草圖,如圖 4-1、4-2所示。首頁城市景點信息景點簡介搜索圖 4-1 用戶界面草圖景點 我的收藏基于 Android 的驢友導航系統(tǒng)設計與實現(xiàn)7目的地導航 周邊查詢圖 4-2 用戶界面草圖4.2 數(shù)據(jù)庫設計本軟件中有一下數(shù)據(jù)需要存儲:用戶信息、景點信息、景點信息收藏、全國城市名稱??紤]到用戶信息與景點信息的龐大數(shù)據(jù)量,本系統(tǒng)將其存儲在服務器端的 MySQL 數(shù)據(jù)庫,需要時再請求;城市名稱數(shù)據(jù)量較少,為減少用戶數(shù)據(jù)流量,將其存儲在手機的 SQLite 數(shù)據(jù)庫中;而景點信息收藏則存放于 SD卡的文件中,綜上所述,本系統(tǒng)數(shù)據(jù)庫設計如下:在服務端的 MySQL 數(shù)據(jù)庫中建立新數(shù)據(jù)庫 maps_traverse,并建立新表,包括用戶信息表 gpsuser 和景點信息表 spot。如表 4-1 和表 4-2 所示。表 4-1 用戶信息表 gpsuser 的結構屬性 數(shù)據(jù)類型 說明id Int(11) 自動增加的主鍵username varchar(50) 用戶名password varchar(50) 密碼Email varchar(50) 電子郵箱地址registertime varchar(50) 注冊時間powerlimits varchar(50) 權限state varchar(50) 用戶登錄狀態(tài)表 4-2 景點信息表 spot 的結構屬性 數(shù)據(jù)類型 說明id Int(11) 自動增加的主鍵name varchar(45) 景點名稱8address varchar(45) 地址phone varchar(45) 咨詢電話imageurl varchar(45) 圖片路徑Introduction TEXT 簡介Lat DOUBLE 經(jīng)度Lng DOUBLE 緯度Fares FLOAT 門票價city varchar(45) 所在城市編號btime TIME 始開放時間ntime TIME 終開放時間Favourableinfo varchar(45) 優(yōu)惠信息由于全國城市的分布是相對固定的,為了減少操作的麻煩,本軟件直接將整個城市數(shù)據(jù)庫 city.s3db 導入到 Android 項目的 res/raw 目錄中,直接使用。其中包括省表 province,城市表 city。如表 4-3 和表 4-4 所示。表 4-3 省表 province 的結構屬性 數(shù)據(jù)類型 說明_id integer 自動增加的主鍵code varchar(6) 省編號name varchar(60) 省名表 4-2 城市表 city 的結構屬性 數(shù)據(jù)類型 說明_id Integer 自動增加的主鍵code varchar(6) 城市編號name varchar(60) 城市名pcode varchar(6) 城市所在省編號從設計思路上考慮,儲存在手機本地的景點信息收藏數(shù)據(jù)包括 JSON 文本和 JPG 格式的圖片,將其直接寫入 SD 卡目錄以指定規(guī)則命名的目錄,此方案可以簡化對其的讀寫操作。4.3 程序模塊設計從功能需求上分析,整個軟件應劃分為首頁、個人資料、導航、周邊查詢,四個模塊。首頁負責景點信息的各類查詢、城市的切換、定位,是整個軟件的核心;個人資料模塊負責管理用戶的信息以及本地景點數(shù)據(jù);導航負責對用戶進行景基于 Android 的驢友導航系統(tǒng)設計與實現(xiàn)9點、指定位置的目的地導航;周邊查詢負責為用戶提供周邊信息的查詢。系統(tǒng)模塊功能圖如圖 4-2。圖 4-2 系統(tǒng)模塊功能圖5 系統(tǒng)功能模塊設計5.1 文件結構與用途在程序開發(fā)階段,首先確定“基于 Android 的智能導游系統(tǒng)”的工程名為guidemap。工程源代碼的結構如圖 5-1 所示。為了使源代碼文件的結構更加清晰,guidemap 工程設置了多個命名空間,分別用來保存用戶界面、數(shù)據(jù)庫、后臺服務和工具實體的源代碼文件,源代碼文件的名稱以及說明如表 5-1 所示。智能導航系統(tǒng)首頁我的資料 導航周邊景點標示查詢下載 位置顯示、當前城市 收藏景點查詢 收藏景點管理 景點導航 指定地點導航個人資料管理登錄10圖 5-1 guidemap 工程的源代碼文件表 5-1 guidemap 工程的文件用途說明包 名 稱 文 件 名 說 明com.guidemap.adapter MyAdapter.java 資源適配器com.guidemap.common Constants.java 公共工具類com.guidemap.control ImageLoader.java 遠程圖片加載類com.guidemap.control MapApplication.java Applicationcom.guidemap.control MyOverLay.java 景點覆蓋層類com.guidemap.control OverItemT.java 定位覆蓋層類com.guidemap.common Urler.java url 公共類com.guidemap.db DAO.java 城市信息數(shù)據(jù)庫操作com.guidemap.db DBManager.java SQLite 管理類com.guidemap.entity MyListItem.java 地圖 Item 實體類com.guidemap.entity Position.java 景點位置實體類com.guidemap.entity Spot.java 景點信息實體類com.guidemap.entity User.java 用戶信息實體類com.guidemap.service GetLocationService.java 后臺定位 service 類com.guidemap.view CityActivity.java 城市切換選擇com.guidemap.view GuideActivity.java 導航com.guidemap.view MainActivity.java 主框架com.guidemap.view MapsActivity.java 首頁com.guidemap.view SearchActivity.java 周邊查詢com.guidemap.view SpotActivity.java 景點信息查詢Android 的資源文件保存在/res 的子目錄中。/res/drawable/ 目錄中保存的是圖像文件,/res/values 目錄中保存的是用來自定義字符串和選項列表的文件;/res/layout 目錄中保存的是布局 XML 文件;/res/raw 保存的是城市信息數(shù)據(jù)庫基于 Android 的驢友導航系統(tǒng)設計與實現(xiàn)11文件;而/res/anim 保存的是動畫效果文件。所有在程序開發(fā)階段可以被調(diào)用的資源都保存在這些目錄中 AndroidManifest.xml 文件主要是 Activity、Service 類的注冊和相關權限的許可設置。5.2 后臺定位服務GetLocationService.java 類的后臺定位服務是整個軟件的基礎,它綁定在軟件的 Application,從軟件運行開始,貫穿整個軟件生命周期的始末。其主要功能是不斷為系統(tǒng)提供實時的所在經(jīng)緯度以及所在城市,并存放到公共類Constants 的 City 變量??紤]到本應用的用戶對象主要為國內(nèi)用戶,在地圖方案上采用了由百度公司開發(fā)的免費地圖 Baidu Maps API。而定位方案采用了 Baidu Location API,通過調(diào)用此 API 來實時獲取當前位置坐標將其存入 Binder 類中,而當前城市信息的獲取通過百度地圖 SDK 中 MKSearch 來獲取。此模塊的實現(xiàn)流程圖如圖 5-2 所示。其核心代碼如下。MapApplication app = (MapApplication) this.getApplication();if (app.bMap == null) {app.bMap = new BMapManager(getApplication());app.bMap.init(app.MAP_KEY,new MapApplication.MyGeneralListener());}12開始初始化百度地圖 API監(jiān)聽位置變化,并實時獲取當前坐標根據(jù)坐標查詢、獲取當前地址信息將獲取的信息存入MapApplication結束圖 5-2 后臺定位服務模塊功能流程圖app.bMap.start();final MKSearch mMKSearch = new MKSearch();mMKSearch.init(app.bMap, new GeoCoderParser());Log.d("service map", "started");mLocationListener = new LocationListener() {@Overridepublic void onLocationChanged(Location location) {//Log.d(TAG, "location change");if (location != null) {String strLog = String.format("經(jīng)度:%f\r\n" + "緯度:%f", location.getLongitude(),location.getLatitude());pt = new GeoPoint((int)(location.getLatitude() * 1E6), (int)(location.getLongitude() * 1E6));mMKSearch.reverseGeocode(pt);app.setPt(pt);}基于 Android 的驢友導航系統(tǒng)設計與實現(xiàn)13else{Log.v("Service", "getLocation error!");}}};MKSearch 的查詢結果在 GeoCoderParse.onGetResult 方法中給出。public void onGetAddrResult(MKAddrInfo arg0, int arg1) {if (arg1 != 0) {String str = String.format("%d", arg1);Log.d(TAG, str);return;}MKGeocoderAddressComponent address = arg0.addressComponents;Constants.CITY=address.city;Log.d(TAG, "Location info:" + address.province + address.city + address.district+address.street+address.streetNumber);}5.3 MapApplication.java 類該類是整個軟件的基石,它綁定了后臺定位服務,初始化了百度地圖SDK,諸如: BMapManager、MKSearch 、MKSearchListener 等公共類,避免了各 Activity 之間的沖突與提高了系統(tǒng)的流暢性,它還定義了軟件的公共變量。綜上,系統(tǒng)可以通過它來控制著整個軟件的行為。其核心代碼如下。首先,應該在 androidmanifest.xml 文件中聲明。綁定后臺服務以及初始化百度地圖。MapApplication mApp=this;bMap=new BMapManager(mApp);boolean is=bMap.init(MAP_KEY, new MyGeneralListener());if(is){14//設置定位監(jiān)聽時間間隔bMap.getLocationManager().setNotifyInternal(5, 2);bMap.getLocationManager().enableProvider(MKLocationManager.MK_NETWORK_PROVIDER);bMap.getLocationManager().enableProvider(MKLocationManager.MK_GPS_PROVIDER);}else{Toast.makeText(this, "地圖DSK啟動失敗" ,Toast.LENGTH_LONG).show();}final Intent intent=new Intent();intent.setAction("com.guidemap.ss"); bindService(intent, scon, Service.BIND_AUTO_CREATE);其中,MyGeneralListener()類的作用在于在初始化百度地圖 SDK時檢測錯誤的發(fā)生,并為用戶提供提醒服務。用于為用戶提供導航、周邊信息搜索的MKSearch關鍵代碼如下(由于篇幅問題,此處只寫出了代碼框架,具體流程在導航、周邊信息查詢模塊處給出)。MKSearch mKSearch=new MKSearch();mKSearch.init(app.bMap, new MKSearchListener() {@Overridepublic void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {}@Overridepublic void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {}@Overridepublic void onGetSuggestionResult(MKSuggestionResult arg0, int arg1){}@Overridepublic void onGetRGCShareUrlResult(String arg0, int arg1){}@Overridepublic void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) {}@Overridepublic void onGetPoiDetailSearchResult(int arg0, int arg1) {}基于 Android 的驢友導航系統(tǒng)設計與實現(xiàn)15@Overridepublic void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {}@Overridepublic void onGetBusDetailResult(MKBusLineResult arg0, int arg1){}@Overridepublic void onGetAddrResult(MKAddrInfo arg0, int arg1) {}});5.4 登錄模塊登錄模塊是整個系統(tǒng)的門戶,在現(xiàn)實中它的功能是否健全關系到整個系統(tǒng)給用戶的第一印象。在這個系統(tǒng)中,登錄模塊主要為用戶提供賬號登錄與注冊,記住最后一次賬號與密碼,對系統(tǒng)進行 GPS、WIFI 等狀態(tài)的檢測,以及系統(tǒng)權限等功能。其界面圖如圖 5-3 所示。圖 5-3 登錄界面圖 當用戶打開系統(tǒng),首先便進入這個登錄界面。假如用戶上一次成功登錄并勾選記住密碼,則系統(tǒng)會自動為用戶填上上一次登錄所用賬號密碼。與此同時,該模塊后臺會自動檢測當前手機的 GPS、WIFI 網(wǎng)絡狀態(tài),因為系統(tǒng)所實現(xiàn)的功能是基于上述兩種功能的,假如檢測到上述狀態(tài)為關閉時會提示打開。當用戶輸入正確賬號信息時,系統(tǒng)便會跳轉(zhuǎn)至系統(tǒng)主界面。在注冊功能中,用戶可以填寫賬號、密碼、E-mail 等信息,注冊成功的條件是輸入的賬號不重復,各類16輸入格式正確。其中,登錄的功能流程圖如圖 5-4 所示。圖 5-4 登錄功能流程圖 5.5 首頁模塊由上述可知,首頁模塊是軟件功能的核心,正是它奠定了軟件的屬性:智能導游。它由兩個核心界面構成:主界面、景點信息界面。其對應的界面圖如圖 5-5 所示。開始服務端檢測賬號數(shù)據(jù)并將結果反饋至系統(tǒng)登錄,向服務端發(fā)送賬號信息讀取上一次記錄并填上對應的框存在上一次賬號記錄?登錄失敗用戶輸入賬號密碼的信息登錄成功賬號密碼正確?結束NNYY基于 Android 的驢友導航系統(tǒng)設計與實現(xiàn)17圖 5-5 首頁界面圖首先,用戶一旦登錄成功后,系統(tǒng)就會根據(jù)定位信息向服務端的 MySQL 數(shù)據(jù)庫請求當?shù)氐木包c數(shù)據(jù),并將其顯示在地圖上。此后,用戶可以根據(jù)需要,使用以下功能:(1) 、模糊搜索,在輸入框中輸入用戶需要了解的景點名稱,系統(tǒng)就會將其單獨顯示出來然后將其置于地圖中心;(2) 、切換城市,系統(tǒng)默認城市是用戶當前所在城市,如果需要,用戶可以實時切換城市以了解更多景點;(3) 、查詢、下載景點詳細信息。其模塊功能流程圖如圖5-6所示。為了更好地處理想 Web 站點請求,包括處理 Session、Cookie 等細節(jié)問題,Apache 開源組織提供了一個 HttpClient 項目,作為一個簡單的 Http 客戶端(而不是瀏覽器) 。它可以用于發(fā)送 HTTP 請求,接受 HTTP 響應 [8]。由于本系統(tǒng)需要從服務端遠程獲取景點信息,我采用這個 Apache HttpClient,數(shù)據(jù)格式采用 JSON,從服務端獲取信息的核心方法如下。public static String doGet(String url,Context context){ //判斷網(wǎng)絡if(checkNetwork(context)==false){return null;}else{HttpGet httpget =new HttpGet(url);BasicHttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, 5000);18開始初始化百度地圖N標注景點向后臺定位服務請求實時位置信息位置為空?Y獲取上一次定位的信息根據(jù)位置信息向服務端請求景點數(shù)據(jù)結束圖 5-6 景點信息標注功能流程圖HttpConnectionParams.setSoTimeout(httpParams, 5000); HttpClient httpcliend=new DefaultHttpClient(httpParams);String result=new String();try {HttpResponse httpresponse=httpcliend.execute(httpget);HttpEntity httpentity= httpresponse.getEntity();InputStream inputstream= httpentity.getContent();BufferedReader buff=new BufferedReader(new InputStreamReader(inputstream));String line=new String();while((line=buff.readLine())!=null){基于 Android 的驢友導航系統(tǒng)設計與實現(xiàn)19result=result+line;}//System.out.println(result);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();result=null;}return result;}}根據(jù)信息將景點標注:public OverItemT(Drawable marker, MapsActivity context, ArrayList slist) {super(boundCenterBottom(marker));// TODO Auto-generated constructor stubthis.marker=marker;this.slist=slist;this.ma=context;//根據(jù)gplist 來制作OverlayItemList lgp=new ArrayList();OverlayItem ot;for(Spot spot:slist){Log.e("getLayer", String.valueOf(spot.getPoi().getLat())+"+"+String.valueOf(spot.getPoi().getLng()));lgp.add(new GeoPoint((int)(spot.getPoi().getLat()*1e6),(int)(spot.getPoi().getLng()*1e6))); }for(int i=0;i- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 基于 android 智能 導航系統(tǒng) 設計 實現(xiàn)
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.jqnhouse.com/p-176483.html