《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 一種基于無線定位技術(shù)的LBS應(yīng)用
一種基于無線定位技術(shù)的LBS應(yīng)用
2014年微型機(jī)與應(yīng)用第9期
何錫標(biāo),陳淑榮
上海海事大學(xué) 信息工程學(xué)院,,上海 201306
摘要: 基于位置服務(wù)LBS(Location Based Service)是移動(dòng)終端利用通信運(yùn)營商的移動(dòng)通信網(wǎng)絡(luò)或者其他定位方式(GPS,、Wi-Fi等)來獲取移動(dòng)終端用戶的地理位置信息,應(yīng)用開發(fā)商基于此用戶位置信息,,為用戶提供更多的增值服務(wù),,如無線訂餐,、打車、社區(qū)交友等,。其中典型的應(yīng)用有國外的Foursquare、Gowalla,、Whrrl等,,國內(nèi)則有大眾點(diǎn)評、微信,、易信等,。
Abstract:
Key words :

摘  要: 基于無線定位技術(shù)在Android智能手機(jī)平臺上設(shè)計(jì)了一個(gè)無線購物的LBS系統(tǒng)。該系統(tǒng)針對傳統(tǒng)GPS衛(wèi)星信號無法良好覆蓋復(fù)雜建筑物的應(yīng)用局限性,,利用百度地圖API以及定位SDK確定定位因素,;結(jié)合GPS、基站及Wi-Fi等信號的情況生成混合定位依據(jù),,根據(jù)定位依據(jù)實(shí)現(xiàn)移動(dòng)客戶端的地圖顯示,、無線定位和線路導(dǎo)航功能;并在此基礎(chǔ)上為移動(dòng)用戶提供無線購物服務(wù),。

關(guān)鍵詞: 基于位置服務(wù),;Android系統(tǒng)平臺;定位,;百度地圖

       基于位置服務(wù)LBS(Location Based Service)是移動(dòng)終端利用通信運(yùn)營商的移動(dòng)通信網(wǎng)絡(luò)或者其他定位方式(GPS,、Wi-Fi等)來獲取移動(dòng)終端用戶的地理位置信息,應(yīng)用開發(fā)商基于此用戶位置信息,,為用戶提供更多的增值服務(wù),,如無線訂餐、打車,、社區(qū)交友等,。其中典型的應(yīng)用有國外的Foursquare、Gowalla,、Whrrl等,,國內(nèi)則有大眾點(diǎn)評、微信,、易信等,。

       LBS應(yīng)用的核心是通過定位技術(shù)來獲取移動(dòng)終端的地理位置信息,通常將定位技術(shù)主要分為基于網(wǎng)絡(luò)的定位技術(shù)和基于移動(dòng)終端定位技術(shù)兩大類,。常見的基于網(wǎng)絡(luò)的定位技術(shù)包括蜂窩網(wǎng)絡(luò)中的到達(dá)時(shí)間TOA,、到達(dá)角度AOA、到達(dá)時(shí)間差TDOA和Wi-Fi無線系統(tǒng)中基于信號強(qiáng)度RSSI定位,,RSSI包括信號強(qiáng)度指紋定位和信號強(qiáng)度建模定位兩種方法,。Microsoft設(shè)計(jì)的RADAR系統(tǒng)是一個(gè)典型的基于信號強(qiáng)度指紋分析的定位系統(tǒng),,而參考文獻(xiàn)[1]則采用一種基于權(quán)值選擇的定位策略,由于Wi-Fi定位范圍有限,,常用于室內(nèi)定位,。基于終端的定位技術(shù)通常有衛(wèi)星導(dǎo)航定位GPS和網(wǎng)絡(luò)輔助的GPS定位等,,它們是獲取室外地理位置的有效方式,。GPS系統(tǒng)根據(jù)星歷參數(shù)EPH和歷書參數(shù)ALM測算到衛(wèi)星與用戶之間的相對位置,借助于導(dǎo)航算法最小二乘法或者卡爾曼濾波法[2]計(jì)算得到用戶的地理位置,。但GPS衛(wèi)星信號不容易穿透各種復(fù)雜的建筑物,,僅僅適用于室外定位并且初次定位時(shí)間長。

       針對幾種傳統(tǒng)定位技術(shù)應(yīng)用的局限性,,本文借助于百度地圖API以及定位SDK,,結(jié)合多種定位技術(shù),采用混合定位的方式獲取移動(dòng)終端的地理位置,,并基于此設(shè)計(jì)了一個(gè)無線購物L(fēng)BS系統(tǒng),。移動(dòng)客戶端通過該應(yīng)用除了實(shí)現(xiàn)無線購物功能外,還實(shí)現(xiàn)了移動(dòng)用戶的地理位置定位,、路線導(dǎo)航及選擇個(gè)性化服務(wù),。系統(tǒng)服務(wù)器為客戶端提供無線購物服務(wù),并實(shí)現(xiàn)管理員后臺管理和維護(hù)操作功能,。

1 LBS系統(tǒng)架構(gòu)與方案設(shè)計(jì)

       LBS應(yīng)用系統(tǒng)通常由移動(dòng)終端,、內(nèi)容提供商、通信網(wǎng)絡(luò)和定位組件[3]4個(gè)部分組成,,如圖1所示,。移動(dòng)終端是連接網(wǎng)絡(luò)能夠進(jìn)行語音和數(shù)據(jù)通信的手持電子設(shè)備;內(nèi)容提供商是為移動(dòng)終端提供數(shù)據(jù)服務(wù)的載體,,如數(shù)據(jù)庫服務(wù)器,、Web服務(wù)器和應(yīng)用服務(wù)器等;通信網(wǎng)絡(luò)是移動(dòng)終端與內(nèi)容提供商之間進(jìn)行數(shù)據(jù)交互的通道,;定位組件是為了實(shí)現(xiàn)移動(dòng)終端的定位導(dǎo)航功能,,如GPS定位衛(wèi)星、移動(dòng)網(wǎng)絡(luò)基站和無線網(wǎng)絡(luò)等,。

J5N[__S1QNG%)RXF8@0%XSR.png

       利用混合定位依據(jù)實(shí)現(xiàn)Android智能手機(jī)無線定位后,,為移動(dòng)用戶提供無線購物功能。無線購物系統(tǒng)基于C/S體系架構(gòu),,其中服務(wù)器端主要實(shí)現(xiàn)用戶信息和商品信息維護(hù),、處理客戶端發(fā)來的HTTP請求以及實(shí)現(xiàn)管理員后臺操作;手機(jī)客戶端實(shí)現(xiàn)用戶注冊登錄、商品瀏覽,、購買,、評價(jià)以及用戶地理位置定位和線路導(dǎo)航功能,如圖2所示,。另外,,客戶端還將實(shí)現(xiàn)地圖加載、地圖瀏覽和地圖查詢功能,。

W(RX}QRL~())O5(N_5GYV6Q.png

       系統(tǒng)服務(wù)器利用MyEclipse集成開發(fā)環(huán)境,,將服務(wù)部署在Apache Tomcat應(yīng)用服務(wù)器上,后臺數(shù)據(jù)使用MySQL以及Navicat數(shù)據(jù)庫管理工具以便后臺數(shù)據(jù)的存儲和維護(hù),,通過JDBC的方式進(jìn)行數(shù)據(jù)訪問??蛻舳嘶贏ndroid平臺通過XML語言進(jìn)行用戶的UI設(shè)計(jì),,用Java語言設(shè)計(jì)Activity、Service等組件以及HTTP通信接口,,以實(shí)現(xiàn)客戶端與服務(wù)器端的信息交互,。

2 系統(tǒng)實(shí)現(xiàn)及關(guān)鍵技術(shù)

2.1 服務(wù)器端設(shè)計(jì)模型

       無線購物系統(tǒng)服務(wù)器端搭載在Apache Tomcat服務(wù)器上,采用MVC設(shè)計(jì)模型,,如圖3所示,。通過Java Bean封裝數(shù)據(jù)作為數(shù)據(jù)模型,JSP和HTML等技術(shù)完成服務(wù)器端Web頁面的設(shè)計(jì),,利用Java語言設(shè)計(jì)Servlet作為控制器,,控制著整個(gè)服務(wù)器端的響應(yīng)并且完成客戶端用戶請求處理。

FA)H86J]G_~E2_6(8)])0LR.png

       MVC設(shè)計(jì)模型將系統(tǒng)服務(wù)分成Model,、View和Controller 3個(gè)基本部分,,將系統(tǒng)業(yè)務(wù)邏輯與數(shù)據(jù)顯示分離,從而提高應(yīng)用系統(tǒng)的可擴(kuò)展性和維護(hù)性,。例如管理員登錄系統(tǒng)后向Servlet發(fā)送請求,,Servlet將請求參數(shù)封裝至Java Bean中實(shí)現(xiàn)相關(guān)數(shù)據(jù)更新,根據(jù)請求類型查詢后臺數(shù)據(jù)庫,,填充查詢結(jié)果到相應(yīng)的視圖頁面并顯示在瀏覽器中,,以實(shí)現(xiàn)管理員對無線購物系統(tǒng)的管理和維護(hù)。

2.2 系統(tǒng)定位原理及過程

       利用百度地圖API實(shí)現(xiàn)移動(dòng)終端的混合定位,,首先需把百度地圖的開發(fā)包locSDK.jar文件以及與定位相關(guān)的liblocSDK.so文件導(dǎo)入工程中,。移動(dòng)終端的混合定位過程為LBS應(yīng)用程序通過定位SDK發(fā)起定位請求,定位SDK收到請求后根據(jù)定位因素,,即終端的網(wǎng)絡(luò)狀態(tài)(如GPS信號,、Wi-Fi信號或者基站信號等)生成相應(yīng)的定位依據(jù),將定位依據(jù)發(fā)送至定位服務(wù)器,服務(wù)器處理定位請求后將定位結(jié)果經(jīng)由定位SDK最終回送給LBS應(yīng)用程序,,為移動(dòng)用戶提供必要的地理位置信息和導(dǎo)航路線信息,,如圖4所示。

]K~ME6$11GO8J])1NV%JAFK.png

       利用百度地圖API開發(fā)過程中用到的幾個(gè)主要關(guān)鍵類如下,。

       (1)Map View:一個(gè)顯示地圖的視圖,,當(dāng)被焦點(diǎn)選中時(shí),它能捕獲按鍵事件和觸摸手勢去平移和縮放地圖,;

       (2)GeoPoint:表示一個(gè)地理坐標(biāo)點(diǎn),,存放經(jīng)度和緯度,以微度的整數(shù)形式存儲,;

       (3)MKEvent:地圖事件類,,主要功能是實(shí)現(xiàn)網(wǎng)絡(luò)連接、網(wǎng)絡(luò)數(shù)據(jù)驗(yàn)證和授權(quán)驗(yàn)證等,;

       (4)LocationData:用戶位置信息,,存放信息包含了定位精度、經(jīng)緯度坐標(biāo),、GPS定位衛(wèi)星數(shù)目和定位時(shí)速度等,;

       (5)LocationClient:定位SDK核心類,實(shí)現(xiàn)定位參數(shù)設(shè)置,、注冊監(jiān)聽函數(shù)及發(fā)起定位功能,;

       (6)BDLocation:封裝了定位SDK的定位結(jié)果,通過該類用戶可以獲取位置的坐標(biāo)和精度半徑等信息,。

       移動(dòng)用戶終端將依據(jù)實(shí)時(shí)的網(wǎng)絡(luò)情況采用混合定位方式返回用戶的地理位置信息,。在進(jìn)行定位開發(fā)時(shí),Manifest.xml配置文件必須聲明應(yīng)用程序的使用權(quán)限如Wi-Fi,、Internet,、Network等,移動(dòng)客戶端定位的部分示例代碼如下,。

mLocClient=new LocationClient(this),; //定位初始化

locData=new LocationData();

mLocClient.registerLocationListener(myListener),;

LocationClientOption option=new LocationClientOption(),;

option.setOpenGps(true);//打開GPS

option.setCoorType("bd09ll"),; //設(shè)置坐標(biāo)類型

mLocClient.setLocOption(option),;

mLocClient.start();

myLocationOverlay=new locationOverlay(mMapView),;

//定位圖層初始化

myLocationOverlay.setData(locData),; //設(shè)置定位數(shù)據(jù)

mMapView.getOverlays().add(myLocationOverlay),;

//加定位圖層

myLocationOverlay.enableCompass();

mMapView.refresh(),;//修改定位數(shù)據(jù)后刷新圖層生效

2.3 JDBC數(shù)據(jù)庫訪問技術(shù)

       服務(wù)器端的后臺利用MySQL關(guān)系型數(shù)據(jù)庫,,存儲著用戶信息、商品信息,、后臺管理員信息等數(shù)據(jù),,服務(wù)器端利用JDBC(Java Database Connectivity)方式連接關(guān)系型數(shù)據(jù)庫,通過SQL結(jié)構(gòu)化查詢語言來實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的增刪改查操作,。JDBC編程步驟大致分為以下幾步:(1)加載數(shù)據(jù)庫驅(qū)動(dòng),;(2)通過DriverManager獲取數(shù)據(jù)庫連接;(3)通過Connection對象創(chuàng)建Statement對象,;(4)使用Statement執(zhí)行SQL語句,;(5)獲取操作結(jié)果集;(6)回收數(shù)據(jù)庫資源,,包括關(guān)閉ResultSet,、Statement和Connection對象等資源。

       這樣,,通過JDBC訪問方式實(shí)現(xiàn)對主流數(shù)據(jù)庫的操作。并且利用JDBC操作數(shù)據(jù)庫可以實(shí)現(xiàn)跨數(shù)據(jù)庫,、跨平臺,,具有非常優(yōu)秀的可移植性能。

2.4 服務(wù)器與客戶端HTTP通信

       在無線購物系統(tǒng)中,,客戶端在注冊登錄,、瀏覽和購買商品時(shí)必須將用戶信息及商品信息封裝后向服務(wù)器端發(fā)起請求,以得到服務(wù)器端的響應(yīng)數(shù)據(jù),。HTTP協(xié)議是實(shí)現(xiàn)客戶端與服務(wù)器端數(shù)據(jù)交互和通信的主要途徑,。客戶端通過GET和POST兩種請求方式向Web服務(wù)器發(fā)送請求,。服務(wù)器端控制器Servlet將根據(jù)客戶端發(fā)起的請求類型調(diào)用不同的響應(yīng)函數(shù)對客戶端請求進(jìn)行相應(yīng)處理,。Web服務(wù)器將處理結(jié)果回送到客戶端進(jìn)行界面更新,客戶端發(fā)送HTTP請求的Java示例代碼如下,。

public static HttpClient httpClient=new DefaultHttpClient(),;

public static String getRequest(String url) throws Exception{

HttpGet get=new HttpGet(url);  //GET請求方式

HttpResponse httpResponse=httpClient.execute(get),;

 if(httpResponse.getStatusLine().getStatusCode()==200){

  String result=EntityUtils.toString(httpResponse.getEntity()),;

   return result;

}

return null,;

}

public static String postRequest(String url,,Map<String,String> rawParams)throws Exception{

HttpPost post = new HttpPost(url);  //POST請求方式

List<NameValuePair> params=new arrayList<NameValuePair>(),;

for(String key:rawParams.keySet()) {//封裝請求參數(shù)

params.add(new BasicNameValuePair(key,,rawParams.get(key)));

 }

 ……

 return null,;

}

3 實(shí)驗(yàn)結(jié)果與分析

       無線購物L(fēng)BS系統(tǒng)服務(wù)器端在MyEclipse 8.5集成環(huán)境中開發(fā),,部署于Tomcat 7.0應(yīng)用服務(wù)器,數(shù)據(jù)庫采用MySQL 5.5,;客戶端由Eclipse集成開發(fā)平臺和Android ADT組成,,利用Android智能手機(jī)對所開發(fā)的系統(tǒng)進(jìn)行測試。

       用戶通過無線購物應(yīng)用獲取到感興趣的商家地址以及商品詳細(xì)信息,,如圖5(a)所示,。移動(dòng)用戶向定位服務(wù)器發(fā)起定位請求,獲取到移動(dòng)終端的當(dāng)前位置,,如圖5(b)所示,,百度定位SDK將獲取得到的定位信息通過定位圖層顯示在終端上,并顯示出了用戶的當(dāng)前經(jīng)緯度信息,。系統(tǒng)還為用戶和商家之間提供了合理的駕車導(dǎo)航路線,,用戶可以選擇送貨上門服務(wù)或者到店取貨服務(wù),如圖5(c)所示,。

W%8`G]9}@0EHY~552RHKY[C.png

       本文基于Android智能手機(jī)平臺,,利用百度地圖API及定位SDK結(jié)合多種定位技術(shù)設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)無線購物L(fēng)BS應(yīng)用。移動(dòng)用戶借助于本系統(tǒng)可實(shí)現(xiàn)地理位置混合定位,、地圖導(dǎo)航,,并向服務(wù)器獲取基于位置的無線購物服務(wù)。

參考文獻(xiàn)

[1] 雷地球,,羅海勇,,劉曉明.一種基于Wi-Fi的室內(nèi)定位系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[C].第5屆全國普適計(jì)算學(xué)術(shù)會議,2010(10):77-79.

[2] 干國強(qiáng).導(dǎo)航與定位——現(xiàn)代戰(zhàn)爭的北斗星[M].北京:國防工業(yè)出版社,,2000.

[3] [西]Richard Ferraro,,[土]Murat Aktihanoglu,LBS應(yīng)用開發(fā)[M].李麗,,譯.北京:人民郵電出版社,,2012.

[4] 周傲英,楊彬,,金澈清,,等.基于位置的服務(wù):架構(gòu)與進(jìn)展[J].計(jì)算機(jī)學(xué)報(bào),2011,,34(7):1156-1157.

[5] 顧聰,,陳益強(qiáng),,劉軍發(fā),等.基于Android平臺的室內(nèi)LBS系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),,2012,,33(1):396-400.

[6] RETSCHER G, HECHT T. Investigation of location capabilities of four different smart phones for LBS navigation applications[C]. 2012 International Conference on Indoor Positioning and Indoor Navigation,, 2012:1-6.

[7] KUMAR S,, QADEER M A, GUPTA A. Location based services using Android[C]. IEEE International Conference on Internet Multimedia Services Architecture and Applications(IMSAA),, 2009:1-5.

[8] KUSHWAHA A,, HUSHWAHA V. Location based services using Android mobile operating system[J]. International Journal of Advances in Engineering & Technology,2011(3):14-20.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。