《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 一种基于无线定位技术的LBS应用
一种基于无线定位技术的LBS应用
2014年微型机与应用第9期
何锡标,陈淑荣
上海海事大学 信息工程学院,上海 201306
摘要: 基于位置服务LBS(Location Based Service)是移动终端利用通信运营商的移动通信网络或者其他定位方式(GPS、Wi-Fi等)来获取移动终端用户的地理位置信息,应用开发商基于此用户位置信息,为用户提供更多的增值服务,如无线订餐、打车、社区交友等。其中典型的应用有国外的Foursquare、Gowalla、Whrrl等,国内则有大众点评、微信、易信等。
Abstract:
Key words :

摘  要: 基于无线定位技术在Android智能手机平台上设计了一个无线购物的LBS系统。该系统针对传统GPS卫星信号无法良好覆盖复杂建筑物的应用局限性,利用百度地图API以及定位SDK确定定位因素;结合GPS、基站及Wi-Fi等信号的情况生成混合定位依据,根据定位依据实现移动客户端的地图显示、无线定位和线路导航功能;并在此基础上为移动用户提供无线购物服务。

关键词: 基于位置服务Android系统平台;定位;百度地图

       基于位置服务LBS(Location Based Service)是移动终端利用通信运营商的移动通信网络或者其他定位方式(GPS、Wi-Fi等)来获取移动终端用户的地理位置信息,应用开发商基于此用户位置信息,为用户提供更多的增值服务,如无线订餐、打车、社区交友等。其中典型的应用有国外的Foursquare、Gowalla、Whrrl等,国内则有大众点评、微信、易信等。

       LBS应用的核心是通过定位技术来获取移动终端的地理位置信息,通常将定位技术主要分为基于网络的定位技术和基于移动终端定位技术两大类。常见的基于网络的定位技术包括蜂窝网络中的到达时间TOA、到达角度AOA、到达时间差TDOA和Wi-Fi无线系统中基于信号强度RSSI定位,RSSI包括信号强度指纹定位和信号强度建模定位两种方法。Microsoft设计的RADAR系统是一个典型的基于信号强度指纹分析的定位系统,而参考文献[1]则采用一种基于权值选择的定位策略,由于Wi-Fi定位范围有限,常用于室内定位。基于终端的定位技术通常有卫星导航定位GPS和网络辅助的GPS定位等,它们是获取室外地理位置的有效方式。GPS系统根据星历参数EPH和历书参数ALM测算到卫星与用户之间的相对位置,借助于导航算法最小二乘法或者卡尔曼滤波法[2]计算得到用户的地理位置。但GPS卫星信号不容易穿透各种复杂的建筑物,仅仅适用于室外定位并且初次定位时间长。

       针对几种传统定位技术应用的局限性,本文借助于百度地图API以及定位SDK,结合多种定位技术,采用混合定位的方式获取移动终端的地理位置,并基于此设计了一个无线购物LBS系统。移动客户端通过该应用除了实现无线购物功能外,还实现了移动用户的地理位置定位、路线导航及选择个性化服务。系统服务器为客户端提供无线购物服务,并实现管理员后台管理和维护操作功能。

1 LBS系统架构与方案设计

       LBS应用系统通常由移动终端、内容提供商、通信网络和定位组件[3]4个部分组成,如图1所示。移动终端是连接网络能够进行语音和数据通信的手持电子设备;内容提供商是为移动终端提供数据服务的载体,如数据库服务器、Web服务器和应用服务器等;通信网络是移动终端与内容提供商之间进行数据交互的通道;定位组件是为了实现移动终端的定位导航功能,如GPS定位卫星、移动网络基站和无线网络等。

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

       利用混合定位依据实现Android智能手机无线定位后,为移动用户提供无线购物功能。无线购物系统基于C/S体系架构,其中服务器端主要实现用户信息和商品信息维护、处理客户端发来的HTTP请求以及实现管理员后台操作;手机客户端实现用户注册登录、商品浏览、购买、评价以及用户地理位置定位和线路导航功能,如图2所示。另外,客户端还将实现地图加载、地图浏览和地图查询功能。

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

       系统服务器利用MyEclipse集成开发环境,将服务部署在Apache Tomcat应用服务器上,后台数据使用MySQL以及Navicat数据库管理工具以便后台数据的存储和维护,通过JDBC的方式进行数据访问。客户端基于Android平台通过XML语言进行用户的UI设计,用Java语言设计Activity、Service等组件以及HTTP通信接口,以实现客户端与服务器端的信息交互。

2 系统实现及关键技术

2.1 服务器端设计模型

       无线购物系统服务器端搭载在Apache Tomcat服务器上,采用MVC设计模型,如图3所示。通过Java Bean封装数据作为数据模型,JSP和HTML等技术完成服务器端Web页面的设计,利用Java语言设计Servlet作为控制器,控制着整个服务器端的响应并且完成客户端用户请求处理。

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

       MVC设计模型将系统服务分成Model、View和Controller 3个基本部分,将系统业务逻辑与数据显示分离,从而提高应用系统的可扩展性和维护性。例如管理员登录系统后向Servlet发送请求,Servlet将请求参数封装至Java Bean中实现相关数据更新,根据请求类型查询后台数据库,填充查询结果到相应的视图页面并显示在浏览器中,以实现管理员对无线购物系统的管理和维护。

2.2 系统定位原理及过程

       利用百度地图API实现移动终端的混合定位,首先需把百度地图的开发包locSDK.jar文件以及与定位相关的liblocSDK.so文件导入工程中。移动终端的混合定位过程为LBS应用程序通过定位SDK发起定位请求,定位SDK收到请求后根据定位因素,即终端的网络状态(如GPS信号、Wi-Fi信号或者基站信号等)生成相应的定位依据,将定位依据发送至定位服务器,服务器处理定位请求后将定位结果经由定位SDK最终回送给LBS应用程序,为移动用户提供必要的地理位置信息和导航路线信息,如图4所示。

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

       利用百度地图API开发过程中用到的几个主要关键类如下。

       (1)Map View:一个显示地图的视图,当被焦点选中时,它能捕获按键事件和触摸手势去平移和缩放地图;

       (2)GeoPoint:表示一个地理坐标点,存放经度和纬度,以微度的整数形式存储;

       (3)MKEvent:地图事件类,主要功能是实现网络连接、网络数据验证和授权验证等;

       (4)LocationData:用户位置信息,存放信息包含了定位精度、经纬度坐标、GPS定位卫星数目和定位时速度等;

       (5)LocationClient:定位SDK核心类,实现定位参数设置、注册监听函数及发起定位功能;

       (6)BDLocation:封装了定位SDK的定位结果,通过该类用户可以获取位置的坐标和精度半径等信息。

       移动用户终端将依据实时的网络情况采用混合定位方式返回用户的地理位置信息。在进行定位开发时,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对象创建Statement对象;(4)使用Statement执行SQL语句;(5)获取操作结果集;(6)回收数据库资源,包括关闭ResultSet、Statement和Connection对象等资源。

       这样,通过JDBC访问方式实现对主流数据库的操作。并且利用JDBC操作数据库可以实现跨数据库、跨平台,具有非常优秀的可移植性能。

2.4 服务器与客户端HTTP通信

       在无线购物系统中,客户端在注册登录、浏览和购买商品时必须将用户信息及商品信息封装后向服务器端发起请求,以得到服务器端的响应数据。HTTP协议是实现客户端与服务器端数据交互和通信的主要途径。客户端通过GET和POST两种请求方式向Web服务器发送请求。服务器端控制器Servlet将根据客户端发起的请求类型调用不同的响应函数对客户端请求进行相应处理。Web服务器将处理结果回送到客户端进行界面更新,客户端发送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系统服务器端在MyEclipse 8.5集成环境中开发,部署于Tomcat 7.0应用服务器,数据库采用MySQL 5.5;客户端由Eclipse集成开发平台和Android ADT组成,利用Android智能手机对所开发的系统进行测试。

       用户通过无线购物应用获取到感兴趣的商家地址以及商品详细信息,如图5(a)所示。移动用户向定位服务器发起定位请求,获取到移动终端的当前位置,如图5(b)所示,百度定位SDK将获取得到的定位信息通过定位图层显示在终端上,并显示出了用户的当前经纬度信息。系统还为用户和商家之间提供了合理的驾车导航路线,用户可以选择送货上门服务或者到店取货服务,如图5(c)所示。

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

       本文基于Android智能手机平台,利用百度地图API及定位SDK结合多种定位技术设计并实现了一个无线购物LBS应用。移动用户借助于本系统可实现地理位置混合定位、地图导航,并向服务器获取基于位置的无线购物服务。

参考文献

[1] 雷地球,罗海勇,刘晓明.一种基于Wi-Fi的室内定位系统设计与实现[C].第5届全国普适计算学术会议,2010(10):77-79.

[2] 干国强.导航与定位——现代战争的北斗星[M].北京:国防工业出版社,2000.

[3] [西]Richard Ferraro,[土]Murat Aktihanoglu,LBS应用开发[M].李丽,译.北京:人民邮电出版社,2012.

[4] 周傲英,杨彬,金澈清,等.基于位置的服务:架构与进展[J].计算机学报,2011,34(7):1156-1157.

[5] 顾聪,陈益强,刘军发,等.基于Android平台的室内LBS系统设计与实现[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网站原创,未经授权禁止转载。