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

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

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

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

       LBS應(yīng)用的核心是通過(guò)定位技術(shù)來(lái)獲取移動(dòng)終端的地理位置信息,,通常將定位技術(shù)主要分為基于網(wǎng)絡(luò)的定位技術(shù)和基于移動(dòng)終端定位技術(shù)兩大類(lèi)。常見(jiàn)的基于網(wǎng)絡(luò)的定位技術(shù)包括蜂窩網(wǎng)絡(luò)中的到達(dá)時(shí)間TOA,、到達(dá)角度AOA,、到達(dá)時(shí)間差TDOA和Wi-Fi無(wú)線(xiàn)系統(tǒng)中基于信號(hào)強(qiáng)度RSSI定位,RSSI包括信號(hào)強(qiáng)度指紋定位和信號(hào)強(qiáng)度建模定位兩種方法,。Microsoft設(shè)計(jì)的RADAR系統(tǒng)是一個(gè)典型的基于信號(hào)強(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ū)參數(shù)ALM測(cè)算到衛(wèi)星與用戶(hù)之間的相對(duì)位置,借助于導(dǎo)航算法最小二乘法或者卡爾曼濾波法[2]計(jì)算得到用戶(hù)的地理位置,。但GPS衛(wèi)星信號(hào)不容易穿透各種復(fù)雜的建筑物,,僅僅適用于室外定位并且初次定位時(shí)間長(zhǎng)。

       針對(duì)幾種傳統(tǒng)定位技術(shù)應(yīng)用的局限性,,本文借助于百度地圖API以及定位SDK,,結(jié)合多種定位技術(shù),采用混合定位的方式獲取移動(dòng)終端的地理位置,,并基于此設(shè)計(jì)了一個(gè)無(wú)線(xiàn)購(gòu)物L(fēng)BS系統(tǒng),。移動(dòng)客戶(hù)端通過(guò)該應(yīng)用除了實(shí)現(xiàn)無(wú)線(xiàn)購(gòu)物功能外,還實(shí)現(xiàn)了移動(dòng)用戶(hù)的地理位置定位,、路線(xiàn)導(dǎo)航及選擇個(gè)性化服務(wù)。系統(tǒng)服務(wù)器為客戶(hù)端提供無(wú)線(xiàn)購(gòu)物服務(wù),,并實(shí)現(xiàn)管理員后臺(tái)管理和維護(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)行語(yǔ)音和數(shù)據(jù)通信的手持電子設(shè)備,;內(nèi)容提供商是為移動(dòng)終端提供數(shù)據(jù)服務(wù)的載體,,如數(shù)據(jù)庫(kù)服務(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ú)線(xiàn)網(wǎng)絡(luò)等,。

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

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

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

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

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

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

       無(wú)線(xiàn)購(gòu)物系統(tǒng)服務(wù)器端搭載在Apache Tomcat服務(wù)器上,采用MVC設(shè)計(jì)模型,,如圖3所示,。通過(guò)Java Bean封裝數(shù)據(jù)作為數(shù)據(jù)模型,JSP和HTML等技術(shù)完成服務(wù)器端Web頁(yè)面的設(shè)計(jì),,利用Java語(yǔ)言設(shè)計(jì)Servlet作為控制器,,控制著整個(gè)服務(wù)器端的響應(yīng)并且完成客戶(hù)端用戶(hù)請(qǐ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ā)送請(qǐng)求,,Servlet將請(qǐng)求參數(shù)封裝至Java Bean中實(shí)現(xiàn)相關(guān)數(shù)據(jù)更新,根據(jù)請(qǐng)求類(lèi)型查詢(xún)后臺(tái)數(shù)據(jù)庫(kù),,填充查詢(xún)結(jié)果到相應(yīng)的視圖頁(yè)面并顯示在瀏覽器中,,以實(shí)現(xiàn)管理員對(duì)無(wú)線(xiàn)購(gòu)物系統(tǒng)的管理和維護(hù),。

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

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

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

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

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

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

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

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

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

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

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

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

locData=new LocationData(),;

mLocClient.registerLocationListener(myListener),;

LocationClientOption option=new LocationClientOption(),;

option.setOpenGps(true);//打開(kāi)GPS

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

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ù)庫(kù)訪(fǎng)問(wèn)技術(shù)

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

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

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

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

public static HttpClient httpClient=new DefaultHttpClient(),;

public static String getRequest(String url) throws Exception{

HttpGet get=new HttpGet(url),;  //GET請(qǐng)求方式

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請(qǐng)求方式

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

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

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

 }

 ……

 return null,;

}

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

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

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

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

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

參考文獻(xiàn)

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

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

[3] [西]Richard Ferraro,,[土]Murat Aktihanoglu,,LBS應(yīng)用開(kāi)發(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平臺(tái)的室內(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)載。