版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
畢業(yè)設(shè)計說明書題目:基于安卓的公交客戶端的設(shè)計與實現(xiàn)產(chǎn)品設(shè)計工藝設(shè)計方案設(shè)計√類型:學(xué)生姓名:_______________________學(xué)號:___________________學(xué)院:___________軟件學(xué)院_____________專業(yè):_____軟件技術(shù)(軟件開發(fā)方向)___班級:______________學(xué)校指導(dǎo)教師:________企業(yè)指導(dǎo)教師:_____________________2016年03 月15日摘要在信息快速發(fā)展的今天,人們的出行變得越來越密切,所以在出行的時候借助一些地圖類的工具會特別的方便。畢竟在這個時代,幾乎人手一個手機(jī),于是就出現(xiàn)了各種各樣的出行類的app。但是外面這個多種類繁雜的app到底哪個好用呢?于是就出現(xiàn)了一款叫做伴你隨行的公交旅行軟件。它的主要功能是擁有實時定位功能,讓你不再擔(dān)心迷路。公交查詢功能可以讓你的出行不再是個難題,線路規(guī)劃功能讓你隨時隨地想去哪就去哪。還有一個比較實用性的功能就是周邊旅游功能。它可以通過服務(wù)器實時獲取最新的周邊信息,讓你的生活充滿了無限的樂趣。該系統(tǒng)是基于Android平臺的設(shè)計,其主要功能公交查詢實時地圖等是通過調(diào)用第三方API來實現(xiàn)的,使用第三方API的好處是第三方平臺都已經(jīng)將其方法分裝好了,用戶只需直接調(diào)用,然后進(jìn)行一些自己想要的操作與實現(xiàn)的功能就可以了。本次開發(fā)使用的工具是AndroidStudio,JAVAJDK。服務(wù)器采用第三方框架Bmob,使用Bmob的一大好處就是它已經(jīng)將網(wǎng)絡(luò)請求全部封裝好了,用戶只需要直接調(diào)用方法即可得到你想要的數(shù)據(jù),這樣極大地提高了開發(fā)的效率,讓開發(fā)人員節(jié)省了大量的時間和代碼量。關(guān)鍵詞:公交;地圖;旅游;安卓
目錄1.緒論 .緒論1.1系統(tǒng)開發(fā)與背景來到一個陌生的城市,如果想去一個地方,可以乘坐出租車但是價格相對較貴,最省錢的辦法應(yīng)該是坐公交車,當(dāng)然你說是走路最省錢的話我無話可說。但是對于一個陌生的城市我們并不了解,那么怎么才能查詢公交車信息呢?所以隨著移動應(yīng)用的飛速發(fā)展,掌上app成為了人們喜愛的一種方式。所以作為軟件開發(fā)方面的學(xué)子,有必要為城市的公共交通做出一份貢獻(xiàn)。1.2社會現(xiàn)狀城市公共交通是與人民群眾生產(chǎn)生活息息相關(guān)的重要基礎(chǔ)設(shè)施。改革開放以來,我國城市公共交通有了較快發(fā)展,但隨著經(jīng)濟(jì)社會發(fā)展和城鎮(zhèn)化進(jìn)程的加快,一些城市交通擁堵、群眾出行不便等問題日益突出,嚴(yán)重影響了城市發(fā)展和人民群眾生活水平的提高。優(yōu)先發(fā)展城市公共交通是提高交通資源利用效率,緩解交通擁堵的重要手段。為解決好城市交通問題,促進(jìn)城市健康發(fā)展,現(xiàn)就優(yōu)先發(fā)展城市公共交通提出以下意見:一、進(jìn)一步提高認(rèn)識我國土地資源稀缺,城市人口密集,群眾收入水平總體還不高,優(yōu)先發(fā)展公共交通符合城市發(fā)展和交通發(fā)展的實際,是貫徹落實科學(xué)發(fā)展觀和建設(shè)節(jié)約型社會的重要舉措。各地區(qū)和有關(guān)部門要進(jìn)一步提高認(rèn)識,確立公共交通在城市交通中的優(yōu)先地位,明確指導(dǎo)思想和目標(biāo)任務(wù),采取有力措施,加快發(fā)展步伐。要通過科學(xué)規(guī)劃和建設(shè),提高線網(wǎng)密度和站點覆蓋率,優(yōu)化運(yùn)營結(jié)構(gòu),形成干支協(xié)調(diào)、結(jié)構(gòu)合理、高效快捷并與城市規(guī)模、人口和經(jīng)濟(jì)發(fā)展相適應(yīng)的公共交通系統(tǒng)。要進(jìn)一步放開搞活公共交通行業(yè),完善支持政策,提高運(yùn)營質(zhì)量和效率,為群眾提供安全可靠、方便周到、經(jīng)濟(jì)舒適的公共交通服務(wù)。要充分發(fā)揮公共交通運(yùn)量大、價格低廉的優(yōu)勢,引導(dǎo)群眾選擇公共交通作為主要出行方式。二、充分發(fā)揮規(guī)劃調(diào)控作用(一)科學(xué)編制公共交通規(guī)劃。交通規(guī)劃是城市總體規(guī)劃的重要組成部分。城市人民政府要在對交通現(xiàn)狀、需求和發(fā)展前景進(jìn)行充分調(diào)查研究的基礎(chǔ)上,以公共交通為核心,通過編制實施城市綜合交通體系規(guī)劃、公共交通專項規(guī)劃和軌道交通建設(shè)規(guī)劃,科學(xué)配置和利用交通資源,建立以公共交通為導(dǎo)向的城市發(fā)展和土地配置模式。城市交通規(guī)劃要與城市總體布局和人口產(chǎn)業(yè)分布相協(xié)調(diào),確定發(fā)展戰(zhàn)略目標(biāo)、任務(wù)、有關(guān)技術(shù)和經(jīng)濟(jì)政策;綜合考慮各種交通方式、換乘樞紐配置,以及與對外交通的銜接,重點確定公共交通結(jié)構(gòu)、線網(wǎng)分布、場站布局、用地規(guī)模、建設(shè)計劃等。(二)保障規(guī)劃的編制和組織實施。城市人民政府要大力支持公共交通規(guī)劃編制工作,將規(guī)劃編制所需經(jīng)費(fèi)納入財政預(yù)算,確保編制任務(wù)的完成。要保持規(guī)劃的嚴(yán)肅性和穩(wěn)定性,保障規(guī)劃的組織實施。采取有力措施,切實防止和糾正違反規(guī)劃、侵占公共交通基礎(chǔ)設(shè)施及其建設(shè)用地的行為,保證優(yōu)先發(fā)展公共交通的需要。(三)建立健全法律法規(guī)和標(biāo)準(zhǔn)體系。要從實際出發(fā),借鑒國內(nèi)外優(yōu)先發(fā)展公共交通的成功經(jīng)驗,從規(guī)劃、建設(shè)、管理等方面,加快建立確保公共交通優(yōu)先發(fā)展的法律法規(guī)體系。要健全場站建設(shè)、車輛配備與更新、設(shè)施裝備、服務(wù)質(zhì)量等方面的技術(shù)標(biāo)準(zhǔn)體系。進(jìn)一步強(qiáng)化法律法規(guī)和標(biāo)準(zhǔn)的指導(dǎo)作用,促進(jìn)城市公共交通健康有序發(fā)展。1.3研究的內(nèi)容公交查詢系統(tǒng)是一款通過第三方地圖SDK獲取地圖信息的最新的移動應(yīng)用,本研究的目的在于為廣大出行的市民和旅客朋友提供便利的交通,還能為外出游玩的游客推薦一些好玩的值得去的景點,也能達(dá)到某種商業(yè)目的。研究的主要內(nèi)容包括以下幾個方面:安卓開發(fā)包括安卓的UI開發(fā)、移動端對于服務(wù)端的訪問。百度地圖API開發(fā)百度地圖SDK的調(diào)用、地圖功能的實現(xiàn)、路線規(guī)劃、公交查詢等方面。(3)BmobAPI開發(fā)BmobSDK的使用、客戶端與Bmob的通訊、添加數(shù)據(jù)到Bmob服務(wù)器、從Bmob服務(wù)器獲取數(shù)據(jù)。1.4文章的組織結(jié)構(gòu)文章的組成結(jié)構(gòu)安排如下:第一章緒論介紹了系統(tǒng)開發(fā)的背景與意義,對文章的研究內(nèi)容和組織進(jìn)行了闡述。第二章主要討論了系統(tǒng)的需求以及與實現(xiàn)相關(guān)的關(guān)鍵技術(shù)。第三章詳細(xì)說明了系統(tǒng)的業(yè)務(wù)建模與設(shè)計。對系統(tǒng)的用戶角色以及功能需求進(jìn)行了詳細(xì)的介紹。2.系統(tǒng)需求分析與關(guān)鍵技術(shù)隨著智能手機(jī)和3G、4G網(wǎng)絡(luò)的普及,基于移動端的公交查詢系統(tǒng)具備了非常完備的運(yùn)行平臺。從經(jīng)濟(jì)、技術(shù)以及運(yùn)營方面來分析,該系統(tǒng)開發(fā)成本低廉,容易實現(xiàn)。另外,本系統(tǒng)服務(wù)于各個城市的市民、全國各地旅游的游客,核心功能包括公交查詢、線路規(guī)劃等實用性功能。2.1可行性分析2.1.1經(jīng)濟(jì)可行性開發(fā)該系統(tǒng)所需的相關(guān)資料可以通過已存在的相關(guān)系統(tǒng)進(jìn)行調(diào)查和采集,所需的軟件系統(tǒng)和硬件平臺都易于獲取,開發(fā)成本很低,容易實現(xiàn),從經(jīng)濟(jì)角度來考慮,是可以正常運(yùn)行的。2.1.2技術(shù)可行性技術(shù)可行性主要考慮到現(xiàn)有的技術(shù)是否能夠順利的完成開發(fā)工作,軟件與硬件設(shè)施是否滿足開發(fā)需求。本系統(tǒng)采用的J2EE開發(fā)體系、AndroidSDK以及百度地圖SDK還有Bmob后端云都是開源體系??梢詮木W(wǎng)上下載相關(guān)內(nèi)容,易于獲得,并且網(wǎng)上有大量的案例、開發(fā)文檔和參考資料。當(dāng)前的計算機(jī)硬件配置也完全滿足開發(fā)的需求,因此技術(shù)上是絕對可行的。2.1.3運(yùn)營可行性本系統(tǒng)是全方位解決市民出行方面的問題。例如:公交查詢、線路規(guī)劃、周邊旅游等一系列出行問題的移動應(yīng)用軟件,非常具有實用價值。隨著“綠色出行、低碳生活”理念的深入人心,未來市民們出行的選擇會更多的偏向于公共交通,采用低碳環(huán)保的出行方式,例如公交車、地鐵等交通工具。一旦用戶量上來,附著在移動應(yīng)用上的廣告推送費(fèi)用是非??捎^的。2.2功能分析2.2.1客戶端功能客戶端主要面向的是用戶,主要完成實時地圖定位、公交查詢、線路規(guī)劃等操作。還可以進(jìn)行登錄操作,這樣就可以獲取用戶信息,進(jìn)行其他的操作。實時地圖定位用戶可以在主界面通過點擊進(jìn)入實時地圖定位界面,用戶可以通過點擊頁面上的三個按鈕進(jìn)行不同的操作。分別是定位到當(dāng)前位置、顯示交通狀況、切換圖層顯示。圖層顯示分為平面圖和衛(wèi)星圖,可以滿足不同用戶的不同需求。公交查詢同樣通過主界面點擊進(jìn)入公交查詢頁面,用戶通過輸入城市和公交車名字來獲取該趟車的站點信息,早晚班時間等相關(guān)信息。給用戶提供了便捷的服務(wù)同時還考慮了用戶的體驗感。線路規(guī)劃線路規(guī)劃界面也是采用主界面點擊事件來進(jìn)行跳轉(zhuǎn)的,用戶通過輸入目的地來進(jìn)行搜索,查詢結(jié)果包括駕車、步行和騎行三種方式,基本上涵蓋了所有用戶的需求。2.2.2服務(wù)端功能該系統(tǒng)的服務(wù)端是使用的目前比較流行的Bmob后端云來實現(xiàn)的。使用Bmob后端云技術(shù)的主要優(yōu)勢是簡單方便,開發(fā)人員只需要下載相應(yīng)的SDK導(dǎo)入jar包到工程中即可使用。具體操作是Bmob后端云會根據(jù)開發(fā)人員創(chuàng)建的java對象來自動創(chuàng)建數(shù)據(jù)庫表,然后利用對象進(jìn)行數(shù)據(jù)的增刪改查操作,方便快捷。開發(fā)人員進(jìn)行數(shù)據(jù)的管理可以登錄Bmob后端云的網(wǎng)站通過登陸之后進(jìn)入相應(yīng)的頁面進(jìn)行數(shù)據(jù)的操作,使用起來非常的方便快捷。2.3關(guān)鍵技術(shù)2.3.1百度地圖API百度地圖API是為開發(fā)者免費(fèi)提供的一套基于百度地圖的應(yīng)用接口,包括JavaScriptAPI、Web服務(wù)API、AndroidSDK、iosSDK、定位SDK等多種開發(fā)工具與服務(wù),提供基本地圖展現(xiàn)、搜索、定位、路線規(guī)劃、LBS云儲存與檢索等功能。開發(fā)人員只需注冊百度賬號,通過開發(fā)者認(rèn)證之后,創(chuàng)建一個項目獲取百度地圖的key即可。百度地圖API適用于PC端、移動端、服務(wù)端等多種設(shè)備,多種操作系統(tǒng)。百度移動版地圖SDK,分為Android版與Symbian版,為移動設(shè)備地圖應(yīng)用開發(fā)提供基本地圖、本地搜索、路線規(guī)劃、定位等服務(wù)。若用戶使用該套SDK,也需要先申請key。百度地圖定位SDK,與百度移動版地圖SDK相比,是以更小的體積提供給開發(fā)者,幫助開發(fā)者完成位置信息獲取與應(yīng)用開發(fā)的工具。百度地圖目前提供Android和Symbian版本,且開發(fā)者是不需要申請key就可使用。百度地圖車聯(lián)網(wǎng)API,是百度地圖于2012年6月推出的,為車聯(lián)網(wǎng)行業(yè)定制的一套API。提供地圖顯示、地址解析、位置描述、本地搜索、周邊搜索、駕車路徑規(guī)劃、信息發(fā)送、天氣、交通事件等多種服務(wù)。百度地圖LBS云,是百度地圖2012年8月底新推出的,也是在百度世界大會2012為開發(fā)者提供的”七大武器“之一,即百度地圖針對LBS開發(fā)者全新推出的服務(wù),借助百度云服務(wù)與云計算,通過地圖API,實現(xiàn)用戶的海量位置數(shù)據(jù)云存儲,同時,也可實現(xiàn)快速云檢索。LBS·云將位置數(shù)據(jù)存儲、空間檢索、地圖展現(xiàn)等任務(wù)一站式托管在百度云端,為開發(fā)者降低開發(fā)成本,有利于開發(fā)者提高開發(fā)效率。2.3.2BmobSDK對于很多Android/ios/wp個人移動開發(fā)者來說,開發(fā)一個具有網(wǎng)絡(luò)功能的應(yīng)用不是一件容易的事,不僅需要購買/租賃服務(wù)器,還必須掌握一門諸如Java/.net/php這類的服務(wù)器開發(fā)語言,每開發(fā)一款移動應(yīng)用程序,就必須開發(fā)維護(hù)對應(yīng)的服務(wù)器程序。這一切對于移動開發(fā)者來說,都是一個冗長的噩夢。如何讓移動開發(fā)者從繁瑣的機(jī)械勞動中解脫出來,將更多精力投入到移動應(yīng)用程序的創(chuàng)意研發(fā),從而不斷提升產(chǎn)品質(zhì)量呢?Bmob移動應(yīng)用云儲存平臺的誕生就很好地解決了以上難題。在Bmob平臺上,只需注冊一個帳號,成功后申請創(chuàng)建任意多個數(shù)據(jù)庫,獲得對應(yīng)的Key,下載對應(yīng)版本的SDK并將其嵌入到移動應(yīng)用中,便可以調(diào)用存取API,進(jìn)行數(shù)據(jù)的任意操作。有了Bmob,您在5分鐘內(nèi)就可以學(xué)會如何開發(fā)一個云存儲的移動應(yīng)用軟件,給應(yīng)用軟件快速添加一個安全靈活的后臺管理系統(tǒng),方便您瀏覽終端保存的各種信息。2.3.3AndroidSDKAndroid是谷歌(Google)公司推出的手機(jī)開發(fā)平臺。與iPhone相似,Android采用WebKit瀏覽器引擎,具備觸摸屏、高級圖形顯示和上網(wǎng)功能,用戶能夠在手機(jī)上查看電子郵件、搜索網(wǎng)址和觀看視頻節(jié)目等,比iPhone等其他手機(jī)更強(qiáng)調(diào)搜索功能,界面更強(qiáng)大,可以說是一種融入全部Web應(yīng)用的單一平臺。SDK:(SoftwareDevelopmentKit)軟件開發(fā)工具包一般都是一些軟件工程師為特定的軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應(yīng)用軟件時的開發(fā)工具的集合。安卓系統(tǒng)其吸引力之處在于它的卡放心和服務(wù)免費(fèi)性。Android對第三方軟件完全開放,這樣使得開發(fā)者在開發(fā)程序時擁有更大的自由度,同事與其他廠商不同。1.安裝下載好AndroidSDK后,開始安裝,AndroidSDK采用了Java語言,所以需要先安裝JDK5.0及以上版本。直接下載jdk安裝文件安裝更為方便。AndroidSDK不用安裝,下載后,直接解壓即可,將下載后的SDK的壓縮包解壓到適當(dāng)?shù)奈恢?,就這么簡單;SDK安裝OK。使用Eclipse進(jìn)行android應(yīng)用開發(fā)需要給Eclipse裝adt插件,這樣Eclipse就可以和androidsdk建立連接,可以在Eclipse中啟動android模擬器進(jìn)行程序調(diào)試等ADT插件安裝這里不再累贅,插件的安裝URL為:也可以下載adt的zip包安裝安裝完插件后,需要做一些簡單的配置:(1)在Eclipse中,選擇Window>Preference;(2)從左側(cè)的菜單中,選擇Android項;(3)設(shè)置SDKLocation,點Browse選擇SDK的安裝根目錄;(4)OK,完成。2.發(fā)展情況Android項目目前正在從手機(jī)運(yùn)營商、手機(jī)廠商、開發(fā)者和消費(fèi)者那里獲得大力支持。谷歌移動平臺主管安迪·魯賓(AndyRubin)表示,與軟件開發(fā)合作伙伴的密切接觸正在進(jìn)行中。從2007年11月開始,谷歌開始向服務(wù)提供商、芯片廠商和手機(jī)銷售商提供Android平臺,并組建“開放手機(jī)聯(lián)盟”,其成員超過30家。2014年3月10日早間消息,谷歌(1214.79,-4.82,-0.40%)Android、應(yīng)用和Chrome高級副總裁桑達(dá)爾·皮采(SundarPichai)上周六在SXSW互動大會上宣布,該公司很快就將推出針對可穿戴設(shè)備設(shè)計的AndroidSDK(軟件開發(fā)套件)。谷歌將在SDK中向開發(fā)者闡述谷歌對該市場運(yùn)作方式的愿景。從拉斯維加斯國際消費(fèi)電子展(CES)到巴塞羅那移動世界大會(MWC),可穿戴設(shè)備一直都是今年各大科技盛會的重要主題。可穿戴設(shè)備中那些體積小巧、性能強(qiáng)大的芯片將給Android帶來巨大提升,他對這一前景頗感振奮。這一新的SDK不僅是針對智能手表的。谷歌的職責(zé)是為開發(fā)者提供系統(tǒng)軟件和API(應(yīng)用編程接口),而具體針對哪種產(chǎn)品進(jìn)行開發(fā),則取決于開發(fā)者和合作伙伴。3.業(yè)務(wù)建模與設(shè)計本系統(tǒng)包括兩個部分,面向用戶的Android移動端,提供公交查詢、實時定位、線路規(guī)劃等功能;還有就是服務(wù)器端,本系統(tǒng)采用的是Bmob后端云技術(shù)作為后臺數(shù)據(jù)的提供,給客戶端提供數(shù)據(jù)的添加的查詢。3.1系統(tǒng)整體設(shè)計系統(tǒng)采用J2EE開發(fā)體系、百度地圖服務(wù)、Bmob后端云服務(wù)、主流移動端操作系統(tǒng)Android軟件開發(fā)技術(shù),充分考慮與其他信息系統(tǒng)的開放互聯(lián)、多源數(shù)據(jù)接口、數(shù)據(jù)之間的關(guān)聯(lián)以及網(wǎng)絡(luò)環(huán)境的開放性基礎(chǔ)上,繼承地圖SDK查詢功能和路徑規(guī)劃等相關(guān)功能。系統(tǒng)主要是Android客戶端來實現(xiàn)所有的操作,給用戶提供了公交查詢、線路規(guī)劃、周邊旅游推薦等功能。主要面向的是用戶,用戶無需登錄即可進(jìn)行查詢操作,也可以選擇登陸添加個人信息。Android客戶端采用J2EE平臺,使用Bmob后端云技術(shù)進(jìn)行數(shù)據(jù)的儲存與讀取,同時作為后臺服務(wù)器管理用戶數(shù)據(jù)。只要使用AndroidSDK開發(fā)平臺以及百度地圖API和Bmob后端云技術(shù)。3.2業(yè)務(wù)用例建模業(yè)務(wù)建模(BusinessModeling)是以軟件模型方式描述企業(yè)管理和業(yè)務(wù)所涉及的對象和要素、以及它們的屬性、行為和彼此關(guān)系,業(yè)務(wù)建模強(qiáng)調(diào)以體系的方式來理解、設(shè)計和構(gòu)架企業(yè)信息系統(tǒng)。3.2.1角色分析本系統(tǒng)中所涉及的角色主要是用戶,即使用該系統(tǒng)的人,他們可以利用移動客戶端進(jìn)行公交系統(tǒng)查詢、線路規(guī)劃服務(wù)、實時定位功能和周邊旅游服務(wù)。3.2.2客戶端用例分析客戶端主要具有的功能有公交查詢,實時地圖,路徑規(guī)劃,周邊旅游和登錄注冊功能,具體用例如圖3.1所示。
圖3.1客戶端用例分析圖3.3業(yè)務(wù)流程建模3.3.1周邊旅游信息更新周邊旅游服務(wù)是根據(jù)你不同的地理位置向用戶實時推送一些附近的值得去的地方。用戶需要手動修改自己所處的城市位置來更新顯示列表。因為每次都去服務(wù)器獲取數(shù)據(jù)的話,對于內(nèi)存的消耗是很大的,服務(wù)器的壓力也會隨之變大。其更新的互動見圖3.2所示。圖3.2周邊旅游用例分析圖3.3.2地圖功能查詢地圖功能的查詢需要打開GPS進(jìn)行精準(zhǔn)的獲取當(dāng)前位置。地圖的查詢是通過請求百度地圖的服務(wù)器返回數(shù)據(jù)顯示。詳情見圖3.3所示。圖3.3地圖查詢功能用例分析圖3.4系統(tǒng)數(shù)據(jù)庫設(shè)計基于安卓的公交查詢系統(tǒng)主要是通過調(diào)用第三方API進(jìn)行數(shù)據(jù)的查詢,所以該功能不需要實現(xiàn)數(shù)據(jù)庫的創(chuàng)建,但是在周邊旅游功能中的數(shù)據(jù)來自于服務(wù)器。為了減輕服務(wù)端的壓力,我們會將用戶上一次訪問的數(shù)據(jù)進(jìn)行緩存到本地,采用SQLite本地數(shù)據(jù)庫來緩存。這樣用戶在新打開程序的情況下不至于每次都采用網(wǎng)絡(luò)請求,還有在用戶在網(wǎng)絡(luò)連接異常的時候可以顯示上一次的數(shù)據(jù)。3.4.1SQLite本地數(shù)據(jù)庫緩存的創(chuàng)建以下列出周邊旅游表的數(shù)據(jù)庫創(chuàng)建代碼。createtabletravel( travel_titlevarchar(40), travel_contentvarchar(200), travel_authorvarchar(20), travel_datedate, travel_picvarchar(100),--存儲圖片路徑 travel_content_picvarchar(100)--存儲圖片路徑)以下列出公告信息表的數(shù)據(jù)庫創(chuàng)建代碼。createtablenotice( notic_titlevarchar(40), notic_contentvarchar(200), notic_authorvarchar(20), notic_datedate, notic_picvarchar(100),--存儲圖片路徑 notic_content_picvarchar(100)--存儲圖片路徑)4.系統(tǒng)實現(xiàn)及應(yīng)用4.1客戶端4.1.1客戶端主要功能Android客戶端中的實時地圖功能,用戶可以通過右上方的三個按鈕來進(jìn)行相應(yīng)的操作,從上到下分別為:實時定位、切換衛(wèi)星/平面圖和顯示或關(guān)閉交通狀況。具體情況如圖4.1所示。圖4.1實時地圖功能圖Android客戶端中的公交查詢功能的具體操作是在屏幕上方第一個輸入框輸入城市名,第二個輸入框輸入相應(yīng)的公交路線點擊查詢按鈕即可在地圖上顯示相應(yīng)的具體的公交線路圖,用戶還可以點擊線路按鈕跳轉(zhuǎn)頁面查看該路公交車所有的站點名稱,詳情如圖4.2所示。圖4.2公交查詢功能圖Android客戶端中的地圖線路規(guī)劃功能:用戶通過在屏幕上方的三個輸入框內(nèi)分別輸入城市名、起點名和終點名即可。然后在輸入框下方四個按鈕選擇需要的路徑規(guī)劃類型即可顯示對應(yīng)的線路詳情,具體操作顯示如圖4.3所示。圖4.3線路規(guī)劃功能截圖4.1.2調(diào)用百度地圖SDK主要代碼通過調(diào)用第三方百度地圖SDK來顯示地圖和進(jìn)行相應(yīng)的地圖操作。主要是通過清單文件注冊添加百度地圖開發(fā)平臺提供的key來進(jìn)行驗證,代碼如下:<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="UWb4dz9lC8rIaSiG8Ii0tslUh5qKgfQB"/>開啟定位服務(wù)通過在清單文件中添加服務(wù)來實現(xiàn),代碼如下:<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote">
</service>下面是實時地圖界面的代碼:publicclassMapActivityextendsAppCompatActivity{
BaiduMapbaiduMap;
MapViewmapView;
MyViewmv;
ImageViewshow,close;
//定位
privateLocationClientlocationClient=null;
privatestaticfinalintUPDATE_TIME=5000;
//privatestaticintLOCATION_COUTNS=0;
privatedoublelat;
privatedoublelng;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext());//初始化
setContentView(R.layout.activity_map);
//初始化iamgeView組件
show=(ImageView)findViewById(R.id.show);
close=(ImageView)findViewById(R.id.close);
//自定義actionBar
mv=(MyView)findViewById(R.id.mv);
mv.setTitle("實時地圖");
mv.isHiddenEdit(true);
mv.setBackListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
MapActivity.this.finish();
}
});
//得到地圖
mapView=(MapView)findViewById(R.id.mapView);
baiduMap=mapView.getMap();//得到地圖對象
baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);//平面圖
//定位
locationClient=newLocationClient(this);
//設(shè)置定位條件
LocationClientOptionoption=newLocationClientOption();
option.setOpenGps(true);//是否打開GPS
option.setCoorType("gcj02");//設(shè)置返回值的坐標(biāo)類型。
option.setPriority(LocationClientOption.NetWorkFirst);//設(shè)置定位優(yōu)先級
option.setProdName("Bus");//設(shè)置產(chǎn)品線名稱。強(qiáng)烈建議您使用自定義的產(chǎn)品線名稱,方便我們以后為您提供更高效準(zhǔn)確的定位服務(wù)。
option.setScanSpan(UPDATE_TIME);//設(shè)置定時定位的時間間隔。單位毫秒
locationClient.setLocOption(option);
//注冊位置監(jiān)聽器
locationClient.registerLocationListener(newBDLocationListener(){
@Override
publicvoidonReceiveLocation(BDLocationlocation){
//TODOAuto-generatedmethodstub
if(location==null){
return;
}
lat=location.getLatitude();
lng=location.getLongitude();
System.out.println(lat+"、"+lng);
}
});
}
publicvoidloc(Viewview){
//定位到當(dāng)前位置
if(locationClient==null){
return;
}
if(locationClient.isStarted()){
locationClient.stop();
}else{
locationClient.start();
baiduMap.setMyLocationEnabled(true);//開啟定位
MyLocationDatalocationData=newMyLocationData.Builder()
.latitude(30.770069)
.longitude(114.210569)
.build();
baiduMap.setMyLocationData(locationData);
baiduMap.setMyLocationConfigeration(
newMyLocationConfiguration(
MyLocationConfiguration.LocationMode.FOLLOWING,true,null));
MapStatusUpdatemsu1=MapStatusUpdateFactory.zoomTo(17);
baiduMap.setMapStatus(msu1);//設(shè)置地圖等級為15級
LatLnglal=newLatLng(30.770069,114.210569);
MapStatusUpdatemsu2=MapStatusUpdateFactory.newLatLng(lal);
baiduMap.animateMapStatus(msu2);//動畫效果
locationClient.requestLocation();
}
}
publicvoidchange(Viewview){
//更換顯示模式
if(baiduMap.getMapType()==BaiduMap.MAP_TYPE_NORMAL){
baiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);//設(shè)置為衛(wèi)星圖
}elseif(baiduMap.getMapType()==BaiduMap.MAP_TYPE_SATELLITE){
baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
}
}
publicvoidshow_traffic(Viewview){
//顯示交通狀況
baiduMap.setTrafficEnabled(true);//顯示交通狀況
show.setVisibility(View.INVISIBLE);
close.setVisibility(View.VISIBLE);
}
publicvoidclose_traffic(Viewview){
//顯示交通狀況
baiduMap.setTrafficEnabled(false);//顯示交通狀況
close.setVisibility(View.INVISIBLE);
show.setVisibility(View.VISIBLE);
}
@Override
protectedvoidonResume(){
super.onResume();
mapView.onResume();
}
@Override
protectedvoidonDestroy(){
super.onDestroy();
if(locationClient!=null&&locationClient.isStarted()){
locationClient.stop();
locationClient=null;
}
}
}4.1.3通過類管理器來實現(xiàn)雙擊返回鍵退出整個程序?qū)⒎椒ǚ庋b好了之后,只需在每個activity中調(diào)用ActivityManager.getInstance().addActivity();方法即可,然后在退出程序界面調(diào)用ActivityManager.getInstance().exit();即可實現(xiàn)該功能。具體代碼如下:publicclassActivityManager{
privateList<Activity>activityList=newLinkedList<Activity>();
privatestaticActivityManagerinstance;
publicActivityManager(){
//
}
//單例模式中獲取唯一的MyApplication實例
publicstaticActivityManagergetInstance(){
if(null==instance){
instance=newActivityManager();
}
returninstance;
}
//將activity添加到容器
publicvoidaddActivity(Activityactivity){
activityList.add(activity);
}
//遍歷所有activity并finish
publicvoidexit(){
for(Activityactivity:activityList){
activity.finish();
}
System.exit(0);
}
}4.2服務(wù)端為了降低開發(fā)成本,本系統(tǒng)采用第三方Bmob作為服務(wù)器來作為數(shù)據(jù)的提供源,使用起來簡單方便、快捷高效,不用考慮服務(wù)器的成本。4.2.1調(diào)用第三方BmobAPI使用BmobAPI作為服務(wù)器主要是通過導(dǎo)入jar包到工程,然后調(diào)用其方法進(jìn)行數(shù)據(jù)的增刪改查即可。具體操作代碼如下:publicclassRimTravelActivityextendsActivity{
MyViewmv;
ListViewlv_travel;
TravelAdapteradapter;
ArrayList<HashMap<String,Object>>datas;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_travel);
mv=(MyView)findViewById(R.id.mv);
mv.setTitle("周邊旅游");
mv.isHiddenEdit(true);
View.OnClickListenerlistener=newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
RimTravelActivity.this.finish();
}
};
mv.setBackListener(listener);
datas=newArrayList<>();
initDatas();
lv_travel=(ListView)findViewById(R.id.lv_travel);
adapter=newTravelAdapter(this,datas);
lv_travel.setAdapter(adapter);
lv_travel.setOnItemClickListener(newAdapterView.OnItemClickListener(){
@Override
publicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid){
//通過意圖跳轉(zhuǎn)傳遞參數(shù)
Intentit=newIntent(RimTravelActivity.this,TravelDetailsActivity.class);
it.putExtra("title",datas.get(position).get("title").toString());
it.putExtra("content",datas.get(position).get("content").toString());
it.putExtra("date",datas.get(position).get("date").toString());
startActivity(it);
}
});
}
//加載數(shù)據(jù)>從網(wǎng)絡(luò)獲取
publicvoidinitDatas(){
BmobQuery<TravelInfo>bmobQuery=newBmobQuery<TravelInfo>();
bmobQuery.findObjects(this,newFindListener<TravelInfo>(){
@Override
publicvoidonSuccess(List<TravelInfo>list){
//查詢成功
for(TravelInfotravelInfo:list){
//迭代輸出
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國氧化鋯砂輪行業(yè)發(fā)展形勢與需求規(guī)模預(yù)測報告
- 2022年大學(xué)中醫(yī)學(xué)專業(yè)大學(xué)物理下冊期中考試試題-附解析
- 運(yùn)輸公司安全管理制度與員工守則
- 2022年大學(xué)預(yù)防醫(yī)學(xué)專業(yè)大學(xué)物理下冊期中考試試題A卷-含答案
- 2022年大學(xué)力學(xué)專業(yè)大學(xué)物理二月考試題D卷-含答案
- 2022年大學(xué)森林資源專業(yè)大學(xué)物理下冊期中考試試題A卷-附解析
- C卷土木工程制圖試題及答案
- 北師大版七年級數(shù)學(xué)上冊教材同步課后習(xí)題答案
- 精神衛(wèi)生護(hù)理會診制度研究
- 2022年大學(xué)天文學(xué)專業(yè)大學(xué)物理下冊開學(xué)考試試題-附答案
- 技術(shù)顧問聘書(通用7篇)
- 穿無菌衣戴無菌手套(課堂)課件
- 胃早癌的簡述課件
- 毛細(xì)管電泳檢測糖化血紅蛋白課件
- 核心素養(yǎng)下的道德與法治課教學(xué)課件
- 中學(xué)生良好學(xué)習(xí)習(xí)慣養(yǎng)成教育課件
- 漢語普通話前后鼻音區(qū)分考試題庫(200題版)
- 四年級上冊語文老師家長會
- 12-14mm帶壓開孔器操作說明書
- 初中語文 九年級 君子自強(qiáng)不息 練習(xí)
- 安全培訓(xùn)教育計劃表模板范本
評論
0/150
提交評論