基于And roid的定位系统研发

2015-07-26 08:50牡丹江大学黑龙江牡丹江157011
山东工业技术 2015年1期
关键词:百度定位

宿 营(牡丹江大学,黑龙江 牡丹江 157011)

基于And roid的定位系统研发

宿营
(牡丹江大学,黑龙江牡丹江157011)

摘要:随着GPS、wi fi系统的应用,关于手机用户定位应用的需求也逐渐增多。本文主要讲述了基于Android操作系统的定位应用程序的系统设计及主要实现方法。

关键词:Android;定位;GPS;百度;LBS

随着智能手机的应用,GPS、wifi技术的成熟,关于手机用户定位应用的需求也逐渐增多,且利用LBS平台,研发一些更具有实用价值的APP,可大大方便手机用户的一些生活需要。本文主要讲述了基于Android操作系统的定位应用程序的的系统设计及主要实现方法。主要功能是:可实时查看某一手机用户所在的位置,并将位置信息发送至查看人手机上。

1 系统模块设计

定位系统主要分为三个模块:

模块一:被定位手机的客户端程序;

该程序被安装在被定位(跟踪)的手机上,主要功能是实时向服务器端发送手机当前的位置信息,包括地址、经纬度及时间。

模块二:查询位置信息的客户端程序;

该程序被安装在查询人的手机上,主要功能是手机用户可在程序中输入查询的手机用户名或电话号码,并发送至服务器端,服务器端将返回被定位人的位置信息,查询人可打开百度地图查看至详细位置。

模块三:服务器端数据服务系统;

该程序主要是接收被定位人(被查询人)手机上发来的位置信息,并存入数据库,以及根据查询人发来的手机号码在数据库中查询位置信息,并返回信息给查询人。

2 系统模块详细设计

模块一:被定位手机的客户端程序;

该程序被安装在被定位(跟踪)的手机上,主要功能是实时向服务器端发送手机当前的位置信息,包括地址、经纬度及时间,获得手机用户的位置信息需要用到“百度地图Android定位SDK”,百度地图Android定位SDK是为Android移动端应用提供的一套简单易用的LBS定位服务接口,专注于为广大开发者提供最好的综合定位服务,通过使用百度定位SDK,可以实现智能、精准、高效的定位功能。该套SDK免费对外开放在使用前,您需先申请密钥(ak)才可使用。主要代码如下:

locationClient=newLocationClient(getApplicationContext());

LocationClientOptionoption=newLocationClientOption();

option.setPriority(LocationClientOption.NetWorkFirst);option.setProd Name("LocationDemo");option.setScanSpan(UPDATE_TIME);

locationClient.setLocOption(option);

locationClient.registerLocationListener(newBDLocationListener(){ publicvoidonReceiveLocation(BDLocationlocation){ if(location==null){ return; }

time=location.getTime();lat=location.getLatitude();

lon=location.getLongitude();

if(location.getLocType()==BDLocation.TypeGpsLocation){ sb.append(location.getSatelliteNumber());addr=sb.toString();}

elseif(location.getLocType()==BDLocation.TypeNetWorkLocation)

{sb.append(location.getAddrStr());addr=location.getAddrStr();}

向服务器端发送被定位人的位置信息

connect_net("http://192.168.11.122/insert_db.jsp?phone="+phone+" &time="+time+"&addr="+addr+"&lat="+lat+"&lon="+lon);

模块二:查询位置信息的客户端程序;

该程序被安装在查询人的手机上,主要功能是手机用户可在程序中输入查询的手机用户名或电话号码,并发送至服务器端,服务器端将返回被定位人的位置信息,查询人可打开百度地图查看详细位置,为了可以使用百度地图,需要下载“百度地图Android地图SDK”,并且在百度LBS平台上,将项目与安装码共同生成的访问用AK加入代码中,并加载baidumapapi.jar,libBaiduMapSDK.so文件,程序如下:

connect_net("http://192.168.1.23/get_db.jsp?phone="+phone);

Stringdata=m sg.getData().getString("data");array1=new JSONArray(data);for(inti=0;i<array1.length();++i){JSONObjecto= (JSONObject)array1.get(i);a.add(o.getString("time")+o.getString("addr"));} ls.setAdapter(newArrayAdapter<String>(MainActivity.this,android.R.layout. simple_list_item_1,a));

查询人可打开百度地图查看详细位置。

使用地图sdk前需先初始化BMapManager,这个必须在setContentView()先初始化。

mBMapManager=newBMapManager(this);setContentView(R.layout. activity_map);

mMapView=(MapView)findViewById(R.id.bmapView);//获取百度地图控件实例

mMapController=mMapView.getController();//获取地图控制器mMapController.enableClick(true);//设置地图是否响应点击事件mMapView.setBuiltInZoomControls(true);//显示内置缩放控件

geoPoint=newGeoPoint((int)(Double.parseDouble(lat)*1E6),(int) (Double.parseDouble(lon)*1E6));mMapController.setCenter(geoPoint);

mMapController.animateTo(geoPoint);模块三:服务器端数据服务系统;

该程序主要是接收被定位人(被查询人)手机上发来的位置信息,并存入数据库,以及根据查询人发来的手机号码在数据库中查询位置信息,并返回信息给查询人;该程序被安装在服务器端,服务器端程序为web程序,可用tom cat+jsp+mysql组合,主要分为两个页

面程序,一个是用于接收被定位人手机上发来的位置信息;另一页面程序用于接收查询人的信息,并将被定位人的位置信息返回给查询人。程序如下:

程序一:接收被定位人手机上发来的位置信息,并插入到服务器的数据库中;

insertintodw_info(up_name,up_time,addr,lat,lon)values(phone, time,addr,lat,lon)";

程序二,将被定位人的位置信息返回给查询人;

根据电话在数据表中查询位置信息,将查询到的信息组织成JSON数组,并发到查询人的手机终端;

while(rs.next()){Map<String, String> cell=new HashMap<String, String>();

cell.put("lat",rs.getString("lat"));cell.put("lon",rs.getString("lon"));

cell.put("time",rs.get String("up_time"));cell.put("addr",rs. get String("addr"));data.add(cell);}JSONArray array1=new JSONA rray(data); out.print(array1);}

参考文献:

[1]胡舒鹏.基于Android系统的手机地图探索与实践[J].硅谷,2012(03).

[2]吴林,熊滔,蔡永香.基于Android手机的地图应用设计与开发[J].城市勘测,2011(02).

作者简介:宿营(1976-),女,副教授,研究方向:软件开发。

猜你喜欢
百度定位
《导航定位与授时》征稿简则
Robust adaptive UKF based on SVR for inertial based integrated navigation
银行业对外开放再定位
少儿智能定位鞋服成新宠
把握新定位、新要求 推动人大工作创新发展
百度年度热搜榜
不懂就百度
百度年度人气萌娃