1、引言
在移動(dòng)互聯(lián)網(wǎng)發(fā)展的同時(shí),移動(dòng)智能終端也發(fā)展的如火如荼,目前主流的智能手機(jī)操作系統(tǒng)是:Android、IoS、SyMBIAn、BLACKBERRy、wINDowSPHonE。在這些操作系統(tǒng)中,Android以其免費(fèi)、開放、完整的特點(diǎn)得到了開發(fā)者和用戶的喜愛。據(jù)2013年第三季度的數(shù)據(jù)顯示,Android占據(jù)全球智能手機(jī)操作系統(tǒng)市場(chǎng)81.3%的份額,中國市場(chǎng)占有率為78.1%。國際電信聯(lián)盟預(yù)測(cè),在2014年底,手機(jī)用戶將超過70億。市場(chǎng)研究公司EMARKETER稱,隨著尤其是新興市場(chǎng)中智能手機(jī)采用率的日益增加,2014年全球智能手機(jī)用戶量將達(dá)到17.5億。據(jù)工信部統(tǒng)計(jì)數(shù)據(jù),2014年一月底中國手機(jī)用戶達(dá)12.86億,但智能手機(jī)仍有很大的發(fā)展空間。
LBS是在地理信息(GIS)技術(shù)的支持下,通過無線網(wǎng)絡(luò)和外部定位方式GPS來獲取移動(dòng)終端用戶的位置信息,并在電子地圖上顯示,來提供位置相關(guān)的服務(wù)。隨著互聯(lián)網(wǎng)的飛速發(fā)展和智能移動(dòng)終端的日益普及,移動(dòng)定位技術(shù)得到了空前的發(fā)展,定位所需代價(jià)和能耗越來越小。LBS的著眼點(diǎn)已不僅僅局限于軍事、交通,現(xiàn)在已經(jīng)滲透到生活中的其他領(lǐng)域,像無線定位、智能交通、校園地圖服務(wù)、移動(dòng)圖書館、用戶行為分析等。
為此,以校園LBS服務(wù)為例設(shè)計(jì)并開發(fā)了基于Android操作系統(tǒng)的個(gè)性化校園LBS系統(tǒng)客戶端APP,以期為師生提供多樣化便捷的位置服務(wù)。
2、應(yīng)用客戶端設(shè)計(jì)
2.1、總體設(shè)計(jì)
根據(jù)需求分析定位系統(tǒng)業(yè)務(wù)需求及系統(tǒng)功能需求,將本系統(tǒng)主要功能模塊及結(jié)構(gòu)定位如圖1所示。
圖1 系統(tǒng)功能模塊
校園LBS系統(tǒng)由移動(dòng)終端系統(tǒng)、后臺(tái)服務(wù)系統(tǒng)所構(gòu)成。后臺(tái)的服務(wù)系統(tǒng)又可以分為后臺(tái)數(shù)據(jù)服務(wù)系統(tǒng)、數(shù)據(jù)庫和后臺(tái)管理系統(tǒng)3部分組成。移動(dòng)終端應(yīng)用是指在Android平臺(tái)之上開發(fā)的客戶端的應(yīng)用,一般針對(duì)手機(jī)和平板電腦等設(shè)備,它們?cè)诠δ苌下杂胁煌枰_發(fā)不同的程序。后臺(tái)數(shù)據(jù)服務(wù)系統(tǒng)運(yùn)行在數(shù)據(jù)服務(wù)器之上,它通過解析使用HTTP或SoCKET協(xié)議發(fā)送來的移動(dòng)終端用戶數(shù)據(jù),來響應(yīng)客戶端的請(qǐng)求,并返回相應(yīng)的數(shù)據(jù)。后臺(tái)管理系統(tǒng)也是在數(shù)據(jù)庫服務(wù)器上運(yùn)行,管理員用戶可以通過瀏覽器方式管理和維護(hù)博客的數(shù)據(jù)。本系統(tǒng)服務(wù)器端采用的數(shù)據(jù)庫是MySQL,它具有開源、免費(fèi)等優(yōu)點(diǎn),適合于處理中小型數(shù)據(jù)。
如圖2所示,校園LBS系統(tǒng)的客戶端和后臺(tái)服務(wù)器端采用C/S結(jié)構(gòu)來進(jìn)行交互,C/S體系結(jié)構(gòu)的客戶端是Android應(yīng)用,它負(fù)責(zé)接收用戶的請(qǐng)求和顯示,直接與用戶進(jìn)行交互。應(yīng)用服務(wù)器是位于wEB服務(wù)器端的具有擴(kuò)展功能的wEB服務(wù)器,它接收客戶端的請(qǐng)求,通過wEB中的應(yīng)用程序?qū)φ?qǐng)求進(jìn)行處理,通過SQL語句等方式調(diào)用數(shù)據(jù)庫服務(wù)器,然后將數(shù)據(jù)處理的結(jié)果返還給wEB服務(wù)器,再由wEB服務(wù)器傳送回客戶端。
圖2 系統(tǒng)體系構(gòu)架
2.2、平臺(tái)的構(gòu)建
首先,以wINDowSXP操作系統(tǒng)為開發(fā)平臺(tái),通過安裝JDK、ECLIPSE、AndroidSDK、ADT工具軟件,并進(jìn)行相關(guān)配置;同時(shí),利用Android開發(fā)人員專用模擬器AVD(AndroidVIRTuALDEVICE)進(jìn)行客戶端程序的開發(fā)和測(cè)試,從而搭建Android客戶端開發(fā)環(huán)境。
其次,利用ECLIPSE的插件MyECLIPSE進(jìn)行服務(wù)器端環(huán)境的搭建,MyECLIPSE集成了對(duì)STRuTS、SPRINg、HIBER-nA(yù)TE等主流JAVAEE組件開發(fā)的支持,簡(jiǎn)化了JAVAEE的開發(fā)。在服務(wù)器上安裝MyECLIPSE并對(duì)其進(jìn)行環(huán)境變量的配置,配合ToMCAT的安裝與部署,對(duì)服務(wù)器上的MySQL數(shù)據(jù)庫進(jìn)行安裝和配置,從而搭建起服務(wù)器端系統(tǒng)環(huán)境。
最后,利用在安裝SDK時(shí)獲取的KEySToRE,保存MD5的指紋,通過JDK中的KEyTooL工具取得MD5的fINgER-PRINT獲得MD5的指紋,并在HTTP://CoDE.googLE.CoM/Android/MAPS-API-SIgnuP.HTML頁面中在線獲取對(duì)應(yīng)的GoogLEAndroidMAPAPIKEy密鑰,在MAPVIEw中加入密匙。若要在工程中顯示地圖,則要在布局文件LAyouT下的MAP.xML中的MAPVIEw中添加APIKEy。其關(guān)鍵代碼如下:
<CoM.googLE.Android.MAPS.MAPVIEw
Android:ID=“@+I(xiàn)D/MyMAPVIEw”
Android:LAyouT_wIDTH=“fILL_PAREnT”
Android:LAyouT_HEIgHT=“fILL_PAREnT”
Android:CLICKABLE=“TRuE”
Android:APIKEy=“0AGPCMgLYP1TMz-Vy0LDJVY-
nfJB_M(jìn)9G0AyXSyQ”/>
2.3、客戶端業(yè)務(wù)的實(shí)現(xiàn)
2.3.1、登錄注冊(cè)模塊的實(shí)現(xiàn)
要使用本系統(tǒng)首先要在Android客戶端進(jìn)行登錄和注冊(cè),當(dāng)用戶在終端點(diǎn)擊本應(yīng)用的圖標(biāo)后就會(huì)跳轉(zhuǎn)到登錄界面和注冊(cè)界面,注冊(cè)過的用戶可以直接進(jìn)行登錄進(jìn)入本系統(tǒng)主界面,未登錄過的用戶需要先進(jìn)行注冊(cè),然后在登錄進(jìn)入本系統(tǒng),該模塊內(nèi)部的流程如圖3所示。
圖3 ?客戶端登錄注冊(cè)流程
其中,部分關(guān)鍵代碼如下:
PuBLICCLASSHTTPGLoBAL{
PuBLICSTATICSTRINgSERVICEIP=“202.117.137.
175”;//服務(wù)IP
PuBLICSTATICSTRINgSERVICEPoRT=“8080”;//服務(wù)接口
PuBLICSTATICSTRINgSERVICEPATH=“/APPSToREwEB/
CLIEnT/”;
PuBLICSTATICSTRINgSERVICEURL=“HTTP://”+SERVI-
CEIP+”:”+SERVICEPoRT+SERVICEPATH;//服務(wù)URL
PuBLICSTATICSTRINgAPKADDRESS=“HTTP://”+SERVI-
CEIP+”:”+SERVICEPoRT;
}
功能運(yùn)行結(jié)果如圖4所示。
圖4 ?登錄注冊(cè)功能的實(shí)現(xiàn)
2.3.2、定位模塊的實(shí)現(xiàn)
定位模塊可以查看用戶在校園內(nèi)當(dāng)前所處的位置信息,在本系統(tǒng)中用戶首先登錄系統(tǒng),在主界面中點(diǎn)擊移動(dòng)校園,然后在彈出的功能選項(xiàng)中選擇定位。該部分的界面布局LAyouT文件MAP.xML中頂端是兩個(gè)RADIoBuTTon按鈕,分別實(shí)現(xiàn)交通地圖模式和衛(wèi)星地圖模式的切換;中間是一個(gè)MAPVIEw,用來顯示定位之后的結(jié)果;界面的底端是兩個(gè)BuTTon按鈕,可以實(shí)現(xiàn)地圖的放大和縮小。本模塊功能實(shí)現(xiàn)流程如圖5所示。
圖5 定位過程的流程
其中,部分關(guān)鍵代碼及參數(shù)設(shè)置如下:
//通過CRITERIA獲取最好的PRoVIDER
//設(shè)置精度、海拔、方向、費(fèi)用、耗電
CRITERIACRITERIA=nEwCRITERIA();
CRITERIA.SETACCuRACy(CRITERIA.ACCURACY_FINE);
CRITERIA.SETALTITuDEREQuIRED(fALSE);
CRITERIA.SETBEARINgREQuIRED(fALSE);
CRITERIA.SETCoSTALLowED(fALSE);
CRITERIA.SETPowERREQuIREMEnT(CRITERIA.PowER_
Low);
LoCATIonMAnA(yù)gER=(LoCATIonMAnA(yù)gER)gETSySTEMSER-
VICE(ConTExT.LoCATIoN_SERVICE);
PRoVIDER=LoCATIonMAnA(yù)gER.gETBESTPRoVIDER(CRITERIA,
TRuE);
功能運(yùn)行結(jié)果如圖6所示。
圖6 ?定位結(jié)果
2.3.3、校內(nèi)地點(diǎn)查詢模塊的實(shí)現(xiàn)
本模塊分為兩個(gè)界面,一個(gè)查詢界面;一個(gè)地圖顯示界面。當(dāng)用戶選擇要查詢的地點(diǎn)后點(diǎn)擊查詢,就會(huì)跳轉(zhuǎn)到地圖顯示界面定位到查詢地點(diǎn)。
本模塊的查詢界面SELECT.xML文件主要由一個(gè)下拉列表SPINnER和一個(gè)查詢BuTTon構(gòu)成,SPINnER的ID是Android:ID=“@+I(xiàn)D/SPINnER”,通過R.ID.SPINnER取得該組件。SPINnER下拉列表中列出了學(xué)校內(nèi)部各個(gè)地點(diǎn),每個(gè)地點(diǎn)的精度、緯度、名稱等信息都存儲(chǔ)在DBUTIL.JAVA文件中,用戶在SPINnER中選擇一個(gè)地點(diǎn),單擊查詢后就會(huì)把被選地點(diǎn)的經(jīng)緯度等信息傳送到MARK.JAVA中,在MARK類中通過查詢語句在數(shù)據(jù)庫中查詢地點(diǎn)的經(jīng)緯度,創(chuàng)建一個(gè)BunDLE,把經(jīng)緯度信息、站點(diǎn)名等數(shù)據(jù)一起打包,放入字符串JD,wD和CHAngSuo中。通過如下代碼把數(shù)據(jù)傳入MAPACTIVITy中。
INTEnTINTEnT=nEwINTEnT(THIS,MAPACTIVITy.CLASS);
INTEnT.PuTExTRAS(BunDLE);
在MAPACTIVITy中通過新建BunDLE對(duì)象來獲取經(jīng)緯度信息,然后轉(zhuǎn)變?yōu)榻?jīng)緯度對(duì)象GEoPoINTgP。然后在MAPACTIVITy中引用oVERLAyACTIVITy,通過其中的DRAw()方法,把經(jīng)緯度坐標(biāo)轉(zhuǎn)換成屏幕坐標(biāo),在屏幕上顯示繪制的圖標(biāo)。
校內(nèi)地點(diǎn)查詢的開發(fā)流程如圖7所示。
圖7 ? 地點(diǎn)搜索模塊
地點(diǎn)查詢界面和查詢功能運(yùn)行結(jié)果如圖8所示。
圖8 校內(nèi)場(chǎng)所搜索結(jié)果
3、結(jié)論
該文的主旨是在Android平臺(tái)上開發(fā)一個(gè)校園LBS應(yīng)用系統(tǒng),結(jié)合當(dāng)前大部分LBS軟件不能在小的場(chǎng)所中提供LBS服務(wù)的缺陷,以校園為例,根據(jù)校園人群的實(shí)際工作和生活環(huán)境設(shè)計(jì)了一個(gè)校園LBS系統(tǒng)。為校園中的教師、學(xué)生及陌生人群的工作和學(xué)習(xí)生活帶來了很大的便利。
隨著移動(dòng)互聯(lián)網(wǎng)和智能手機(jī)的普及,基于位置的服務(wù)將會(huì)迎來蓬勃的發(fā)展,人們將會(huì)越來越離不開位置服務(wù)。本系統(tǒng)的設(shè)計(jì)不僅可以應(yīng)用于校園系統(tǒng),還可以擴(kuò)展到其他的領(lǐng)域,為未來小區(qū)域內(nèi)LBS系統(tǒng)提供了參考。
評(píng)論