![本科畢業(yè)論文--安卓公交查詢系統_第1頁](http://file4.renrendoc.com/view/e37eb1a0f8bdd25c671eabba500f11ce/e37eb1a0f8bdd25c671eabba500f11ce1.gif)
![本科畢業(yè)論文--安卓公交查詢系統_第2頁](http://file4.renrendoc.com/view/e37eb1a0f8bdd25c671eabba500f11ce/e37eb1a0f8bdd25c671eabba500f11ce2.gif)
![本科畢業(yè)論文--安卓公交查詢系統_第3頁](http://file4.renrendoc.com/view/e37eb1a0f8bdd25c671eabba500f11ce/e37eb1a0f8bdd25c671eabba500f11ce3.gif)
![本科畢業(yè)論文--安卓公交查詢系統_第4頁](http://file4.renrendoc.com/view/e37eb1a0f8bdd25c671eabba500f11ce/e37eb1a0f8bdd25c671eabba500f11ce4.gif)
![本科畢業(yè)論文--安卓公交查詢系統_第5頁](http://file4.renrendoc.com/view/e37eb1a0f8bdd25c671eabba500f11ce/e37eb1a0f8bdd25c671eabba500f11ce5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章緒論第3章技術背景介紹3.1GPS3.1.1全球定位系統(英語:GlobalPositioningSystem,通常簡稱GPS),又稱全球衛(wèi)星定位系統,是一個中距離圓型軌道衛(wèi)星導航系統。它可以為地球表面絕大部分地區(qū)(98%)提供準確的定位、測速和高精度的時間標準。系統由美國國防部研制和維護,可滿足位于全球任何地方或近地空間的軍事用戶連續(xù)精確的確定三維位置、三維運動和時間的需要。該系統包括太空中的24顆GPS衛(wèi)星;地面上的1個主控站、3個數據注入站和5個監(jiān)測站及作為用戶端的GPS接收機。最少只需其中3顆衛(wèi)星,就能迅速確定用戶端在地球上所處的位置及海拔高度;所能收聯接到的衛(wèi)星數越多,解碼出來的位置就越精確。該系統由美國政府于1970年代開始進行研制并于1994年全面建成。使用者只需擁有GPS接收機即可使用該服務,無需另外付費。GPS信號分為民用的標準定位服務(SPS,StandardPositioningService)和軍規(guī)的精確定位服務(PPS,PrecisePositioningService)兩類。由于SPS無須任何授權即可任意使用,原本美國因為擔心敵對國家或組織會利用SPS對美國發(fā)動攻擊,故在民用訊號中人為地加入選擇性誤差(即SA政策,SelectiveAvailability)以降低其精確度,使其最終定位精確度大概在100米左右;軍規(guī)的精度在十米以下。2000年以后,克林頓政府決定取消對民用訊號的干擾。因此,現在民用GPS也可以達到十米左右的定位精度。GPS系統擁有如下多種優(yōu)點:使用低頻訊號,縱使天候不佳仍能保持相當的訊號穿透性;全球覆蓋(高達98%);三維定速定時高精度;快速、省時、高效率;應用廣泛、多功能;可移動定位;不同于雙星定位系統,使用過程中接收機不需要發(fā)出任何信號增加了隱蔽性,提高了其軍事應用效能。3.1.GPS系統主要由空間星座部分、地面監(jiān)控部分和用戶設備部分組成??臻g星座部分GPS衛(wèi)星星座由24顆衛(wèi)星組成,其中21顆為工作衛(wèi)星,3顆為備用衛(wèi)星。24顆衛(wèi)星均勻分布在6個軌道平面上,即每個軌道面上有4顆衛(wèi)星。衛(wèi)星軌道面相對于地球赤道面的軌道傾角為55°,各軌道平面的升交點的赤經相差60°,一個軌道平面上的衛(wèi)星比西邊相鄰軌道平面上的相應衛(wèi)星升交角距超前30°。這種布局的目的是保證在全球任何地點、任何時刻至少可以觀測到4顆衛(wèi)星。GPS衛(wèi)星是由洛克菲爾國際公司空間部研制的,衛(wèi)星重774kg,使用壽命為7年。衛(wèi)星采用蜂窩結構,主體呈柱形,直徑為1.5m。衛(wèi)星兩側裝有兩塊雙葉對日定向太陽能電池帆板(BLOCKI),全長5.33m接受日光面積為7.2。對日定向系統控制兩翼電池帆板旋轉,使板面始終對準太陽,為衛(wèi)星不斷提供電力,并給三組15Ah鎳鎘電池充電,以保證衛(wèi)星在地球陰影部分能正常工作。在星體底部裝有12個單元的多波束定向天線,能發(fā)射張角大約為30度的兩個L波段(19cm和24cm波)的信號。在星體的兩端面上裝有全向遙測遙控天線,用于與地面監(jiān)控網的通信。此外衛(wèi)星還裝有姿態(tài)控制系統和軌道控制系統,以便使衛(wèi)星保持在適當的高度和角度,準確對準衛(wèi)星的可見地面。由GPS系統的工作原理可知,星載時鐘的精確度越高,其定位精度也越高。早期試驗型衛(wèi)星采用由霍普金斯大學研制的石英振蕩器,相對頻率穩(wěn)定度為/秒。誤差為14m。1974年以后,GPS衛(wèi)星采用銣原子鐘,相對頻率穩(wěn)定度達到/秒,誤差8m。1977年,BOKCKII型采用了馬斯頻率和時間系統公司研制的銫原子鐘后相對穩(wěn)定頻率達到/秒,誤差則降為2.9m。1981年,休斯公司研制的相對穩(wěn)定頻率為/秒的氫原子鐘使BLOCKIIR型衛(wèi)星誤差僅為1m。地面監(jiān)控部分地面監(jiān)控部分主要由1個主控站(MasterControlStation,簡稱MCS)、4個地面天線站(GroundAntenna)和6個監(jiān)測站(MonitorStation)組成。主控站位于美國科羅拉多州的謝里佛爾空軍基地,是整個地面監(jiān)控系統的管理中心和技術中心。另外還有一個位于馬里蘭州蓋茨堡的備用主控站,在發(fā)生緊急情況時啟用。注入站目前有4個,分別位于南太平洋馬紹爾群島的瓜加林環(huán)礁,大西洋上英國屬地阿森松島,英屬印度洋領地的迪戈加西亞島和位于美國本土科羅拉多州的科羅拉多斯普林斯。注入站的作用是把主控站計算得到的衛(wèi)星星歷、導航電文等信息注入到相應的衛(wèi)星。注入站同時也是監(jiān)測站,另外還有位于夏威夷和卡納維拉爾角2處監(jiān)測站,故監(jiān)測站目前有6個。監(jiān)測站的主要作用是采集GPS衛(wèi)星數據和當地的環(huán)境數據,然后發(fā)送給主控站。用戶設備部分用戶設備主要是GPS接收機,主要作用是從GPS衛(wèi)星收到信號并利用傳來的信息計算用戶的三維位置及時間。3.1.精確定時:廣泛應用在天文臺、通信系統基站、電視臺中工程施工:道路、橋梁、隧道的施工中大量采用GPS設備進行工程測量勘探測繪:野外勘探及城區(qū)規(guī)劃中都有用到導航:武器導航:精確制導導彈、巡航導彈車輛導航:車輛調度、監(jiān)控系統船舶導航:遠洋導航、港口/內河引水飛機導航:航線導航、進場著陸控制星際導航:衛(wèi)星軌道定位個人導航:個人旅游及野外探險定位:車輛防盜系統手機,PDA,PPC等通信移動設備防盜,電子地圖,定位系統兒童及特殊人群的防走失系統精準農業(yè):農機具導航、自動駕駛,土地高精度平整授時:用于給電信基站、電視發(fā)射站等提供精確同步時鐘源3.1.4隨著中國國民經濟的快速增長的西部大開發(fā)的實施,我省的高等級公路建設迎來前所末有的發(fā)展機遇,這就對勘測設計提出了更高的要求,隨著公路設計行業(yè)軟件技術和硬件設備的發(fā)展,公路設計已實現CAD化,有些軟件本身還要求提供地面數字化測繪產品的支持;建立勘測、設計、施工、后期管理一體化的數據鏈,減少數據轉抄、輸入等中間環(huán)節(jié),是公路勘測設計“內外業(yè)一體化”的要求,也是影響高等級公路設計技術發(fā)展的“瓶頸”所在。目前公路勘測中雖已采用電子全站儀等先進儀器設備,但常規(guī)測量方法受橫向通視和作業(yè)條件的限制,作業(yè)強度大,且效率低,大大延長了設計周期??睖y技術的進步在于設備引進和技術改造,在目前的技術條件下引入GPS技術應當是首選。3.2Android平臺Android是一個移動設備的軟件平臺,是由Linux+Java構成的開源軟件,它提供包括SDK、KeyApps、Middleware、LinuxKernel四個部分在內的全套手機軟件方案。它開放了基于Linux內核以上的開發(fā)工具,從而保證了內容的可移植性和多樣性。Android平臺為我們開發(fā)應用程序提供了一套很好的框架,我們可以在這個平臺的基礎上開發(fā)不同的應用程序,也可以開發(fā)新的組件供應用程序調用[1]。3.2.Dalvik虛擬:Android采用的Java虛擬機是自主開發(fā)的代號為Dalvik的虛擬機技術,在保證API方面兼容的同時Dalvik針對移動手機進行了大幅優(yōu)化,占用資源更小,運行效率更高。內嵌瀏覽器:基于開源的瀏覽器網頁排版引擎WebKit。優(yōu)化的圖形:強大的自定義二維圖形庫?;贠penGLES1.O標準的3D圖形功能,在移動3D開發(fā)中有著至關重要的地位。SQLite數據庫:SQLitet提供結構化的數據存儲。它是一款輕型免費的且開源的數據庫,它的設計目標是嵌入式的,它占用的資源非常低、需要的內存空間少、處理速度比較快和支持事務處理功能等。多媒體支持:支持各種通用的音視頻和靜態(tài)圖像格式,如MP3、JPG、PNG等。OpenCore是Android多媒體框架的核心,所有Android平臺的音視頻采集,播放的操作都是通過它來實現的。通過OpenCore,程序員可以方便快速的開發(fā)出想要的多媒體應用程序。GSM技術:(依賴硬件)GlobalSystemforMobileCommunications,全球移動通訊系統,俗稱“全球通”,是第二代移動通信技術,其開發(fā)El的是讓傘球各地可以共同使用一個移動電話網絡標準,讓用戶使_一部手機就能行遍全球。藍牙,EDGE,3G,andWiFi是一種短距離的無線連接技術,在短距離內可以實現話音和數據的無線傳輸。EDGE(EnhaIlcedDataRateforGSMEvolution),是增強型數據速率GSM演進技術。Camera,GPS,compass,andaccelerometer:(依賴硬件)GPS(GlobalPositioningSystem)ItTI馴全球定位系統。它是一個由覆蓋全球的24顆1J星組成的衛(wèi)星系統。Compass是個開放源代碼的JAVA搜索引擎框架。強大的開發(fā)環(huán)境:包括一個設備模擬器,調試工具,內存和性能檢測,以及EclipseIDE的開發(fā)插件。Eclipse是個集成開發(fā)環(huán)境[2]。3.2.Android的架構是Linux內核、C/C++函數庫、Dalvik虛擬機、應用框架以及關鍵應用程序構成的,如圖2-1。通過編譯基于框架的應用程序可以降低開發(fā)負荷。應用軟件原則上是在DalvikVM上運行的。圖3-1Android架構圖Android平臺內包含一些關鍵應用程序,如郵件收發(fā)客戶端程序、短信收發(fā)程序、日歷和網頁瀏覽器等,開發(fā)者可以在其平臺上開發(fā)更多有特色的應用程序。開發(fā)語言是Java。Android應用程序的開發(fā)基于框架和組件。Android本身已在其框架中提高了許多的組件供應用程序調用,當然開發(fā)者也開放新的組件,并將組件放入應用程序框架中,以供自己和其它應用程序調用。Android應用程序框架之下是一套C/C++函數庫,它們服務于Android應用程序組件,其功能通過組件間接提供給開發(fā)者。這些函數庫包括:標準C函數庫、媒體功能庫、瀏覽器引擎、2D和3D圖形庫、基于WEB應用的的安全協議SSL、用于點陣和矢量字體渲染的FreeType以及SQLite引擎等。Android的Java程序運行環(huán)境包含一組Java核心函數庫及Dalvik虛擬機,它們有效地優(yōu)化了Java程序的運行過程。所有的Android應用都運行在它自己的進程里,該進程是一個Dalvik虛擬機的實例,Dalvik被設計成能在一臺設備上高效的運行多個虛擬機實例。Dalvik虛擬機的可執(zhí)行文件被封裝成Dalvik可執(zhí)行格式(.dex)。這是被優(yōu)化過的最小內存依賴的格式。Java編譯器(dx工具)將注冊了的和運行時用到的類編譯成.dex格式。Dalvik虛擬機依賴于底層Linux內核提供的功能,如線程機制,和內存管理機制等。Android系統平臺是基于優(yōu)化了的Linux內核,是其系統平臺的核心。它提供諸如內存管理、進程管理、設備驅動等服務,同時也是手機軟硬件的連接層,提供了一個屏蔽層用于屏蔽硬件和上層軟件。3.2.對于一個Android應用程序來說,是由Activity、IntentReceiver、Service、ContentProvider四部分組成,但并不是每一個Android應用程序都必須由這四部分組成。在應用程序中使用時,需要在配置文件AndroidMainfest.xml中進行配置。這個配置文件是每個Android應用程序所必需的,用于定義應用程序的組件、組件的功能以及必要條件等。Activity是構成應用程序中最重要的構造塊,在Android應用程序中,幾乎都是通過Activity來與用戶進行交互,所以Activity主要負責的就是創(chuàng)建與用戶進行交互的顯示窗口,你可以在這些窗口里通過調用setContentView(View)方法來顯示你自己的用戶界面。1.活動生命周期:活動(Activity)在系統中以活動棧的形式進行管理。當一個新的活動啟動后,被放到了棧項,成為了運行活動,而新活動之前的活動在活動棧里總位于新活動之下,直到新的活動退出才重新回到前臺。圖3.2Activity狀態(tài)變換路徑圖從圖2-2可以看出,Activity有三個關鍵的循環(huán):(1)活動的整個生命期:從首次調用onCreate(Bundle)開始,到最終調用onDestroyO結束。在onCreate()中進行所有初始化,在onDestroyO時進行清理工作,釋放資源。(2)活動的可見生命期:從調用onStart()開始,到onStop()被調用為止。在這段時間內,即使活動不與用戶進行交互,用戶也可以在屏幕上看到它。在這兩個方法調用之間,可以維護活動顯示給用戶的資源。onStart()和onStop()方法可以多次調用,因為活動隨時可以在可見和隱藏之間進行轉換。(3)活動的后臺生命期:從調用onResume()開始,到onPause()被調用為止。在這段時間內活動處于其它所有活動之前,并與用戶進行交互。一個活動可以不斷在resumed狀態(tài)和paused狀態(tài)之間變換[4]。2.活動之間的切換:Android使用了Intent類來實現活動之間的切換工作。Intent負責對應用中一次操作的動作、動作涉及的數據和附加數據進行描述。根據Intent的描述,負責找到對應的組件,將Intent傳遞給調用的組件并完成組件的調用。因此,Intent起著一種媒體中介的作用,專門提供組件互相調用的相關信息,實現調用者與被調用者之間的解耦。在應用中,我們可以以兩種形式來使用Intent:直接Intent,指定了component屬性的Intent,通過指定具體的組件類,通知應用啟動對應的組件。間接Intent,沒有指定comonent屬性的Intent,則需要包含足夠的信息,這樣系統才能根據這些信息,在所有的可用組件中,確定滿足此Intent的組件。IntentReceivert是用于對外部事件的響應,當外部事件發(fā)生時,會使用NotificationManager通知用戶。當一個IntentReceiver被觸發(fā)時,系統會在需要的時候啟動對應的應用程序。如在本系統中,當用戶正在其它界面進行操作時,有好友發(fā)送消息過來,就會以通知的形式發(fā)送到當前界面的正上方來通知用戶。各種應用還可以通過使用Context.broadcastIntent()將它們的IntentReceiver廣播給其它的應用程序,實現應用之間的通訊。Service是提供連續(xù)信息的應用程序。它是運行于應用程序后臺的服務,在用戶進行其它活動的時候,這個服務將一直運行在基于Android平臺的即時通訊系統的研究與實現后臺直到用戶停止該服務或服務運行結束。本系統客戶端擴展功能的音樂播放就是采用Service來進行設計和開發(fā)的,使用戶可以邊聊天邊聽音樂。ContentProvider應用程序能夠將它們的數據保存到文件、SQL數據庫和其它的存儲設備中。當應用程序需要使用存儲設備中的數據時,可以使用ContentProvider來完成。使用ContentProvider能夠靈活的替換底層使用的存儲設備,使開發(fā)者可以專著于應用邏輯的開發(fā),不用考慮底層存儲設備的細節(jié),從而使應用系統具有良好的數據。3.3本章小結本章對Android平臺的特征、架構以及Android應用的構成和工作機制進行了詳細的分析。對于Android應用程序來說,主要由Activity、IntentReceiver、Service和ContentProvider四部分組成,但并不是對于每一個應用程序,這四部分都是必須的。Activity是應用程序中最重要的一種構造塊,我們對其進行了詳細的分析,包括Activity的生命周期以及Activity之間的切換。第4章平臺的搭建4.1Android開發(fā)環(huán)境的搭建Android平臺為開發(fā)者提供了源碼開放的軟件開發(fā)包(SDK),它包含了使用Java語言開發(fā)Android平臺應用的必要工具和組件(API)。進行開發(fā)前先要建立合適的開發(fā)環(huán)境,其中基于Java的整合型可擴展平臺Eclipse是我們的首選。搭建環(huán)境所需要的軟件:操作系統:WindowsXP或Linux;軟件包:AndroidSDK,ADT;IDE環(huán)境:EclipseIDE+ADTEclipse3.3以上;JDK:JavaRuntimeEnvironmcnt,JDK;4.1.下載JDK并且一路next進行安裝,這里主要講解JDK的環(huán)境變量如何配置:我的電腦->屬性->高級->環(huán)境變量->系統變量中添加以下環(huán)境變量:JAVA_HOME值為:D:\ProgramFiles\Java\jdk1.6.0_18(安裝JDK的目錄)CLASSPATH值為:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\bin;Path:在開始追加%JAVA_HOME%\bin;安裝完成之后,可以在檢查JDK是否安裝成功。打開cmd窗口,輸入java–version查看JDK的版本信息。出現類似如圖3-1的畫面表示安裝成功了:圖3.1驗證JDK安裝是否成功4.1.下載如圖3-2所示的EclipseIDEforJavaDevelopers(92M)的win32bit版(選擇自己適合的版本)解壓之后即可使用。圖3.2Eclipse下載4.1.在AndroidDevelopers下載android-sdk_r05-windows.zip,下載完成后解壓到任意路徑。運行SDKSetup.exe,點擊AvailablePackages。如果沒有出現可安裝的包,請點擊Settings,選中Misc中的"Forcehttps://..."這項,再點擊AvailablePackages。選擇希望安裝的SDK及其文檔或者其它包,點擊InstallationSelected、AcceptAll、InstallAccepted,開始下載安裝所選包在用戶變量中新建PATH值為:AndroidSDK中的tools絕對路徑(本機為D:\AndroidDevelop\android-sdk-windows\tools)。圖3.3設置AndroidSDK的環(huán)境變量“確定”后,重新啟動計算機。重啟計算機以后,進入cmd命令窗口,檢查SDK是不是安裝成功。運行android–h如果有類似如圖3-4的輸出,表明安裝成功:圖3.4驗證AndroidSDK是否安裝成功4.1.打開EclipseIDE,進入菜單中的"Help"->"InstallNewSoftware"點擊Add...按鈕,彈出對話框要求輸入Name和Location:Name自己隨便取,Location輸入/android/eclipse。如圖3-5所示:圖3.5AddSite確定返回后,在workwith后的下拉列表中選擇我們剛才添加的ADT,我們會看到下面出有DeveloperTools,展開它會有AndroidDDMS和AndroidDevelopmentTool,勾選他們。如圖3-6所示:圖3.6選擇插件然后就是按提示一步一步next。完成之后:選擇Window>Preferences...;在左邊的面板選擇Android,然后在右側點擊Browse...并選中SDK路徑,本機為:D:\AndroidDevelop\android-sdk-windows。點擊Apply、OK。配置完成。4.1.為使Android應用程序可以在模擬器上運行,必須創(chuàng)建AVD。1、在Eclipse中。選擇Windows>AndroidSDKandAVDManager2、點擊左側面板的VirtualDevices,再右側點擊New3、填入Name,選擇Target的API,SDCard大小任意,Skin隨便選,Hardware目前保持默認值4、點擊CreateAVD即可完成創(chuàng)建AVD4.2Eclipse簡介Eclipse是一個開放源代碼的、基于Java的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構建開發(fā)環(huán)境。幸運的是,Eclipse附帶了一個標準的插件集,包括Java開發(fā)工具(JavaDevelopmentKit,JDK)。雖然大多數用戶很樂于將Eclipse當作Java集成開發(fā)環(huán)境(IDE)來使用,但Eclipse的目標卻不僅限于此。Eclipse還包括插件開發(fā)環(huán)境(Plug-inDevelopmentEnvironment,PDE),這個組件主要針對希望擴展Eclipse的軟件開發(fā)人員,因為它允許他們構建與Eclipse環(huán)境無縫集成的工具。由于Eclipse中的每樣東西都是插件,對于給Eclipse提供插件,以及給用戶提供一致和統一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所。這種平等和一致性并不僅限于Java開發(fā)工具。盡管Eclipse是使用Java語言開發(fā)的,但它的用途并不限于Java語言;例如,支持諸如C/C++和COBOL等編程語言的插件已經可用,或預計將會推出。Eclipse框架還可用來作為與軟件開發(fā)無關的其他應用程序類型的基礎,比如內容管理系統?;贓clipse的應用程序的一個突出例子是IBMRationalSoftwareArchitect,它構成了IBMJava開發(fā)工具系列的基礎。第5章程序設計5.1系統體系結構圖5.1系統體系結構5.2BaiduMapsAPI申請及使用5.2.1百度地圖AndroidSDK是一套基于Android1.5及以上版本設備的地圖開發(fā)工具??梢允褂迷撎譙DK開發(fā)適用于Android系統移動設備的地圖應用,通過接口,可以輕松訪問百度地圖服務和數據,構建功能豐富、交互性強的地圖應用程序。該套SDK提供的服務是免費的,接口無使用次數限制。但需先申請密鑰(key),才可使用該套SDK。申請地址為:/map/android-mobile-apply-key.htm然后隨便輸入軟件名稱,即可得到對應的Key5.2.自2.0.0版本開始,獲取定位坐標的方法請參考定位SDK中的說明,如下獲取定位坐標的方法只針對1.3.5及以前的版本有效。使用MKLocationManager類的requestLocationUpdates注冊位置監(jiān)聽事件,在重寫的回調函數onLocationChanged中,可獲得定位的坐標(詳見BMapApiDemoMain例程的MyLocation.java),通過調用MKSearch類的reverseGeocode接口,得到地址。@Override@OverridepublicvoidonLocationChanged(Locationlocation){if(location!=null){pt.setLatitudeE6((int)(location.getLatitude()*1e6));pt.setLongtitudeE6((int)(location.getLongtitude()*1e6));mSearch.reverseGeocode(pt);}}publicvoidonGetAddrResult(MKAddrInfores,interror){if(error!=0){Stringstr=String.format("錯誤號:%d",error);return;}StringstrInfo=String.format("緯度:%f經度:%f地址:%s\r\n",res.geoPt.getlatitudeE6()/1e6,res.geoPt.getLongtitudeE6/1e6,res.addressComponents.city+res.addressComponents.district+res.addressComponents.street);}5.2.此部分是針對1.3.5及以前版本的說明,自2.0.0版本以后,定位功能已從AndroidSDK中分離。首先在程序中打開相關的權限,然后將MyLocationOverlay實例添加到MapView中,并調用enableMyLocation方法,即可實現當前位置的顯示,如果想讓地圖跟隨當前位置移動,需要繼承MyLocationOverlay并實現其onLocationChanged方法,調用MapView.getController().animateTo()方法移動地圖位置。5.2.地址解析服務在MKSearch類中有兩個接口:reverseGeocode、geocode。初始化搜索類MKSearch并注冊結構監(jiān)聽對象MKSearchListener://初始化搜索模塊,注冊事件監(jiān)聽//初始化搜索模塊,注冊事件監(jiān)聽mSearch=newMKSearch();mSearch.init(app.mBMapMan,newMySearchListener());實現MySearchListener的onGetAddrResult獲取得到的地址信息@Override@OverridepublicvoidonGetAddrResult(MKAddrInfores,interror){if(error!=0){Stringstr=String.format("錯誤號:%d",error);return;}StringstrInfo=String.format("緯度:%f經度:%f地址:%s\r\n",res.geoPt.getlatitudeE6()/1e6,res.geoPt.getLongtitudeE6/1e6,res.addressComponents.city+res.addressComponents.district+res.addressComponents.street);}geocode:根據地址名稱獲取地址信息:mSearch.geocode("天安門","北京");mSearch.geocode("天安門","北京");第6章系統設計與實現6.1歡迎界面的實現(1)歡迎界面的設計SplashActivity類是本系統的歡迎界面。SplashActivity繼承自Activity。本系統的歡迎界面由兩張圖片組成。一張圖片負責顯示logo,一張圖片負責顯示腳注。Xml布局文件整體使用LinearLayout線性布局。(2)Timer類使用Timer類實現定時執(zhí)行任務的功能,本程序定時3秒鐘自動跳轉至主頁面,主要代碼如下:importjava.util.Timer;importjava.util.TimerTask;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;publicclassSplashActivityextendsActivity{ Timertimer=newTimer(); TimerTasktask=newTimerTask(){ publicvoidrun(){ Intentintent=newIntent(SplashActivity.this,MainTabActivity.class); startActivity(intent); finish(); } }; @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.splash); timer.schedule(task,3000); }}6.2主要功能的實現(1)換乘查詢的實現換乘查詢主要實現的是提供從出發(fā)站到目的站的乘車方案。實現該模塊功能有關的類:DbHelper類、SwitchLineActivity類SwitchLineActivity類的主要變量和函數的介紹:start_id_search_key:起始線路idend_id_search_key:結束線路idstart_search_key:起點站end_search_key:到達站方法:selectSwitchLine(Stringstart,Stringend)是描述搜索過程中的方法,比如說從車站A通過線路L可以到達車站B,如圖4-1所示。start_search_keystart_search_keyLineend_search_key圖4-1SwitchLine結點(2)線路查詢的實現線路查詢主要實現的是查詢該線路經過的所有站點,下圖4-2是線路查詢的流程圖。輸入線路輸入線路線路是否為空在數據庫中進行查詢,返回結果結果是否為空提示線路不能為空提示沒有相關線路顯示查詢結果查詢結束是否否是圖6-2線路查詢流程當進入線路查詢界面時,當按下查詢按鈕后,通過判斷表單中的每一個文本框是否為空,如果為空,使用Toast彈出提示框否則就執(zhí)行DbHelper類中的selectOneLineByName()方法,即到數據庫中查找該線路經過的站點,然后再判斷返回的結果是否為空,為空則彈出提示框。否則將返回的結果通過handleMessage()方法顯示的界面上,該方法主要實現的是先為獲取顯示內容,然后把字符串進行換行處理,再將需要顯示的文本放入TextView中,再將TextView放到LinearLayout中,得到每一行列表要顯示的內容。(3)站點查詢的實現站點查詢主要實現的是查找與該站點相關的線路信息,下圖4-3是站點查詢的流程圖。輸入站點輸入站點站點是否為空在數據庫中進行查詢,返回結果結果是否為空提示線路不能為空顯示經過站點的所有線路結果顯示線路的信息是否否是提示沒有相關信息查詢結束圖4-3站點查詢流程當進入站點查詢界面時,同線路查詢一樣,當按下查詢按鈕后,通過判斷表單中的每一個文本框是否為空,如果為空,就彈出提示框。然后再判斷是否有該站點的相關信息,如果沒有,就彈出提示沒有相關的車站信息。若不為空,DbHelper類中的selectOneStopByName()方法是查找出經過該站點的所有線路,然后通過handleMessage()方法將結果顯示在界面上。****畢業(yè)設計(論文)南通大學畢業(yè)設計(論文)6.3截圖及運行說明(1)運行該程序首先進入的是歡迎界面,效果如圖5-1所示。圖6-1歡迎界面核心代碼:設定三秒鐘后自動跳轉到下一頁面:Timertimer=Timertimer=newTimer(); TimerTasktask=newTimerTask(){ publicvoidrun(){ Intentintent=newIntent(SplashActivity.this,MainTabActivity.class); startActivity(intent); finish(); } };timer.schedule(task,3000);
(2)當歡迎界面完畢,進入主界面,如圖5-2所示。圖6-2主頁面publicclassMainTabActivityextendsTabActivityimplements OnCheckedChangeListener{privateTabHostmHost; privateIntentmradio1Intent;publicclassMainTabActivityextendsTabActivityimplements OnCheckedChangeListener{privateTabHostmHost; privateIntentmradio1Intent; privateIntentmradio2Intent; privateIntentmradio3Intent; privateIntentmradio4Intent;publicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked){….}privatevoidsetupIntent(){ this.mHost=getTabHost(); TabHostlocalTabHost=this.mHost;…..}{圖6-3換乘查詢界面圖6-4線路查詢界面圖6-5站點查詢界面
(4)在換乘查詢界面上,輸入出發(fā)站和目的站,如果輸入的兩個站名不為空且存在經過這兩個站點的線路,將其查詢結果顯示在界面,如圖5-6所示。圖6-6換乘查詢結果界面Stringsql="selectA."+FIELD_STOPSID+"from(selectdistinct"+FIELD_STOPSID+"from"+TABLE_LINES_STOPS+"where"+FIELD_LINESID+"in(select"+FIELD_LINESID+"from"+TABLE_LINES_STOPS+"where"+FIELD_STOPSID+"="+start+"))A,(selectdistinct"+FIELD_STOPSID+"from"+TABLE_LINES_STOPS+"where"+FIELD_LINESID+"in(select"+FIELD_LINESID+"from"+TABLE_LINES_STOPS+"where"+FIELD_STOPSID+"="+end+"))BwhereA."+FIELD_STOPSID+"=B."+FIELD_STOPSID+"";核心代碼:主要sql語句
(5)在線路查詢界面上,輸入要查詢的線路名稱,單擊查詢按鈕,如果有此線路,將其結果顯示在界面上,如圖5-7。Stringsql="selectA."+FIELD_STOPSID+"from(selectdistinct"+FIELD_STOPSID+"from"+TABLE_LINES_STOPS+"where"+FIELD_LINESID+"in(select"+FIELD_LINESID+"from"+TABLE_LINES_STOPS+"where"+FIELD_STOPSID+"="+start+"))A,(selectdistinct"+FIELD_STOPSID+"from"+TABLE_LINES_STOPS+"where"+FIELD_LINESID+"in(select"+FIELD_LINESID+"from"+TABLE_LINES_STOPS+"where"+FIELD_STOPSID+"="+end+"))BwhereA."+FIELD_STOPSID+"=B."+FIELD_STOPSID+"";圖6-7線路查詢結果界面核心代碼:主要sql語句Cursorcursor=this.getReadableDatabase().rawQuery("selects."+FIELD_STOP_NAME+",ls."+FIELD_SEQ+"from"+TABLE_LINE+"l,"+TABLE_LINES_STOPS+"ls,"+TABLE_STOP+"sWHEREl."+FIELD_LINE_NAME+"='"+line_name+"'ANDl."+FIELD_LINE_ID+"=ls."+FIELD_LINESID+"ANDs."+FIELD_STOP_ID+"=ls."+FIELD_STOPSID+"ORDERBYls."+FIELD_SEQ+"limit?,?",newString[]{"0","100"});
(6)在站點查詢界面上,輸入要查詢的站點名稱,單擊查詢按鈕,如果該站點存在,就先顯示經過該站點的線路,如圖5-8。Cursorcursor=this.getReadableDatabase().rawQuery("selects."+FIELD_STOP_NAME+",ls."+FIELD_SEQ+"from"+TABLE_LINE+"l,"+TABLE_LINES_STOPS+"ls,"+TABLE_STOP+"sWHEREl."+FIELD_LINE_NAME+"='"+line_name+"'ANDl."+FIELD_LINE_ID+"=ls."+FIELD_LINESID+"ANDs."+FIELD_STOP_ID+"=ls."+FIELD_STOPSID+"ORDERBYls."+FIELD_SEQ+"limit?,?",newString[]{"0","100"});圖6-8站點查詢結果界面核心代碼:主要sql語句Cursorcursor=this.getReadableDatabase().rawQuery("selectl."+FIELD_LINE_NAME+",ls."+FIELD_SEQ+"from"+TABLE_LINE+"l,"+TABLE_LINES_STOPS+"ls,"+TABLE_STOP+"sWHEREs."+FIELD_STOP_NAME+"='"+stop_name+"'ANDl."+FIELD_LINE_ID+"=ls."+FIELD_LINESID+"ANDs."+FIELD_STOP_ID+"=ls."+FIELD_STOPSID+"ORDERBYls."+FIELD_SEQ+"limit?,?",newString[]{"0","100"});Cursorcursor=this.getReadableDatabase().rawQuery("selectl."+FIELD_LINE_NAME+",ls."+FIELD_SEQ+"from"+TABLE_LINE+"l,"+TABLE_LINES_STOPS+"ls,"+TABLE_STOP+"sWHEREs."+FIELD_STOP_NAME+"='"+stop_name+"'ANDl."+FIELD_LINE_ID+"=ls."+FIELD_LINESID+"ANDs."+FIELD_STOP_ID+"=ls."+FIELD_STOPSID+"ORDERBYls."+FIELD_SEQ+"limit?,?",newString[]{"0","100"});(7)當進入線路地圖查詢界面時,顯示用戶選擇的線路,并將該線路的首站顯示在地圖的中心位置,如圖5-9。圖6-9線路地圖查詢界面核心類:BusLineSearchDemo.javabaidumapapi_v2_0_0.jarBusLineSearchDemo.javabaidumapapi_v2_0_0.jarlocSDK_3.1.jar圖6-10站點地圖查詢界面6.4軟件可以改進之處軟件還可以進行一系列改進和優(yōu)化,主要有以下幾方面:1、換乘的算法比較簡單,沒有進行最短路徑的優(yōu)化。2、可以增加導航的功能,讓用戶可以根據導航找到所要去的車站。第7章系統測試7.1手動測試方案該部分主要以測試系統的功能為主,由測試小組分功能模塊進行手動測試,保證系統符合需求規(guī)格中的功能,所有業(yè)務流程處理按照系統詳細設計方案完成,所有處理正確。功能舉例:手機城市定位;地圖精準度定位;其他功能模塊;7.2工具測試方案該部分測試主要以方便編寫測試腳本的單元測試和無需編寫測試腳本的系統測試為主,不承擔測試系統功能的任務。7.2.1單元測試測試步驟:編寫測試腳本:使用工具進行單元測試之前要編寫測試腳本,測試腳本是測試工具進行自動化測試的執(zhí)行代碼,單元測試要以一個功能函數為單位進行用例的測試。建立測試:將所有測試腳本按照單元特性組織成測試組件,對測試組件進行統一的測試,減少測試執(zhí)行次數并方便統計測試結果。測試方案:擴展TestCase類,編寫測試腳本運行測試測試分析7.2.2系統測試測試方案:采用腳本和人工方式進行測試,實際使用模擬方式測試。7.3測試用例對所有的模塊進行黑盒測試,采用等價類劃分的方法設計測試用例,按照設計盡可能少的測試用例涵蓋所有有效等價類,設計盡可能多的測試用例涵蓋無效等價類的原則進行測試用例設計。Case類型編號:正常測試:0邊界測試:1極值測試:2異常測試:3性能/壓力測試:4接口測試:5對數據訪問對象進行白盒測試,采用路徑覆蓋的方法設計測試用例,測試用例覆蓋數據訪問的對象的全部功能路徑。7.4輔助測試工具軟件工具主要功能Eclipse開發(fā)工具SVN版本控制MicorsoftProject項目管理Junit單元測試自制接口測試DDMS調試、監(jiān)控、模擬Traceview性能監(jiān)控Monkey壓力測試Monkeyrunner黑盒測試android-cts-manual兼容性測試結論本次畢業(yè)設計是結合本地公交線路系統開發(fā)的一款手機查詢工具。歷經幾個月的畢業(yè)設計,我的收獲還是很大的。從資料查找到課題的設計分析、數據庫的設計、界面的設計、然后進行代碼編寫、程序調試等,整個開發(fā)過程都是一邊摸索一邊實踐出來的。為了畢業(yè)設計,我閱讀了不少的資料,付出了不少的心血,有些是對畢設有幫助的,有些只能作為知識來積累,我深有體會的是要完成一個完善的系統是相當不容易,要考慮周全也是相當困難的。在這一步一步地學習摸索的過程中,我感到開心的就是能夠將所學到的知識應用到設計中,使自己的設計能更加完善些。由于能力的限制,最終的系統還是沒有那么令人滿意,還是存在一些不足之處。希望在日后有機會對其繼續(xù)改進。比如實現導航功能,換乘查詢的算法能夠更加完善等。由于時間和個人能力有限,本文對Android的理解和分析還不夠深入,系統功能也有待完善。參考文獻[1]李明峰,馮寶紅,劉三枝.GPS定位技術及其應用.國防工業(yè)出版社,2006[2]熊志昂,李紅瑞,賴順香.GPS技術與上程應用.國防工業(yè)出版社,2005[3]田丁.基于ARM9手持GPS定位系統的研究與實現[D].武漢:武漢理工大學,2008[4]孔祥元,郭際明,劉宗泉.大地測量學基礎.武漢大學出版社,2006[5]中國人民解放軍總裝備部軍事訓練教材編輯丁作委員會.GPS技術與應用.國防工業(yè)出版社,2004[6]http://code.google.corn/android/[7]王解先,俞振武.高斯投影引起的面積計算誤差[D]測繪通報,2003[8]http://code.google.corn/android/what.is.android.html[9]何偉,楊宗德,張兵等.基于SymbianOS的手機開發(fā)與應用.人民郵電出版社[10]ItEye/[11]Wien.GlobalPositioningSystemtheoryandpractice.NewYork:SPringer-Verlag,2001[12]李大文.GPS原理及應用.科學出版社,2003[13]WillardMarqnis.Misformodernization.GPSWorld,September2001[14]MichaelJuntaoYuan.梁超譯.EnterpriseJ2MEDevelopingMobileJavaApp移動應用程序開發(fā).清華大學出版社,2004[15]甘樹滿.基于Eclipse的開源框架技術與實踐.電子1:業(yè)出版社,2007[16]國家測繪局,地籍測量規(guī)范一匕京.測繪出版社,1988[17]EricClaybergDanRubel.周良忠譯.EclipseBuildingCommercial—Quality插件開發(fā).人民郵電出版社,2006[18]JoeWalnes.甄山譯JavaOpenSourceProgramming.Java開放源碼編程.2005[19]林信良.Java學習筆記.清華大學出版社.2007[20]趙炯.Linux內核完全注釋機械工業(yè)出版社.2004[21]RobertJ.Sweet.GPSforMariners.McGraw—HillProfessional,2003[22]彭永麟.城鎮(zhèn)地籍測量的可行性研究.福州大學學報,1998[23]馮寶紅,鄭小元等.GPS.PDA在_十地變更調查中的應用研究.測控技術,2003[24]MicrosoftCorporation.IntroducingMicrosoftWindowsCE3.0.MicrosoftCorporation,2001[25]嵌入式實時多任務操作系統[M].成都:電子科技大學,1999[26]JanVanSiekle,GPSforLandSurveyors,CRCPress,2001[27]Android的安裝/haix/archive/2007/11[28]http://www.1etsandroid.cn/SDKm5rcl4/docs/documentation.html[29]Google開發(fā)人員訪談Android平臺/2007/111[30]AlfredLeiek.GPSSatelliteSur
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞動合同轉簽申請書
- 2025年度光纖熔接勞務及配套設備采購合同
- 2025年度文化工程居間服務協議范本
- 2025年中國智慧航道行業(yè)市場發(fā)展監(jiān)測及投資前景展望報告
- 2025年度合同環(huán)境風險評估與保險服務協議
- 2025年度新能源汽車充電樁建設借款合同-@-1
- 2025年度國際能源合作項目2024版合同簽訂與管理
- 2025年度集裝箱運輸設備維護合同
- 2025年度養(yǎng)老產業(yè)項目融資合同
- 2025年度建材企業(yè)品牌授權與許可合同
- 鮮切水果行業(yè)分析
- 《中國探月工程》課件
- 義務教育物理課程標準(2022年版)測試題文本版(附答案)
- 人工智能在地理信息系統中的應用
- 第7章-無人機法律法規(guī)
- 藥劑科基本藥物處方用藥狀況點評工作表
- 拆遷征收代理服務投標方案
- 完形療法概述
- 說課的技巧和方法專題講座
- SL631-637-2012-水利水電工程單元工程施工質量驗收評定標準
- 監(jiān)理質量管理講義監(jiān)理工作的基本知識
評論
0/150
提交評論