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

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

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

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

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

       針對幾種傳統(tǒng)定位技術應用的局限性,本文借助于百度地圖API以及定位SDK,結合多種定位技術,采用混合定位的方式獲取移動終端的地理位置,并基于此設計了一個無線購物LBS系統(tǒng)。移動客戶端通過該應用除了實現無線購物功能外,還實現了移動用戶的地理位置定位、路線導航及選擇個性化服務。系統(tǒng)服務器為客戶端提供無線購物服務,并實現管理員后臺管理和維護操作功能。

1 LBS系統(tǒng)架構與方案設計

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

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

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

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

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

2 系統(tǒng)實現及關鍵技術

2.1 服務器端設計模型

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

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

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

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

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

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

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

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

       (2)GeoPoint:表示一個地理坐標點,存放經度和緯度,以微度的整數形式存儲;

       (3)MKEvent:地圖事件類,主要功能是實現網絡連接、網絡數據驗證和授權驗證等;

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

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

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

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

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

locData=new LocationData();

mLocClient.registerLocationListener(myListener);

LocationClientOption option=new LocationClientOption();

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

option.setCoorType("bd09ll"); //設置坐標類型

mLocClient.setLocOption(option);

mLocClient.start();

myLocationOverlay=new locationOverlay(mMapView);

//定位圖層初始化

myLocationOverlay.setData(locData); //設置定位數據

mMapView.getOverlays().add(myLocationOverlay);

//加定位圖層

myLocationOverlay.enableCompass();

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

2.3 JDBC數據庫訪問技術

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

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

2.4 服務器與客戶端HTTP通信

       在無線購物系統(tǒng)中,客戶端在注冊登錄、瀏覽和購買商品時必須將用戶信息及商品信息封裝后向服務器端發(fā)起請求,以得到服務器端的響應數據。HTTP協(xié)議是實現客戶端與服務器端數據交互和通信的主要途徑。客戶端通過GET和POST兩種請求方式向Web服務器發(fā)送請求。服務器端控制器Servlet將根據客戶端發(fā)起的請求類型調用不同的響應函數對客戶端請求進行相應處理。Web服務器將處理結果回送到客戶端進行界面更新,客戶端發(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()) {//封裝請求參數

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

 }

 ……

 return null;

}

3 實驗結果與分析

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

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

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

       本文基于Android智能手機平臺,利用百度地圖API及定位SDK結合多種定位技術設計并實現了一個無線購物LBS應用。移動用戶借助于本系統(tǒng)可實現地理位置混合定位、地圖導航,并向服務器獲取基于位置的無線購物服務。

參考文獻

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

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

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

[4] 周傲英,楊彬,金澈清,等.基于位置的服務:架構與進展[J].計算機學報,2011,34(7):1156-1157.

[5] 顧聰,陳益強,劉軍發(fā),等.基于Android平臺的室內LBS系統(tǒng)設計與實現[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.


此內容為AET網站原創(chuàng),未經授權禁止轉載。