畢業(yè)論文Android公交查詢系統(tǒng)_第1頁
畢業(yè)論文Android公交查詢系統(tǒng)_第2頁
畢業(yè)論文Android公交查詢系統(tǒng)_第3頁
畢業(yè)論文Android公交查詢系統(tǒng)_第4頁
畢業(yè)論文Android公交查詢系統(tǒng)_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于Android平臺的公交查詢系統(tǒng)的設(shè)計與實現(xiàn)摘要 截至2013年底中國智能手機市場 Android 操作系統(tǒng)份額達(dá)到 63.1%,占據(jù)絕對主流地位,在大城市中android 手機的使用率會更高。而人們的生活水平也來越高,人們的出行就變的越來越頻繁,公交車作為人們出行最方便,使用最廣泛的公共交通工具,發(fā)揮著相當(dāng)大的作用,公交車的便利性,使它在人們的生活中扮演著越來越重要的角色。因此,我們將android手機終端、公交線路站點信息等結(jié)合起來產(chǎn)生了一個非常具有潛力和市場的基于Android的公交查詢運用。本文要闡述的系統(tǒng)就是基于Android的移動公交查詢系統(tǒng),該系統(tǒng)既提供公交線路和站點的查詢,

2、也滿足了手機用戶搜索站點等需求。手機用戶只需在系統(tǒng)上輸入要查詢的線路,輕輕一點,就可以快速、準(zhǔn)確的獲取到線路信息。對于先要在計算機上查詢線路,然后再根據(jù)站牌的信息進(jìn)行乘車的一系列傳統(tǒng)出行模式來說,該系統(tǒng)可謂是革命性的產(chǎn)物,具有相當(dāng)?shù)膬r值。該系統(tǒng)采用Android SDK,Eclipse作為開發(fā)工具。 關(guān)鍵詞:Android;公交查詢;LBS摘要IAbstractII1緒論11.1課題背景11.2國內(nèi)外研究現(xiàn)狀11.3本文主要工作22系統(tǒng)關(guān)鍵技術(shù)32.1 關(guān)鍵技術(shù)概述32.2 LBS技術(shù)32.3 GIS技術(shù)52.4 手機定位技術(shù)62.5 手機端和服務(wù)器端數(shù)據(jù)交互72.6 多線程技術(shù)83 需求分析

3、103.1 需求分析103.1.1 系統(tǒng)用例圖103.1.2 功能需求113.2 系統(tǒng)架構(gòu)設(shè)計124公交查詢系統(tǒng)的設(shè)計與實現(xiàn)144.1 Android程序開發(fā)144.2 SQLite簡介154.3 系統(tǒng)功能詳細(xì)設(shè)計與實現(xiàn)164.4 程序運行截圖225 結(jié)論與展望24參考文獻(xiàn)25致謝261緒論1.1課題背景 隨著生活水平的提高,人們的出行變的越來越頻繁,人們出行的次數(shù)和范圍都在增加,公交車作為人們出行最方便,使用最廣泛的公共交通工具,發(fā)揮著相當(dāng)大的作用,帶動了整個社會經(jīng)濟(jì)的快速發(fā)展,作為城市發(fā)展程度高低的象征的公共交通承擔(dān)著越來越繁重的任務(wù),由于公交車的便利性,它人們的生活中扮演著越來越重要的角

4、色。人們對公交系統(tǒng)依賴性逐漸增加,出行的頻率也在越來越大,范圍越來越廣,乘客不可能只乘坐一趟車就能到達(dá)目的地,往往需要換乘多條線路,乘坐多輛車。這種情況就導(dǎo)致?lián)Q乘的問題日益顯現(xiàn),我們需要解決的就是應(yīng)該如何準(zhǔn)確的提供乘客信息,讓他們能及時、準(zhǔn)確、高效的找到目的地,該問題就是路徑選優(yōu)問題,其核心問題就是換乘問題,即乘幾次車,在哪兒乘車,乘哪路車的問題。 大部分乘客在借助公交出行時,習(xí)慣性的就會從公交站點處了解公交的線路走向信息和其他路線信息,查看公交線路、沿途??康恼军c、發(fā)車時間和收車時間等基本信息。隨著信息技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)的應(yīng)用隨處可見,是當(dāng)前社會大眾不可或缺的一部分,已經(jīng)很好的融入到人們的

5、日常生活和學(xué)習(xí)中。人們在乘坐公交前,一般通過網(wǎng)絡(luò)的方式在計算機中查詢公交站點信息,解應(yīng)當(dāng)怎么樣出行,應(yīng)該在哪個站點換乘,乘坐哪一條線路。但是相應(yīng)的問題也產(chǎn)生了,通過計算機瀏覽網(wǎng)頁的方式不夠靈活,尤其不方便的是在出行過程中查詢公交信息。隨著智能手機的大量普及,人們不再需要通過計算機瀏覽網(wǎng)頁的方式查詢公交信息?,F(xiàn)在,你只需要掏出你的智能手機,輸入要到達(dá)的目的地,便可輕松查詢出你所需的公交信息。1.2國內(nèi)外研究現(xiàn)狀 LBS(location based service),是基于位置的服務(wù),在電信運營商的無線通信網(wǎng)絡(luò)或衛(wèi)星網(wǎng)絡(luò)幫助下,來獲取用戶的位置信息,在地理信息系統(tǒng)的支持下,提供相應(yīng)的服務(wù)。在國外

6、,LBS 的應(yīng)用最早是源于美國聯(lián)邦通信委員會(FCC)所提出的一個需求,該需求建立在 1996 年頒布 E-911 法規(guī)上,要求移動運營商為手機用戶提供緊急救援服務(wù)。經(jīng)過幾年的沉淀,在 1999 年 FCC 又提出更高精確度的需求,導(dǎo)致了美國 LBS 應(yīng)用被廣泛的推廣和快速發(fā)展,應(yīng)用日趨成熟。隨著 GPS(全球定位系統(tǒng))、GIS(地理信息系統(tǒng))、通信技術(shù)的發(fā)展,世界各國紛紛將 LBS 應(yīng)用的商業(yè)服務(wù)中來。東亞各國的 LBS 運用屬南韓、日本領(lǐng)先,大陸產(chǎn)業(yè)支持不足;北美則屬美國領(lǐng)先,美國在法令的推動下 LBS 應(yīng)用得到了長足發(fā)展;西歐各國在 LBS運用上側(cè)重于日常生活類的查詢服務(wù)。在國內(nèi),200

7、2 年年底,中國的三大運營商陸續(xù)開通自己的位置服務(wù)。中國移動旗下的移動夢網(wǎng)品牌推出了“找朋友”等基于位置服務(wù)的業(yè)務(wù);中國聯(lián)通也不甘落后,隨后推出了 CDMA 品牌下的“定位之星”業(yè)務(wù)。手機用戶第一次體驗到更快的下載速度和位置的導(dǎo)航服務(wù),用戶市場逐步增大,得到了用戶一致好評;中國電信也嗅到了位置服務(wù)里面巨大的商機,推出了 PHS(小靈通)平臺上的位置服務(wù)業(yè)務(wù)。 然而,并不像中國三大運營商所構(gòu)思的規(guī)劃一樣,實現(xiàn)業(yè)務(wù)的很大增長,在相當(dāng)長的一段時間內(nèi)都無人問津?;谝苿泳W(wǎng)絡(luò)的位置服務(wù)業(yè)務(wù)遇到了通信帶寬的瓶頸,再加上當(dāng)時 GPS 的普及率比較低,市場不如預(yù)期。在過去的很長一段時間,基于位置的服務(wù)業(yè)務(wù)都沒

8、有得到消費市場的認(rèn)可,隨著信息技術(shù)的飛速發(fā)展,LBS 在一些專業(yè)的領(lǐng)域逐漸得到了認(rèn)可,比如說在交通運輸也方面。一個產(chǎn)業(yè)的崛起,必定有一股大的力量在推動著它向前進(jìn),2004年,交通安全管理和應(yīng)急響應(yīng)的需要,使得 GPS 和移動通信 LBS 服務(wù)結(jié)合,產(chǎn)生了一個新的增長點,大量的民營資本的進(jìn)入,使到交通方面的位置服務(wù)逐步商業(yè)化,大量基于 GPS 的運輸管理系統(tǒng)產(chǎn)生,這些軟件系統(tǒng)運用到的基本技術(shù)都是LBS。我們可以從統(tǒng)計的數(shù)字看出,全國十幾個省市都陸續(xù)采用位置服務(wù)技術(shù)對公交車、出租車、貨運、航運等交通工具進(jìn)行位置跟蹤管理,大量用于車速管理、車輛監(jiān)控、車輛調(diào)度等管理。隨著社會經(jīng)濟(jì)的發(fā)展,私家車的數(shù)量越

9、來越多,GPS的市場得到了空前的增長,各種基于位置服務(wù)的廠商不斷涌現(xiàn),形成了一個新的產(chǎn)業(yè)點,我們相信隨著移動通信網(wǎng)從 2G 到 3G 的升級,帶寬的不斷增大,在不久的將來,LBS 的運用會呈現(xiàn)革命性的增長。1.3本文主要工作本文一共分為五章:第一章是緒論,主要敘述了移動公交查詢系統(tǒng)產(chǎn)生的應(yīng)用背景以及對國內(nèi)外LBS的研究現(xiàn)狀進(jìn)行介紹,并對本文為什么選擇Android作為系統(tǒng)開發(fā)平臺進(jìn)行分析。 第二章章分析了移動公交查詢系統(tǒng)所用到的關(guān)鍵技術(shù),主要涉及了LBS運用的簡單介紹、GIS技術(shù)的介紹、移動終端的定位方法、手機與服務(wù)器端的數(shù)據(jù)交互方式、多線程技術(shù)、手機數(shù)據(jù)存儲方式。 第三章對系統(tǒng)需求分析,包含

10、需求分析和功能分析。 第四章主要介紹了移動公交查詢系統(tǒng)的功能模塊和系統(tǒng)的設(shè)計與實現(xiàn)以及對統(tǒng)的測試。 第五章對本文的研究內(nèi)容進(jìn)行了總結(jié)及對未來LBS發(fā)展進(jìn)行了展望。最后是參考文獻(xiàn)和致謝。2系統(tǒng)關(guān)鍵技術(shù)2.1 關(guān)鍵技術(shù)概述 移動公交系統(tǒng)中涉及的技術(shù)比較復(fù)雜,首先需要對公交進(jìn)行定位,在定位的過程中會有數(shù)據(jù)的存儲,事件的并發(fā),將定位后位置信息反饋給GIS處理等基本操作。主要包括的問題如下: 1)定位問題 移動公交查詢系統(tǒng)具有準(zhǔn)確,實時,快速等特殊性,不和普通的LBS應(yīng)用一樣,要求更高的位置精度,定位要求更加快速。GPS的定位方式,顯然在移動公交查詢系統(tǒng)中就顯得力不從心,我們從GPS的特點就可以了解到,

11、它第一次定位非常耗時,而且還存在搜不到衛(wèi)星導(dǎo)致無法定位的情況。因此,結(jié)合移動公交查詢系統(tǒng)的特點,我們選擇了GPS與基站定位相結(jié)合的定位方法。系統(tǒng)接收到定位的請求時,通過移動網(wǎng)絡(luò)的基站進(jìn)行快速的初步定位,然后再應(yīng)用GPS定位。這樣的操作大大的滿足了用戶的需求,而且定位的精度也更加精確,更加高效,更加快捷,降低了系統(tǒng)的出錯率,提升用戶體驗。 2)客戶端與服務(wù)端數(shù)據(jù)交互 客戶端請求查詢要求時,客戶端會向服務(wù)端發(fā)送一個請求,請求的數(shù)據(jù)通過Web service方法進(jìn)行調(diào)度,服務(wù)器響應(yīng)后,會同樣通過Web service接口進(jìn)行反饋數(shù)據(jù)給客戶端。 3)多線程技術(shù) 同一時間,可能會有多個請求,通過多線程可

12、以更加充分的利用系統(tǒng)的資源,完成更多的任務(wù)。 4)手機數(shù)據(jù)存儲 服務(wù)端返回的數(shù)據(jù)包保存在手機上,本系統(tǒng)用的數(shù)據(jù)庫為SQLite。2.2 LBS技術(shù)LBS (Location Based Service),其中包括兩方面的含義:首先是確定移動設(shè)備或用戶的地理位置,二是提供各種信息服務(wù)和位置。意指各種與定位相關(guān)的服務(wù)系統(tǒng),稱為“定位服務(wù)”,另一種被稱為MPS (Mobile Position Service),也稱為“移動定位服務(wù)”系統(tǒng),如找到手機用戶的當(dāng)前位置,然后在城市范圍內(nèi)尋找手機用戶當(dāng)前位置處一公里范圍內(nèi)的酒店,電影院,圖書館,加油站等,所以LBS是利用互聯(lián)網(wǎng)或無線網(wǎng)絡(luò),在固定用戶或移動用

13、戶之間,完成定位和服務(wù)功能。隨著手機成為我們的生活一個不可分割的部分?;谖恢玫囊苿臃?wù)的日益突出,基于位置的業(yè)務(wù)的巨大魅力凸顯。第二種含義是根據(jù)用戶位置信息提供無線IP服務(wù)。LBS是GIS、移動無線網(wǎng)絡(luò)和Internet三者的交集。如圖2-1所示。圖2-1 LBS的交集 Mobile GIS是移動無線網(wǎng)絡(luò)和GIS的產(chǎn)物。它是基于移動互聯(lián)網(wǎng)的支持,以智能手機或平板電腦終端,北斗系統(tǒng),GPS或基站為定位手段的GIS系統(tǒng)。運行于各種移動終端,通過無線通信與服務(wù)端進(jìn)行數(shù)據(jù)交互,也可以獨立運行,具有流動性。能夠迅速響應(yīng)用戶的請求,能夠處理在用戶環(huán)境中隨時間變化的因素的實時影響。系統(tǒng)所提供的服務(wù)與用戶的

14、位置信息是密切相關(guān)的。移動GIS的表達(dá)體現(xiàn)在移動終端上,移動電話,掌上電腦,車載終端,這些設(shè)備的制造商不唯一,他們所使用的技術(shù)是不統(tǒng)一的,這必然引起移動終端的多樣性。 Web GIS是Internet技術(shù)應(yīng)用于GIS開發(fā)的產(chǎn)物。是一個交互式的、分布式的、動態(tài)的地理信息系統(tǒng),是由多個主機、多個數(shù)據(jù)庫的無線終端,并由客戶機與服務(wù)器相連所組成的,是GIS技術(shù)的一個重要的應(yīng)用方向。GIS通過WWW功能得以擴展,真正成為一種大眾使用的工具。Internet用戶可以瀏覽Web GIS站點中的空間數(shù)據(jù)、制作專題圖,以及進(jìn)行各種空間檢索和空間分析,從而使GIS進(jìn)入千家萬戶。當(dāng)然WebGIS也有不足的地方,一旦

15、用戶不能連接網(wǎng)絡(luò),GIS服務(wù)就停止了,但是一旦引入了無線網(wǎng)絡(luò),以上問題就能得到解決。 將移動互聯(lián)網(wǎng)、Web GIS和Mobile GIS結(jié)合。LBS通過移動互聯(lián)網(wǎng),結(jié)合地理信息系統(tǒng),給移動用戶提供位置服務(wù)。在3G網(wǎng)絡(luò)中,要實現(xiàn)LBS應(yīng)用涉及了多個實體,LBS網(wǎng)絡(luò)模型如圖2-2所示。圖2-2 定位業(yè)務(wù)的網(wǎng)絡(luò)結(jié)構(gòu)圖 1)定位操作平臺:通過各種定位技術(shù)來獲取移動臺的位置信息。 2)中間件:給移動用戶提供定位服務(wù)接口,通過這些接口用戶可以訪問地理信息系統(tǒng),完成的需求。 3)GIS:將位置信息(經(jīng)緯度)轉(zhuǎn)化成具體的事物信息的信息系統(tǒng)。 4)SP(application ):給移動用戶提供LBS服務(wù)。 5

16、)終端(UE):移動用戶通過3G網(wǎng)絡(luò)獲取LBS服務(wù)。 為了更好地開展LBS服務(wù),移動網(wǎng)絡(luò)運營商首先需要建設(shè)定位操作平臺。鑒于我國基于LBS的GIS系統(tǒng)發(fā)展情況,SP/CP靠自己實現(xiàn)GIS具有相當(dāng)?shù)拇蟮碾y度,同時也是資源的一種浪費。相對而言,由運營商統(tǒng)一建立一套GIS的方案是可行的。2.3 GIS技術(shù) LBS的核心是服務(wù)。主要由智能終端、無線網(wǎng)絡(luò)、通信網(wǎng)、服務(wù)、定位、GIS系統(tǒng)幾大部分組成。GIS即地理信息系統(tǒng),結(jié)合空間地理數(shù)據(jù)庫,來對地理空間數(shù)據(jù)做操作。只有一些蒼白的地理經(jīng)緯度數(shù)字是毫無意義的,這些數(shù)據(jù)沒有任何的具體含義,我們要做的就是把這些直白數(shù)字信息,轉(zhuǎn)化成用戶想要的實物數(shù)據(jù)。這就需要我們

17、將這些坐標(biāo)點放在地理信息系統(tǒng)中來,才能代表具體的地點、方位等,這些最終的信息才是用戶需要的、能理解的東西。GIS主要包含了電子地圖、地圖匹配、坐標(biāo)系匹配等技術(shù)。 1)地圖匹配技術(shù) 地圖匹配是指在不同條件下獲取的同一物景的地圖之間的配準(zhǔn)。同一傳感器在不同時間,或不同類型傳感器在同一時間,或不同類型傳感器在不同時間所獲取的兩幅地圖中的同一地面點所對應(yīng)像素之間的配準(zhǔn),是圖像處理的一個重要課題。最常用的匹配方法是互相關(guān)法。 地圖配備技術(shù)是一種將定位軌跡與數(shù)字地圖中的道路網(wǎng)絡(luò)結(jié)合起來,在地圖中去確定定位物體的位置。 2)電子地圖技術(shù)電子地圖技術(shù),得益于信息技術(shù)的發(fā)展,它利用計算機技術(shù)按照數(shù)字方式對地圖信

18、息進(jìn)行存儲和查閱。電子地圖存儲的地圖信息是采用矢量的方式存儲的,在這樣的操作下,地圖的現(xiàn)實效果就不會受地圖比例的放大、縮小或旋轉(zhuǎn)影響。早期的地圖存儲方式是位圖式,地圖比例不能做調(diào)整。現(xiàn)如今,電子地圖軟件都采用地理信息系統(tǒng)進(jìn)行地圖的存儲。3)路徑規(guī)劃問題 路徑規(guī)劃是指,在具有障礙物的環(huán)境中,按照一定的評價標(biāo)準(zhǔn),尋找一條從起始狀態(tài)到目標(biāo)狀態(tài)的無碰撞路徑。本算法中路徑規(guī)劃采用了基于知識的遺傳算法,它包含了自然選擇和進(jìn)化的思想,具有很強魯棒性。 路徑規(guī)劃的核心目的是要算出起點和終點之間最優(yōu)路徑,它是地理信息系統(tǒng)中的基本功能。常用的最佳路徑算法是Dijskra算法。在LBS服務(wù)中我們不可能采用這種方式的

19、原因是智能終端的處理效率和網(wǎng)絡(luò)傳輸?shù)钠款i。我們必須對這個算法進(jìn)行改造。 4)移動數(shù)據(jù)庫技術(shù) 移動數(shù)據(jù)庫是能夠指出移動式計算環(huán)境的數(shù)據(jù)庫,其數(shù)據(jù)在物理上分散而邏輯上集中。它涉及到移動通信技術(shù)、分布式計算技術(shù)、數(shù)據(jù)庫技術(shù)等多個學(xué)科,與傳統(tǒng)的數(shù)據(jù)庫相比,移動數(shù)據(jù)庫具有移動性,位置相關(guān)性,頻繁的斷接性,網(wǎng)絡(luò)通訊的非對稱性等特征。 移動數(shù)據(jù)庫作為分布式數(shù)據(jù)庫的延伸和擴展,擁有分布式數(shù)據(jù)庫的諸多優(yōu)點和獨特的特性,能夠滿足未來人們訪問信息的要求,具有廣泛的應(yīng)用前景。2.4 手機定位技術(shù) 手機定位技術(shù)是指將使用GPS技術(shù)或基站定位技術(shù),來對手機進(jìn)行定位的技術(shù)。使用手機的GPS定位模塊基于GPS的定位,將自身的

20、位置信號發(fā)送到后臺來實現(xiàn)手機定位。基站定位則是使用基站對手機的距離的測算距離來確定電話的位置。后者并不需要具有GPS定位功能的移動電話,但精度極大地依賴于所述基站的密度,并有時會錯誤超過一公里。前者定位精度高。此外,還有使用WiFi在一個小區(qū)域的定位方式。眾所周知,GPS是美國的全球定位系統(tǒng)系統(tǒng),他們掌握著GPS技術(shù)的核心模塊,提供給我們使用的都是一些小精度的服務(wù),而且隨著GPS設(shè)備的小型化,每次啟動設(shè)備都需要花很長的時間初始化,大大的降低了用戶的滿意度。為了解決這一問題,GPS輔助定位的方式就應(yīng)運而生了。GPS輔助定位的流程如下:通信網(wǎng)收到GPS發(fā)來的輔助信息,通信網(wǎng)將信息推送給手機,手機獲

21、取到GPS信息,測算出手機終端的位置信息,手機將信息發(fā)送給通信網(wǎng)。輔助GPS技術(shù)(A-GPS ),它是通過移動通信的基站來快速定位。當(dāng)無線電信號很差的情況下GPS定位就顯得力不從心,例如在一座城市,這些信號可能會被許多建筑物、墻壁或樹木削弱。在這樣的條件下,輔助GPS技術(shù)就可以發(fā)揮其優(yōu)勢,利用基站進(jìn)行快速定位。該定位方式包括手機輔助GPS定位和手機自主GPS定位兩種。1)手機輔助GPS定位方式這種方式通過GSM網(wǎng)向手機發(fā)送輔助信息,來減少設(shè)備訪問GPS獲取數(shù)據(jù)的時間,將傳統(tǒng)的GPS的大部分功能交由網(wǎng)絡(luò)處理器來完成。GSM發(fā)送的輔助信息可以持續(xù)幾分鐘,網(wǎng)絡(luò)處理器分析這些輔助信息,測算出手機的位置

22、,完成輔助定位功能,提供定位的精確度。2)手機自主GPS定位方式這種自主的定位方式要比輔助定位復(fù)雜,要求傳入的參數(shù)更多。它包含了輔助方式的所有定位功能,而且還添加了對衛(wèi)星位置和手機位置的計算功能。這種方式的最大特點就是需要手機包含一個全功能GPS接收器。WiFi定位,類似于基站定位,由于WiFi熱點特點位置很少變動,每一個WiFi熱點都有唯一一個mac地址。WiFi定位精度比GPS要低,受服務(wù)范圍限制,而且沒有方向、速度等數(shù)據(jù),不能導(dǎo)航,更不能離線使用。不過它有比GPS更優(yōu)越的地方,就是在人口、樓群越密集的地方,使用的效果會更好。GPS啟動時間長,在室內(nèi)是無效的,天氣不好的時候表現(xiàn)也欠佳,樓群

23、太密集的地方也不太好用。而這些因素都能被WiFi定位很好地補充。2.5 手機端和服務(wù)器端數(shù)據(jù)交互在Android中有時候我們不需要用到本機的SQLite數(shù)據(jù)庫提供數(shù)據(jù),更多的時候是從網(wǎng)絡(luò)上獲取數(shù)據(jù),Android從服務(wù)器獲取相應(yīng)數(shù)據(jù)的方式有三種,如表2-1所示。表2-1 客戶端與服務(wù)器數(shù)據(jù)交換方式交互方式原理系統(tǒng)中是否使用Sockettcp協(xié)議是Web servicesoap協(xié)議是HttpClienthttp協(xié)議否這三種數(shù)據(jù)交換方式,各自有使用場合,第二種和第三種都是比較適合輕量級的數(shù)據(jù)。Web service傳輸?shù)臄?shù)據(jù)格式一般都是xml這種類型的,在本系統(tǒng)中,要對公交的情況進(jìn)行實時捕獲,獲得

24、其位置信息(經(jīng)度、維度),因此使用第二中方式是最為合適的,也是最為方便的。Socket方式是基于TCP協(xié)議的套接字方法,這種方法適合于大數(shù)據(jù)的傳輸,支持?jǐn)帱c續(xù)傳。雖然HttpClient也支持大數(shù)據(jù)的傳輸,但不支持?jǐn)帱c續(xù)傳。2.6 多線程技術(shù) 線程可以定義為進(jìn)程中的異步代碼路徑。在支持多線程技術(shù)的操作系統(tǒng)中,進(jìn)程可以包含多個線程,這些線程可以按照與多用戶操作系統(tǒng)同時支持多進(jìn)程相同的方式同時運行。從本質(zhì)上講,多線程可以在一個進(jìn)程內(nèi)同時運行。這就是為什么線程有時候被當(dāng)成輕量級進(jìn)程的原因。多線程設(shè)計技術(shù)的優(yōu)點主要有下面四點:1)響應(yīng)能力。多線程處理一個交互應(yīng)用程序的時候,當(dāng)線程的一部分被阻塞的時候,

25、該應(yīng)用程序還能繼續(xù)運行,因此對用戶增強了響應(yīng)能力。2)資源共享。線程共享它們所屬進(jìn)程的內(nèi)存和資源。共享的好處就是一個應(yīng)用程序可以有多個擁有相同地址空間的不同線程在運行。3)節(jié)約內(nèi)存。為進(jìn)程的創(chuàng)建分配內(nèi)存和資源是很昂貴的開銷,因為線程共享它們所屬的進(jìn)程的資源,所以在創(chuàng)建和上下文轉(zhuǎn)換線程的時候就要節(jié)約很多。要去測量、比較創(chuàng)建以及管理進(jìn)程和線程之間的花費是很困難的,通常來說,創(chuàng)建和管理一個進(jìn)程的花費要比之下同意的操作大得多。4)多進(jìn)程結(jié)構(gòu)體系的利用。多進(jìn)程結(jié)構(gòu)體系因為可以讓進(jìn)程在不同的進(jìn)程中并行執(zhí)行而可以充分發(fā)揮多線程的優(yōu)點。在一個單線程結(jié)構(gòu)體系中,CPU在不同的線程之間快速轉(zhuǎn)換,讓線程看起來好像是

26、并行執(zhí)行的,但實際上在一個時刻中只有一個線程在執(zhí)行。多線程技術(shù)的應(yīng)用使得Android系統(tǒng)處理一些比較耗時的操作顯得如魚得水。用戶只會認(rèn)為當(dāng)前只有一個程序在運行,根本無法察覺到還有其他程序也在執(zhí)行,用戶的體驗度根本沒有絲毫的降低。說到多線程技術(shù),首先我們必須要明確多線程的原理,多線程并不代表多個線程在同一時刻執(zhí)行,線程之間是呈交替狀態(tài)執(zhí)行,只是這個交替的時間片段非常短暫,再加上CPU相當(dāng)高的執(zhí)行效率,使得線程之間的切換讓人察覺不到。再者CPU在同一時間只能處理一件事情,這樣情況下就造成很多線程同時運行的錯覺。應(yīng)用程序在采用了多線程技術(shù)后可以更充分的利用系統(tǒng)資源,不同于桌面端程序,手機自身的局限

27、性,使得手機應(yīng)用程序舉步維艱,采用多線程后,最大限度的利用CPU資源。屬于一個進(jìn)程的所有線路共享同一個內(nèi)存,這樣就解決了資源如何分配的問題。Thread類和Runnable接口是實現(xiàn)多線程的兩種主要方法。在Java中不能多繼承,所以這里使用Runnable接口。start()方法產(chǎn)生運行線程所必須的資源,調(diào)度線程執(zhí)行,并且調(diào)用線程的run()方法。在這時線程處于可運行態(tài)。sleep()方法使線程休眠,當(dāng)休眠的線程被喚醒時線程的狀態(tài)為可運行狀態(tài)。調(diào)用notify ()方法可將等待狀態(tài)的線程恢復(fù)到正常的運行狀態(tài)。詳細(xì)的線程狀態(tài)圖如圖2-3。圖2-3 線程狀態(tài)切換示意圖3 需求分析3.1 需求分析

28、隨著我國城市化進(jìn)程的快速發(fā)展,人們的出行越來越頻繁,公共交通工具成為生活中不可或缺的一部分。那么傳統(tǒng)的獲取出行線路信息的方式是大部分人乘坐公交時,都會習(xí)慣性的從自己所在的公交站牌處了解有關(guān)公交線路、沿途??康恼军c、發(fā)車時間和收車時間等基本信息。公交站牌所提供的信息是有限的,無法提供換乘的信息。隨著當(dāng)今信息技術(shù)的發(fā)展,網(wǎng)絡(luò)己經(jīng)成為了社會大眾不可或缺的渠道。乘客在出行前,可以通過網(wǎng)絡(luò)查詢公交信息的網(wǎng)站,了解應(yīng)當(dāng)怎么樣出行,應(yīng)該在哪個站點換乘,乘坐哪一條線路。但是相應(yīng)的問題也產(chǎn)生了,通過計算機瀏覽網(wǎng)頁的方式不夠靈活,尤其不方便的是在出行過程中查詢公交信息。隨著智能手機的大量普及和移動3G技術(shù)的發(fā)展,

29、人們不再需要通過計算機瀏覽網(wǎng)頁的方式查詢公交信息,人們只需要拿出你的智能手機輕松一點就可以快速獲得相應(yīng)的站點信息和站點附近的商業(yè)圈信息。“基于Android平臺的移動公交查詢系統(tǒng)”就是在這樣的背景下提出來的。 需求分析的目的是為了更好的滿足用戶的需求,我們需要確定系統(tǒng)應(yīng)具備什么樣的功能和性能,系統(tǒng)需要做什么。根據(jù)上面的文字?jǐn)⑹鑫覀兂醪酱_定了該系統(tǒng)應(yīng)包含手機客戶端、web管理端和服務(wù)器三大部分。3.1.1 系統(tǒng)用例圖 用例圖即為系統(tǒng)功能模型圖,展示用例之間的聯(lián)系要包括一般用戶、系統(tǒng)管理員兩種角色。根據(jù)不同的角色對系統(tǒng)有不同的需求。 一般用戶輸入注冊成功的用戶名和密碼后登錄系統(tǒng),可以搜索公交線路和

30、站點,同時也可以對自己的注冊的基本信息進(jìn)行維護(hù)。一般用戶需求用例圖如圖3-1所示。圖3-1 一般用戶用例圖 系統(tǒng)管理員主要對整個系統(tǒng)進(jìn)行管理。登錄系統(tǒng)后可以對普通用戶進(jìn)行管理,也可以對站點及線路進(jìn)行管理。系統(tǒng)管理員用例圖如圖3-2所示。圖3-2 系統(tǒng)管理員圖例3.1.2 功能需求 Android手機客戶端,是移動用戶在手機上操作系統(tǒng),主要有以下幾個功能模塊:個人信息管理、站點搜索、線路搜索等,如圖3-3所示。圖3-3 客戶端功能模塊圖 1)個人信息管理 Android手機用戶登錄系統(tǒng)進(jìn)行密碼的修改和用戶基本信息的維護(hù)。 2)線路搜索 公交的線路、站點和經(jīng)緯度已存在數(shù)據(jù)庫中,通過訪問數(shù)據(jù)庫,就可

31、以獲取到每條公交線路的每一個站點。手機客戶端登入系統(tǒng)后,選擇要查詢的線路,定位自己手持終端的位置,這樣就可以實現(xiàn)線路站點和自己位置的導(dǎo)航。 3)站點搜索 以自己的手持終端位置為中心點向附近輻射,搜索附近所有的站點信息,選擇站點,就可以輕松實現(xiàn)自己和站點間路徑搜索和導(dǎo)航。3.2 系統(tǒng)架構(gòu)設(shè)計 根據(jù)系統(tǒng)需求的分析移動公交查詢系統(tǒng)主要可以采用C/S架構(gòu)。一般手機用戶通過C/S(client/server)模式,使自己的手持android客戶端與服務(wù)器之間進(jìn)行數(shù)據(jù)交互。移動用戶通過基站獲取自己的位置信息,并將這些位置信息,發(fā)送給服務(wù)器,服務(wù)器就對這些請求做處理,反饋請求信息給手機客戶端,實現(xiàn)了手機端和

32、服務(wù)器之間的數(shù)據(jù)交互。在C/S模式中,客戶端向服務(wù)器發(fā)送數(shù)據(jù)請求,服務(wù)器接受來自客戶端的請求消息并處理它們,客戶端則使用服務(wù)器提供的服務(wù),兩者以同步或異步的方式。系統(tǒng)總體架構(gòu)主要包括了手機客戶端、服務(wù)器、Mysql數(shù)據(jù)庫。 在系統(tǒng)中,公交的線路、站點、經(jīng)緯度等基本信息己經(jīng)保存在數(shù)據(jù)庫中。我們可以訪問數(shù)據(jù)庫查詢每一條線路的每一個站點信息。然后對自己的手持終端進(jìn)行定位,這樣就可以輕松實現(xiàn)路線的導(dǎo)航。線路搜索模塊流程圖如圖3-4所示。圖3-4 搜索流程圖4公交查詢系統(tǒng)的設(shè)計與實現(xiàn)4.1 Android程序開發(fā) Android系統(tǒng)為開發(fā)者提供了豐富的可視化界面設(shè)計組件,包括菜單、對話框、按鈕、文本框等

33、,其中最主要的界面元素包括以下三類。 1)視圖組件(View:是基類Android.view.View的一個實例,用來存儲屏幕上特定矩形內(nèi)的布局和內(nèi)容屬性,由視圖又衍生出了一個子類Widgets(窗體控件),用來處理屏幕區(qū)域的測量和繪制,常用的Widget包括Text, EditText, Button,CheckBox和ScrollView等。2)視圖容器(ViewGroup:是基類Android.view.ViewGroup的一個實例,用來承載和管理一組下層的視圖和其他視圖組,通常稱為View的容器。3)布局管理:Android使用布局管理器來管理應(yīng)用程序中各用戶界面的組件,這樣做的好處是

34、可以避免因手機分辨率、尺寸等的差異導(dǎo)致編寫的應(yīng)用程序無法移植,因為布局管理器能根據(jù)運行平臺調(diào)整組件的大小。所有的布局管理器都是ViewGroup的子類,圖4.1表示布局管理器中各類的關(guān)系。圖4.1 Android布局管理器的類圖 1)LinearLayout(線性布局):該布局中元素之間成線性排列,常用的布局有水平布局和垂直布局。 2)RelativeLayout(相對布局):該布局中元素之間根據(jù)相對位置排列,即在指定一個元素位置時往往會以它的父元素或其它元素的位置作為參照,來決定當(dāng)前元素的位置,這種布局方式相對隨意,沒有規(guī)律性,但必須保證在使用之前其參照物己經(jīng)存在。 3)AbsoluteLa

35、yout(絕對布局):該布局中元素之間根據(jù)坐標(biāo)排列,即將整個手機劃分成坐標(biāo)系,通過指定坐標(biāo)系中的兩個偏移量來決定元素的位置。 4)FrameLayout(幀布局):該布局為每個加入的組件都創(chuàng)建了一個空白區(qū)域(一幀),這些幀會根據(jù)gravity屬性自動對齊,這樣會形成組件疊加的效果。 5)TableLayout(表格布局):該布局中元素之間的排列由表格決定,表格的行和列通過添加TableRow或其他組件來控制,通常加入一個TableRow或是一個組件都代表一行,表格的寬度取決于父容器的寬度,這種布局只是實現(xiàn)方式與表格類似,但元素之間并沒有實際的分界線。Android中提供了兩種方式來利用上面的組

36、件設(shè)計布局,一是在XML布局文件中通過設(shè)置XML屬性進(jìn)行控制,二是在Java程序中通過調(diào)用函數(shù)進(jìn)行控制,也可以將這兩種方法組合起來使用。Android推薦使用XML布局文件的方式來控制用戶界面的顯示,這樣做不僅簡單明了,還可以將視圖控制邏輯從代碼中剝離出來,放入一個單獨的文件中進(jìn)行控制,更好的體現(xiàn)了MVC原則。4.2 SQLite簡介SQLite數(shù)據(jù)庫中的結(jié)構(gòu)新建由以下四個部分組成:新建表:CREATE TABLE table_ name (column_ name1 data type, column_ name2 data type,),用來在SQLite數(shù)據(jù)庫中新建一張數(shù)據(jù)表。新建視圖:

37、CREATE VIEWdatabase nameview name AS select statement,用來在SQLite數(shù)據(jù)庫中新建一個視圖(虛擬表),該表以另一種方式表示一個或多個表中的數(shù)據(jù)。新建觸發(fā)器:CREATE TRIGGER trigger_name Database_eventON database_ nametable_ name Trigger_ action Database_ event: delete /insert /update /update of Trigger_ action:BEGIN select-statement/insert_ statement

38、 /update_ statement/delete_ statement END,用來在SQLite數(shù)據(jù)庫中新建一個觸發(fā)器,在用戶試圖對指定的表執(zhí)行指定的數(shù)據(jù)修改語句時自動執(zhí)行,其中觸發(fā)器是一種特殊的存儲過程。新建索引:CREATE INDEX index name ONdatabase nametable name,用來為指定表或視圖創(chuàng)建索引。 SQLite數(shù)據(jù)庫中的結(jié)構(gòu)刪除由以下四部分組成: 1)刪除表:DROP TABLEdatabase_nametable_name,用來刪除數(shù)據(jù)表及該表的全部索引。 2)刪除視圖:DROP VIEW view_name,用來刪除一個視圖。 3)刪除觸

39、發(fā)器:DROP TR工GGERdatabase_nametrigger_name,用來刪除一個觸發(fā)器。 4)刪除索引:DROP INDEXdatabase_nameindex_name用來刪除一個索引。SQLite數(shù)據(jù)庫中的數(shù)據(jù)操作分為增加、刪除、修改和查找四個部分,各個操作的主要語法如下:增加:INSERT INTO table namecolumnl,column2,. VALUES (valuel,value2,.),向SQLite數(shù)據(jù)庫的數(shù)據(jù)表中插入一行數(shù)據(jù)。刪除:DELETE FROM table name WHERE column name=some value,刪除SQLite數(shù)

40、據(jù)表中符合條件的數(shù)據(jù)。修改:UPDATE table name SET colume name=new value WHERE column name=some value,將SQLite數(shù)據(jù)表中符合條件的記錄修改為新的數(shù)據(jù)。查找:SELECT select list FROM table source WHERE search conditionGROUP BY group by_ expressionHAVING serch_ condition,查找SQLite數(shù)據(jù)表中符合條件的記錄。4.3 系統(tǒng)功能詳細(xì)設(shè)計與實現(xiàn) 1)地圖加載模塊 本系統(tǒng)所有的功能都是以百度地圖為基礎(chǔ),圍繞百度地圖展開

41、的。因此需要加載百度地圖。實現(xiàn)該模塊的部分代碼如下:;public class BaseMapDemo extends Activity final static String TAG = "MainActivity";private MapView mMapView = null;private MapController mMapController = null;MKMapViewListener mMapListener = null; Override public void onCreate(Bundle savedInstanceState) super.on

42、Create(savedInstanceState); /* * 使用地圖sdk前需先初始化BMapManager. * BMapManager是全局的,可為多個MapView共用,它需要地圖模塊創(chuàng)建前創(chuàng)建, * 并在地圖地圖模塊銷毀后銷毀,只要還有地圖模塊在使用,BMapManager就不應(yīng)該銷毀 */ DemoApplication app = (DemoApplication)this.getApplication(); if (app.mBMapManager = null) app.mBMapManager = new BMapManager(this); /* * 如果BMapMa

43、nager沒有初始化則初始化BMapManager */ app.mBMapManager.init(DemoApplication.strKey,new DemoApplication.MyGeneralListener(); /* * 由于MapView在setContentView()中初始化,所以它需要在BMapManager初始化之后 */ setContentView(R.layout.activity_main); mMapView = (MapView)findViewById(R.id.bmapView); /* * 獲取地圖控制器 */ mMapController = m

44、MapView.getController(); /* * 設(shè)置地圖是否響應(yīng)點擊事件 . */ mMapController.enableClick(true); /* * 設(shè)置地圖縮放級別 */ mMapController.setZoom(12); /* * 將地圖移動至指定點 * 使用百度經(jīng)緯度坐標(biāo),可以通過http:/ * 如果需要在百度地圖上顯示使用其他坐標(biāo)系統(tǒng)的位置,請發(fā)郵件至mapapi申請坐標(biāo)轉(zhuǎn)換接口 */ GeoPoint p ; double cLat = 39.945 ; double cLon = 116.404 ; Intent intent = getIntent(

45、); if ( intent.hasExtra("x") && intent.hasExtra("y") ) /當(dāng)用intent參數(shù)時,設(shè)置中心點為指定點 Bundle b = intent.getExtras(); p = new GeoPoint(b.getInt("y"), b.getInt("x"); else /設(shè)置中心點為天安門 p = new GeoPoint(int)(cLat * 1E6), (int)(cLon * 1E6); 2)站點搜索模塊 在百度地圖上實現(xiàn)站點搜索。實現(xiàn)該部

46、分功能部分代碼如下:;public class CloudSearchActivity extends Activity implements CloudListener MapView mMapView; Override protected void onCreate(Bundle icicle) super.onCreate(icicle); DemoApplication app = (DemoApplication)this.getApplication(); if (app.mBMapManager = null) app.mBMapManager = new BMapManage

47、r(this); app.mBMapManager.init(DemoApplication.strKey,new DemoApplication.MyGeneralListener(); setContentView(R.layout.lbssearch); CloudManager.getInstance().init(CloudSearchActivity.this); mMapView = (MapView)findViewById(R.id.bmapView); mMapView.getController().enableClick(true); mMapView.getContr

48、oller().setZoom(12); mMapView.setDoubleClickZooming(true); findViewById(R.id.regionSearch).setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) LocalSearchInfo info = new LocalSearchInfo();info.ak = "B266f735e43ab207ec152deff44fec8b";info.geoTableId = 31869;info.tag

49、s = "";info.q="天安門";info.region = "北京市";CloudManager.getInstance().localSearch(info););findViewById(R.id.nearbySearch).setOnClickListener(new OnClickListener() public void onClick(View v) NearbySearchInfo info = new NearbySearchInfo();info.ak = "D9ace96891048231e87

50、77291cda45ca0";info.geoTableId = 32038;info.filter="time:20130801,20130810";info.location = "116.403689,39.914957";info.radius = 30000;CloudManager.getInstance().nearbySearch(info);); 3)線路搜索 在地圖上創(chuàng)建站點路線后,通過遍歷方法可以實現(xiàn)路線搜索結(jié)果的顯示。實現(xiàn)該部分功能的部分代碼如下:;/* * 此demo用來展示如何進(jìn)行公交線路詳情檢索,并使用RouteO

51、verlay在地圖上繪制 * 同時展示如何瀏覽路線節(jié)點并彈出泡泡 * */public class BusLineSearchDemo extends Activity /UI相關(guān)Button mBtnSearch = null;Button mBtnNextLine = null;/瀏覽路線節(jié)點相關(guān)Button mBtnPre = null;/上一個節(jié)點Button mBtnNext = null;/下一個節(jié)點int nodeIndex = -2;/節(jié)點索引,供瀏覽節(jié)點時使用MKRoute route = null;/保存駕車/步行路線數(shù)據(jù)的變量,供瀏覽節(jié)點時使用private PopupO

52、verlay pop = null;/彈出泡泡圖層,瀏覽節(jié)點時使用private TextView popupText = null;/泡泡viewprivate View viewCache = null;private List<String> busLineIDList = null;int busLineIndex = 0;/地圖相關(guān),使用繼承MapView的MyBusLineMapView目的是重寫touch事件實現(xiàn)泡泡處理/如果不處理touch事件,則無需繼承,直接使用MapView即可 MapView mMapView = null;/ 地圖View/搜索相關(guān)MKSe

53、arch mSearch = null;/ 搜索模塊,也可去掉地圖模塊獨立使用protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);DemoApplication app = (DemoApplication)this.getApplication();setContentView(R.layout.buslinesearch);CharSequence titleLable="公交線路查詢功能"; setTitle(titleLable); /地圖初始化 mMapView = (MapView)findViewById(R.id.bmapView); mMapView.getController().enableClick(true); mMapView.getController().setZoom(12); busLineIDList = new Array

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論