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