摘 要:隨著城市人口的急劇膨脹,城市火車站人口眾多,給人們的出行帶來了極大的困擾,本文以Android為開發(fā)平臺,以區(qū)域電子地圖為基礎(chǔ)開發(fā)了火車站出口導(dǎo)航系統(tǒng),實現(xiàn)了火車站站各站點出口及周邊道路、公交信息等的查詢,并通過集成SQLite及Google Map實現(xiàn)數(shù)據(jù)庫管理及地圖服務(wù)應(yīng)用。為人們的方便快捷出行提供了輔助決策支持。
關(guān)鍵詞:火車站出口;導(dǎo)航查詢系統(tǒng);Android
中圖分類號:TP311.52
隨著城市人口數(shù)量的激增,人口流動性較大,火車站出口也越來越多,火車站內(nèi)提供的導(dǎo)向標(biāo)識越來越難以滿足出行人的需求,因此開發(fā)一款火車站周邊的信息查詢軟件具有現(xiàn)實意義。在智能手機中,基于android系統(tǒng)的手機市場應(yīng)用前景越來越好,如果能夠開發(fā)出在android系統(tǒng)上運行的火車站出口導(dǎo)航軟件,會給市民的出行帶來將極大的方便。
1 android簡介
Android是基于Linux開放性內(nèi)核的操作系統(tǒng),是Google公司在2007年11月5日公布的手機操作系統(tǒng)。該平臺由用戶界面、應(yīng)用軟件、操作系統(tǒng)和中間件組成。它采用軟件堆層(Software Stack,又名軟件疊層)的架構(gòu),主要分為三部分。底層以Linux內(nèi)核工作為基礎(chǔ),由C語言開發(fā),只提供基本功能;中間層包括函數(shù)庫Library和虛擬機Virtual Machine,由C++開發(fā)。最上層是各種應(yīng)用軟件,包括通話程序,短信程序等,應(yīng)用軟件則由各公司自行開發(fā),以Java作為編寫程序的一部分。Android應(yīng)用程序的組件主要包括:Activity、Service、Intent、Contentproviders(內(nèi)容提供者)。
2 系統(tǒng)需求分析
(1)在手機聯(lián)網(wǎng)的情況下,可以地圖導(dǎo)航功能詳細查看火車站周邊的信息。
(2)在手機沒有信號的情況下,具有查詢火車站的出口地圖的功能。
(3)直接觸控屏幕上地圖中的站點,能夠提供詳細的火車站出口的詳細說明。
(4)可以查詢火車站首末班車時間、公交路線以及附近的街道。
3 系統(tǒng)總體設(shè)計
系統(tǒng)設(shè)計思想:是在基于android系統(tǒng)的手機上開發(fā)一款帶導(dǎo)航功能的火車站出口查詢軟件,此軟件根據(jù)系統(tǒng)提供的導(dǎo)航查詢功能方便用戶出行,可操作性強,界面友好。根據(jù)系統(tǒng)需求分析,本文將劃分為四個功能模塊:位置服務(wù)模塊、出口查詢模塊、首末班車時間查詢模塊、智能查詢模塊。
(1)位置服務(wù)模塊,主要是實現(xiàn)火車站出口周邊系統(tǒng)導(dǎo)航、位置服務(wù)功能;
(2)首末班車時間查詢模塊,主要是實現(xiàn)火車站公交車首末班車時間的查詢功能;
(3)出口查詢模塊,包括兩個子模塊:便捷服務(wù)模塊和地圖信息顯示模塊。便捷服務(wù)模塊功能主要是能夠查詢火車站出口處公交路線換乘信息和火車站出口處的街道信息;地圖信息顯示模塊主要是實現(xiàn)在線顯示周邊地圖和離線顯示地圖功能(手機沒有信號的情況下,也能顯示出口地圖)。
(4)智能查詢模塊,主要是能夠查詢從火車站站臺到哪一個出口最近功能。
4 導(dǎo)航系統(tǒng)的總體實現(xiàn)
4.1 系統(tǒng)主界面的實現(xiàn)
在Android程序中Activity代表了手機的一個屏幕,同一個應(yīng)用中的每個activity是相互獨立的。程序啟動后顯示的第一幅畫面是應(yīng)用程序的第一個activity,而后可以根據(jù)需要從這個avtivity啟動另一個新的activity,每一個都是作為activity基類的一個子類的實現(xiàn)。程序的主界面是一張?zhí)畛浜艉秃铺鼗疖囌境隹趫D,用戶通過多點觸控和長按屏幕來查詢所選的火車站站點,因此該界面整體布局采用了LinearLayout布局,并利用ImageView控件,實現(xiàn)火車站出口圖的填充顯示。選取站點進入后,布局文件上放置一個ListView組件,用來顯示等待用戶選擇的信息。例如:出口地圖、公交車站點的首末班車時間、以及火車站的出口編號。利用ArrayAdapter適配器自適應(yīng)顯示從數(shù)據(jù)庫中讀取的每個火車站出口數(shù)目。利用Checked TextView控件實現(xiàn)對用戶的選擇進行響應(yīng)。在出口地圖界面有一個ImageView控件用來放置離線的火車站周邊地圖,還有一Button按鈕提供在線Google Map選擇,這兩者都是在LinearLayout布局文件下實現(xiàn)的。接著在下一個布局文件中采用AbsoluteLayout布局,再引入GoogleMapView Widget,以實現(xiàn)Google Map的顯示。
4.2 數(shù)據(jù)的存儲
在模擬器上點擊火車站出口地圖上的屏幕坐標(biāo)時,由于用戶操作手機時屏幕坐標(biāo)變化頻繁,因此對數(shù)據(jù)解析效率要求很高。本文將火車站原始屏幕坐標(biāo)存放到XML文件中,程序運行后,先對存儲在XML文件里的原始屏幕坐標(biāo)進行解析,存入到一個新建的數(shù)組中,以實現(xiàn)下一步坐標(biāo)的匹配。由于xml文件較小,本文采用DOM解析器來解析XML數(shù)據(jù)。當(dāng)用戶對地圖進行縮放、移動時,屏幕會隨著用戶的操作而發(fā)生變化,本文用一種算法來得到變化后的屏幕坐標(biāo)。當(dāng)用戶長按屏幕時,后臺會將當(dāng)前的屏幕坐標(biāo)通過算法自動搜索原始的屏幕坐標(biāo)。匹配成功即可得知用戶選擇的是哪一個火車站,由此可以從XML文件中得到和火車站站坐標(biāo)對應(yīng)的編號。通過編號我們可以從數(shù)據(jù)庫中讀取該站點的所有信息,包括街道信息、可換乘公交、火車站站周邊地圖,以及使用GoogleMap服務(wù)所必需的經(jīng)緯度。
4.3 SQLite數(shù)據(jù)庫
SQLite數(shù)據(jù)庫是android自帶的一個標(biāo)準(zhǔn)數(shù)據(jù)庫,是一個輕量級的嵌入式數(shù)據(jù)庫,具有占用很少的內(nèi)存、跨平臺、可移植性等一系列的優(yōu)點。本文使用SQLite數(shù)據(jù)庫來存儲街道信息、可換乘公交、火車站站周邊地圖等信息。
4.4 Google地圖應(yīng)用
Google Map為開發(fā)者提供地圖API,可以開發(fā)出各種各樣的地圖應(yīng)用。利用android.location類和Google Maps外部類庫來實現(xiàn)定位服務(wù)和地圖應(yīng)用。
5 系統(tǒng)測試
我們以呼和浩特火車站出口為例,對火車站導(dǎo)航系統(tǒng)在Android 2.2的模擬器上進行測試和調(diào)試。達到了預(yù)期的要求,系統(tǒng)運行良好。
6 結(jié)束語
本文以分析火車站出口的實際需求,進行了系統(tǒng)的總體設(shè)計、數(shù)據(jù)的存儲和GoogleMap地圖的使用等說明的基礎(chǔ)上,開發(fā)出一款基于Android平臺的火車站出口導(dǎo)航系統(tǒng),在模擬器上運行達到了良好的效果。
參考文獻:
[1]公磊,周聰.基于Android的移動終端應(yīng)用程序開發(fā)與研究[J].計算機與現(xiàn)代化,2008(08):85-89.
[2]張仕成.基于Google Android平臺的應(yīng)用程序開發(fā)與研究[J].電腦知識與技術(shù),2009(28):7959-7962.
[3]劉磊,仇菊香,吳國洋.基于Google地圖服務(wù)的城市地理信息公共服務(wù)平臺的設(shè)計與實現(xiàn)[J].測繪標(biāo)準(zhǔn)化,2011(01):10-13.
[4]張云,于文馳.基于Android的地鐵出口導(dǎo)航系統(tǒng)設(shè)計與實現(xiàn)[J].電子設(shè)計工程,2003(21).
作者簡介:郝俊壽(1974.06-),男,山西寧武人,講師,研究生,碩士學(xué)位,研究方向:android應(yīng)用開發(fā)。
作者單位:內(nèi)蒙古電子信息職業(yè)技術(shù)學(xué)院科技處,呼和浩特 010070;內(nèi)蒙古電子信息職業(yè)技術(shù)學(xué)院數(shù)字媒體藝術(shù)系,呼和浩特 010070