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