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