孫 杰,秦健勇,樊春年
(1昌吉學(xué)院物理系,新疆昌吉 831100;2新疆大學(xué)信息科學(xué)與工程學(xué)院,烏魯木齊 830046;3新疆工程學(xué)院計算機(jī)工程系,烏魯木齊 830000;4新疆輕工職業(yè)技術(shù)學(xué)院電氣技術(shù)分院,烏魯木齊 830021)
基于Android的校園導(dǎo)航系統(tǒng)的設(shè)計與實現(xiàn)
孫 杰1,2,秦健勇3,樊春年4
(1昌吉學(xué)院物理系,新疆昌吉831100;2新疆大學(xué)信息科學(xué)與工程學(xué)院,烏魯木齊830046;3新疆工程學(xué)院計算機(jī)工程系,烏魯木齊830000;4新疆輕工職業(yè)技術(shù)學(xué)院電氣技術(shù)分院,烏魯木齊830021)
為使大學(xué)生能夠快速熟悉校園環(huán)境,迅速適應(yīng)大學(xué)生活,開發(fā)了基于Android的校園導(dǎo)航系統(tǒng)。該系統(tǒng)以新疆大學(xué)本部校園為例,在研究校園用戶對地圖服務(wù)需求的基礎(chǔ)上提出了相應(yīng)的功能。開發(fā)中充分利用了百度地圖API接口,實現(xiàn)了校內(nèi)地點搜索、位置提醒等功能,并利用FLOYD算法實現(xiàn)了路徑規(guī)劃。
校園導(dǎo)航;地圖服務(wù);百度地圖;路徑規(guī)劃
隨著高校的發(fā)展,校園面積不斷擴(kuò)大、校園內(nèi)的道路和建筑物不斷增多,校園空間信息和地理信息日趨復(fù)雜[1],能夠通過手機(jī)隨時隨地獲取校園空間信息和服務(wù)信息,對于方便師生的工作和學(xué)習(xí)有著重要意義。雖然,已經(jīng)有很多成熟的商業(yè)地圖APP可以提供地理信息服務(wù),但是這些位置業(yè)務(wù)主要針對一個較大的空間范圍,例如一個城市、一個街區(qū)等。相較于商業(yè)化的導(dǎo)航軟件而言,校園導(dǎo)航系統(tǒng)主要是在空間方位(地理范圍)較小的區(qū)域內(nèi),針對特定用戶群體,提供基于位置的個性化服務(wù),注重小范圍內(nèi)的地理信息服務(wù)的準(zhǔn)確性?;诖耍肁ndroid平臺框架[2]和Baidu Maps API[3]編程實現(xiàn)了校園導(dǎo)航系統(tǒng),設(shè)計出方便校園用戶使用的個性化地圖,提供方便定位和搜索功能,為師生探路和事務(wù)辦理提供實時地理信息及其他的各種信息。
本系統(tǒng)以新疆大學(xué)為例,研究了校園用戶對導(dǎo)航系統(tǒng)的需求并根據(jù)該需求提出了相應(yīng)的功能。主要包括校園內(nèi)地圖的詳細(xì)顯示,能夠更好地幫助師生了解新大校園的各個設(shè)施所在位置以及詳細(xì)描述,并且具有進(jìn)入范圍提醒功能,提醒用戶該位置的詳細(xì)信息。另外,導(dǎo)航系統(tǒng)最主要的功能就是定位以及路線查詢,能夠在校園這個小范圍內(nèi)顯示出需要查詢的起點與目的地之間的路徑。
1.1功能設(shè)計
為了滿足學(xué)生們的日常生活要求,導(dǎo)航系統(tǒng)應(yīng)該具備以下功能:地圖加載、自身實時定位、鄰近范圍提醒、校內(nèi)搜索、短信定位、路線查詢等業(yè)務(wù),系統(tǒng)功能結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)功能結(jié)構(gòu)圖Fig.1 Structure chart of system function
由圖1可見,系統(tǒng)實現(xiàn)功能分別可做如下解析描述。
1)地圖加載功能。系統(tǒng)是基于百度地圖來進(jìn)行二次開發(fā),相應(yīng)地就要獲取百度地圖的使用權(quán)限以及開發(fā)權(quán)限。由于百度地圖顯示的是較大區(qū)域的俯視圖和該區(qū)域內(nèi)的地標(biāo)性建筑,因此導(dǎo)航系統(tǒng)在加載百度地圖的同時,必須能夠自定義添加一些校園內(nèi)部的詳細(xì)標(biāo)注,使用戶能夠了解更多校園內(nèi)部的詳細(xì)信息。同時支持地圖的放大縮小和移動功能,給用戶帶來更好的使用體驗。
2)自身實時定位功能。用戶可以得到當(dāng)前所在的具體位置,如校園道路名稱等,并且在地圖上實時標(biāo)注出來,可以根據(jù)用戶的位置轉(zhuǎn)換而發(fā)生改變,方便用戶獲得準(zhǔn)確的信息。系統(tǒng)支持2種地圖顯示方式,即交通地圖與衛(wèi)星地圖。
3)校內(nèi)搜索功能。用戶通過系統(tǒng)提供的搜索文本框,可以查詢附近的一些標(biāo)志性建筑的具體位置,以及對該位置的新近具體描述。如同學(xué)們關(guān)心的教師辦公室的具體位置以及聯(lián)系方式等,或者附近餐廳以及娛樂場所等。
4)臨近范圍提醒功能。當(dāng)用戶攜帶手持設(shè)備進(jìn)入特定區(qū)域內(nèi),即可收到靠近目標(biāo)位置的提醒,提示用戶該地區(qū)內(nèi)的詳細(xì)信息。如靠近一號教學(xué)樓附近20米時,用戶打開鄰近范圍提醒界面將會收到一條提醒,“您已經(jīng)到達(dá)一號教學(xué)樓附近,該教學(xué)樓主要有新聞學(xué)院以及生物科學(xué)學(xué)院等”這樣的信息。
5)短信定位模塊。通過給對方發(fā)送標(biāo)記短信,后臺啟動對方的定位服務(wù)(前提:對方必須安裝此軟件),獲取位置信息后系統(tǒng)將會自動發(fā)送一條包含經(jīng)緯度的短信給發(fā)送方,發(fā)送方收到短信時,解析短信內(nèi)容,獲取經(jīng)緯度顯示在地圖上。
6)路線查詢功能。這是校園導(dǎo)航系統(tǒng)的基本功能。用戶可以根據(jù)需要查詢從源點到目標(biāo)地點的可行線路,并提供實時導(dǎo)航服務(wù),同時也可以選擇兩點間的最短路線。
1.2安全性和可維護(hù)性設(shè)計
1)安全性設(shè)計。由于系統(tǒng)中涉及到基于位置的服務(wù),需要定位用戶的位置。為了確保用戶的位置信息不會泄露給他人,本系統(tǒng)使用GPS定位以及基站定位技術(shù),而且在用戶安裝和使用該系統(tǒng)的過程中會提醒用戶,該系統(tǒng)將會打開手機(jī)的GPS定位功能。
2)可維護(hù)性設(shè)計??删S護(hù)性是進(jìn)行軟件維護(hù)工作的一個重要參考依據(jù),是評定軟件維護(hù)難易程度的一條現(xiàn)實標(biāo)準(zhǔn),也是軟件產(chǎn)品的一種重要質(zhì)量特性。在系統(tǒng)的設(shè)計與實現(xiàn)過程中,需要重視系統(tǒng)的可維護(hù)性。另外,高校校園環(huán)境是一個動態(tài)變化的系統(tǒng),因此導(dǎo)航系統(tǒng)的開發(fā)必須要留有可以擴(kuò)充功能的接口,以利于未來新功能的研發(fā)與添加。所以,本系統(tǒng)采用了模塊化及面向?qū)ο蠓椒ㄩ_發(fā),便于后期的系統(tǒng)維護(hù)。
2.1數(shù)據(jù)庫設(shè)計
本系統(tǒng)運(yùn)行過程需要從后臺存取大量數(shù)據(jù)并且要根據(jù)不同條件進(jìn)行信息查詢,若采用xml文件存儲,則對查詢帶來了很多不便。因此本系統(tǒng)采用了SQLite數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲,方便管理與查找。系統(tǒng)的數(shù)據(jù)庫設(shè)計了3張表:PLACE表用于存放本地化數(shù)據(jù),包括校園內(nèi)部的餐廳、教室、辦公室等;PLACE_CODE為位置信息代碼表,主要存放路線規(guī)劃時輔助節(jié)點的經(jīng)緯度;ROUTE_PLAN表主要存放一張圖的信息,包括點以及權(quán)值,用于計算最優(yōu)路徑。具體設(shè)計如表1、表2和表3所示。
表1 本地化表(PLACE)Tab.1 Localization table(PLACE)
表2 位置信息代碼表(PLACE_CODE)Tab.2 Location information&code table(PLACE_CODE)
表3 路徑圖表(ROUTE_PLAN)Tab.3 Path diagram(ROUTE_PLAN)
2.2系統(tǒng)主界面實現(xiàn)
主界面的整體布局實現(xiàn)重點使用了GridView和一個TextView,GridView是一個表格布局,可以設(shè)置其行與列,該GridView的列數(shù)控制為2列,而GridView中的每一個單元格又嵌套了一個相對布局RelativeLayout,RelativeLayout主要控制一個控件與另一個控件的相對位置,如右方、下方等。RelativeLayout中包括一個Image控件以及一個TextView控件,Image控件主要用來顯示圖片信息,TextView控件用于顯示文本信息。系統(tǒng)主界面如圖2所示。
圖2 系統(tǒng)主界面Fig.2 Main interface of system
2.3 校內(nèi)搜索功能實現(xiàn)
校內(nèi)搜索界面如圖3所示,全部功能實現(xiàn)主要用到了以下技術(shù):
1)Spinner下拉框控件與數(shù)據(jù)庫信息的綁定。校園內(nèi)諸如教學(xué)樓、辦公樓或宿舍樓這類信息,一般長時間內(nèi)不會隨意添加或更名,因此本搜索采用了Spinner控件,讓用戶無需輸入直接進(jìn)行選擇,方便了用戶操作。
2)搜索功能子線程的實現(xiàn)。由于考慮到搜索可能會比較費(fèi)時,為了保證程序的正常運(yùn)行,查詢功能都設(shè)計提供在子線程中,而對于創(chuàng)建子線程只需要重寫其對應(yīng)run()即可。
3)文本信息撥打電話格式的實現(xiàn)。點擊“信息學(xué)院學(xué)工辦”時,會彈出一個dialog,dialog中顯示位置詳細(xì)信息以及聯(lián)系電話,聯(lián)系電話為特殊字符串,點擊即可直接進(jìn)行電話撥打。實現(xiàn)時使用了SpannableString類,如果需要給TextView中的某些字設(shè)置為超鏈接,以及聯(lián)系電話設(shè)置特殊字的顏色、字體等,那就需要用到Spannable對象,可以借助Spannable對象實現(xiàn)以上設(shè)置。
4)View與Bitmap的轉(zhuǎn)換。圖4中“信息學(xué)院學(xué)工辦”字樣是一個bitmap位圖,由于地圖二次開發(fā)不允許用戶在地圖上添加文字,除非付費(fèi)用戶。但是可以通過textView設(shè)置文本內(nèi)容,再將textView轉(zhuǎn)換成bitmap后,即可通過點擊“A”字樣時顯示到地圖上。
圖3 校內(nèi)搜索界面Fig.3 UI of campus searching
圖4 校內(nèi)查詢結(jié)果界面Fig.4 UI of campus searching result
2.4臨近位置提醒功能實現(xiàn)
臨近位置提醒功能界面如圖5所示,即為用戶到達(dá)校內(nèi)科技樓附近位置的提醒界面。該功能建立在定位基礎(chǔ)上,首先通過定位獲取自身的位置,再通過計算預(yù)先定義完成的位置提醒點與自身位置間的距離進(jìn)行事件觸發(fā),例如:如果用戶到達(dá)某建筑附近,系統(tǒng)會計算用戶位置與建筑位置之間的距離,如果符合某一數(shù)值范圍則會觸發(fā)位置提醒事件,提示位置信息。
2.5路徑搜索實現(xiàn)
本功能在百度路徑規(guī)劃的前提下提出了最優(yōu)路徑的搜索,圖6為未使用算法前的路徑導(dǎo)航,可以看出百度地圖的路徑規(guī)劃是在地圖上有路的情況下,進(jìn)行了路徑算法機(jī)制的推導(dǎo)實現(xiàn),如從新疆大學(xué)校史展館到一號教學(xué)樓的路徑,現(xiàn)有的百度地圖會先走到科技樓,再從主干道走到一號教學(xué)樓。圖7是通過FLOYD算法自己添加輔助節(jié)點實現(xiàn)的路線查詢,可直接通過校史館到達(dá)新疆大學(xué)教務(wù)處,再通過捷徑到達(dá)一號教學(xué)樓,實現(xiàn)了校內(nèi)的最優(yōu)路徑導(dǎo)航。
圖5 鄰近位置提醒界面Fig.5 UI of approaching position
圖6 未使用算法的查找路徑Fig.6 Searched path before using the designed algorithm
圖7 使用算法查詢的最優(yōu)路徑Fig.7 Optimal path after using the designed algorithm
最優(yōu)路徑主要采用了FLOYD算法實現(xiàn),該算法能實現(xiàn)任意兩點之間的最優(yōu)路徑的查找,使用算法前要求系統(tǒng)輸入一個圖的信息,該圖的信息預(yù)先即以起點、終點以及權(quán)值的信息存放在數(shù)據(jù)庫表中,用戶查詢前首先通過數(shù)據(jù)庫查詢出各節(jié)點信息,再利用算法轉(zhuǎn)換成該圖的鄰接矩陣,并將該鄰接矩陣傳入FLOYD算法中求出起點與終點之間的最短路徑的一組點。此后,在將通過這一組點分別去數(shù)據(jù)庫中查詢對應(yīng)的經(jīng)緯度,最終即將這一組經(jīng)緯度通過百度的路徑顯示到地圖上。
本文主要基于Android平臺,利用SQLite提供后臺數(shù)據(jù)服務(wù),以定位服務(wù)為核心模塊,在此基礎(chǔ)上擴(kuò)展了校內(nèi)路線導(dǎo)航功能,設(shè)計并實現(xiàn)了基于自身、校內(nèi)搜索、短信定位等功能的校園導(dǎo)航系統(tǒng)。這是校園數(shù)字化的一種定制提升表現(xiàn),不僅可作為一種向外界展示高校人文環(huán)境的現(xiàn)實高端平臺,也可為學(xué)校日后建立科學(xué)、智能、網(wǎng)絡(luò)一體化的綜合校園管理體系奠定了有益的技術(shù)基礎(chǔ)。
[1]楊偉龍,李步德,謝俊鵬.校園導(dǎo)航系統(tǒng)最短路徑的實現(xiàn)[J].韶關(guān)學(xué)院學(xué)報,2014,35(4):20-23.
[2]郭宏志.Android應(yīng)用開發(fā)詳解[M].北京:電子工業(yè)出版社,2010.
[3]方濤,秦華旺.基于Baidu地圖的移動機(jī)器人監(jiān)控平臺[J].工業(yè)控制計算機(jī),2015,28(1):81-82.
[4]李洪波,王茂波.Floyd最短路徑算法的動態(tài)優(yōu)化[J].計算機(jī)工程與應(yīng)用,2006(34):60-63.
Design and implementation of Android-based campus navigation system
SUN Jie1,2,QIN Jianyong3,F(xiàn)AN Chunnian4
(1 Department of Physics,Changji University,Changji Xinjiang 831100,China;2 College of Information Science and Engineering,Xinjiang University,Urumqi 830046,China;3 Department of Computer Engineering,Xinjiang Institute of Engineering,Urumqi 830000,China;4 College of Electrical Technology,Xinjiang Institute of Light Industry Technology,Urumqi 830021,China)
In order to promote college students be quickly familiar with the campus environment and adapt to campus life,the paper develops Android-based campus navigation system,which takes XinJiang university as the example.Then the paper proposes corresponding functions after researching map service demand of campus user.Based on the aboved,taking full advantage of Bmap API,the location search、location alert are efficiently implemented,and route program by using FLOYD algorithm is further realized.
campus navigation;map service;Baidu map;route program
TP311
A
2095-2163(2016)03-0090-03
2016-05-09
昌吉學(xué)院科研基金資助項目(2011SSQD013)。
孫 杰(1976-),男,博士研究生,講師,主要研究方向:自然語言處理、信息技術(shù);秦健勇(1978-),男,碩士,講師,主要研究方:信息技術(shù)、智能家居;樊春年(1975-),男,碩士,講師,主要研究方向:電氣技術(shù)、信息技術(shù)。