基于Android的多人定位系统的设计与实现*

2016-01-01 10:55:54李冬睿赵建保许统德广东农工商职业技术学院计算机系广东广州50507广东农工商职业技术学院教务处广东广州50507
网络安全与数据管理 2015年8期
关键词:指南针好友百度

李冬睿,赵建保,许统德(.广东农工商职业技术学院 计算机系,广东 广州 50507;.广东农工商职业技术学院 教务处,广东 广州 50507)

基于Android的多人定位系统的设计与实现*

李冬睿1,赵建保1,许统德2
(1.广东农工商职业技术学院计算机系,广东 广州 510507;2.广东农工商职业技术学院教务处,广东 广州 510507)

目前大多数导航软件都采用指南针指向的单目标导航模式进行定位和导航,此模式无法进行一对一定位且导航指示不够简明,为了满足更多定位情境和提供更简明的导航指示,设计了一款基于Android的多人定位系统,该系统提供准确快捷的好友定位以及更多导航生活服务,具有多人定位、导航找人、定点集合等功能。在实际应用中,该系统取得较好的效果。

Android系统;定位;导航;一对一定位;定点集合;百度地图

0 引言

近年来,随着3G和4G[1]网络的日益完善,智能手机在国内的普及率越来越高,国内手机市场主要以Android手机和苹果手机为主流,而Android系统的开源性和免费性使其在国内手机市场占有更高的份额。目前,集定位与导航功能于一身的 Android主流APP有百度地图、高德地图和 Google地图[2],这些应用已实现汽车导航、公交换乘和步行导航等功能,都采用指南针指向的单目标导航模式进行定位和导航。虽然这些主流的导航软件都能很好地解决用户的定位和导航问题,但在某些应用场景却表现得无能为力,例如逛街找人、学生考勤、定点集合、老人或小孩跟踪定位、户外队员管理等。

为使地图资源能得到充分利用,能适应更多的应用场景,本文开发了一款基于Android的多人定位系统。该系统使用百度地图API,突破了以往导航定位的单目标模式,实现了一对一定位、多人定位、导航找人、定点集合、动态好友位置追踪与指向和手机防盗等功能,能更好地为便捷生活提供服务。

1 相关技术

1.1 Android平台

Android是Google开发的基于Linux平台的开源手机操作系统[3]。Android平台主要在操作系统和中间件支撑下,能够用于用户界面设计和应用软件开发[4]。Android自身集成丰富的API,且大部分代码开源。Android的应用框架层采用结构化设计,从而简化了 Android应用程序的开发[4]。Android四大组件包括 Activity、Service、BroadCastReceiver和 ContentProvider[5],Android应用程序的开发环境只需Eclipse和插件ADT即可[6]。

1.2百度地图API

百度地图 API是一套由 JavaScript语言编写的应用程序接口,它提供了网络地图服务的全部功能,包括地图数据、地图显示、地图操作、地图标注、地图编辑、地图查询等[7]。百度通过地图服务应用接口将应用开发平台和地理信息数据捆绑,将复杂的地理信息系统底层进行封装。用户可不必了解它的技术细节就能在应用中快速构建基础地理底图[8]。

2 需求分析

2.1功能描述

本系统为用户提供准确快捷的好友定位与导航生活服务,典型应用场景有逛街找人、学生考勤、定点集合、老人或小孩跟踪定位、户外队员管理等,因此,需具备以下7个功能:用户登录、用户注册、好友添加、防盗、多人定位、导航、一对一定位。具体功能详细描述如表1所示。

2.2用例分析

根据以上的功能描述,得出图1所示的用户用例图。

3 系统设计

3.1多人定位系统架构设计

为使本系统开发和维护更方便,并提高系统数据的安全性,本系统采用分层模型的设计思想,系统架构如图2所示。

3.2多人定位系统时序图

在用户使用本系统时,首先进行身份验证,如果是新用户则必须先注册,然后再登录,登录成功后可以选择相应的功能,包括防盗、添加好友和多人定位,在多人定位功能中可以实时显示好友所在位置以及集合点位置,并能实现3种方式的导航,还可进行一对一定位来实现好友互找。系统详细时序图如图3所示。

图1 用户用例图

图2 多人定位系统的分层架构设计

图3 多人定位系统的时序图

3.3定位功能设计

Android手机可通过 GPS+GPRS、只有 GPS和只有WiFi这3种情况下进行实时定位,利用百度地图API实现地图显示。终端的实时位置信息保存在定位服务器(定位服务器使用PHP开发)中,定位服务器收到各终端的定位请求后,将位置信息发回给终端,为终端提供必要的路线信息和导航信息。

4 多人定位系统主要功能的实现

4.1一对一定位的实现

当两个用户互相加为好友后,便可使用一对一定位功能,本功能以指针实时指向加距离的方式来实现定位,从而能更直观地反映好友相对于自己所在的位置和方向。

根据当前用户和目标用户的方向来进行实时更新指南针旋转,更新指南针旋转的线程代码如下:

//这是更新指南针旋转的线程,灵活使用 handler,每 20 ms检测方向变化值,对应更新指南针旋转

protected Runnable mCompassViewUpdater=new Runnable(){

@Override

public void run(){

if(mPointer!=null&&!mStopDrawing)

if(mDirection!=mTargetDirection)

//计算耗时最短的动画

float to=mTargetDirection;if(to-mDirection>180)

{to-=360;}

else if(to-mDirection<-180)

{to+=360;}

//限制MAX_ROTATE_DEGREE的最大速度

float distance=to-mDirection;

if(Math.abs(distance)>MAX_ROATE_DEGREE)

{distance=distance>0 MAX_ROATE_DEGREE:(-1.0f*

MAX_ROATE_DEGREE);}

//如果距离短的话需要减慢速度

mDirection=normalizeDegree(mDirection+((to-mDirection)*

m Interpolator.getInterpolation(Math.abs(distance)>

MAX_ROATE_DEGREE 0.4f:0.3f)));//用了一个加速动画去旋转图片

Log.e("test",""+mDirection);

float t=mDirection+target;

mPointer.updateDirection(t);//更新指南针旋转

mHandler.postDelayed(mCompassViewUpdater,20);//20 ms后重新执行自己,比定时器好

}}};

当两个用户不断移动位置时,通过两者的经、纬度实时更新两者的距离,更新距离的代码如下:

private void setjuli(int la,int lo){

GeoPoint p1=new GeoPoint((int)(Omylocation.getMyLocation().

latitude*1e6),(int)(Omylocation.getMyLocation().

l

ongitude*1e6));

GeoPoint p2=new GeoPoint(la,lo);

int jl=(int)(DistanceUtil.getDistance(p1,p2));

juli.setText(jl+"米");

target=get(p1.getLatitudeE6(),p1.getLongitudeE6

(),p2.getLatitudeE6(),p2.getLongitudeE6());

4.2添加集合点的实现

当要向好友添加集合点时,客户端向定位服务器发送添加集合点请求,添加请求代码如下:

public void AddCollection(ArrayList<String>array,int la,int lo)

throws Exception{

//添加集合点

String url=BASE_URL+"/addCollection.php";

int len=array.size();

String str="[";

for(int i=0;i<len;i++){str=str+"""+array.get(i)+""";if((i+1)<len){str=str+",";}}

str=str+"]";

Map<String,String>map=new HashMap<String,String>();

map.put("la",""+la);

map.put("lo",""+lo);

map.put("arr",str);

Log.e("info","addCollection la:"+la+"lo:"+lo);

Log.e("info",this.postRequest(url,map));

5 多人定位系统的应用

多人定位系统采用Android 4.2.2+PHP开发,使用多层架构设计。系统的登录、注册和功能选择界面如图4所示。

图4 登录、注册和功能选择界面

添加好友、刷新好友位置和导航选择界面如图5所示。

一对一定位、添加集合点以及查看好友最近登录时间如图6所示。

图5 添加好友、刷新好友位置和导航选择界面

图6 一对一定位、添加集合点以及查看好友界面

6 结论

本文详细介绍了一款基于 Android平台,利用百度地图API设计和实现的多人定位系统,实现了一对一定位、多人定位、导航找人、定点集合、动态好友位置追踪与指向和手机防盗等功能,该系统达到了预期的效果并成功上线使用。

[1]丁革媛,高宝芹,孙强.无线通信技术的发展研究[J].微型机与应用,2014,33(10):1-3,6.

[2]王秋颖,陆宇含,王成龙.电子地图在水利工程管理中的应用[J].电子技术与软件工程,2014,14(7):107.

[3]陈浩,张敏.基于 ARM的车载导航接收机应用软件设计与实现[J].计算机测量与控制,2013,21(3):813-815.

[4]农丽萍,王力虎,黄一平.Android在嵌入式车载导航系统的应用研究 [J].计算机工程与设计,2010,31(11):2473-2476.

[5]赵亮,张维.基于 Android技术的界面设计与研究[J].电脑知识与技术,2009,5(29):8183-8185.

[6]韩扬.Android应用软件安全评测工具的设计与实现[D].北京:北京交通大学,2012.

[7]王红崧,周海晏.基于百度地图 API的旅游地理信息系统开发[J].现代计算机(专业版),2012,23(8):57-59.

[8]李艳.基于地图API的 Web地图服务及应用研究[J].地理信息世界,2010(2):54-57.

Design and realization of multip layer positioning system based on Android

Li Dongrui1,Zhao Jianbao1,Xu Tongde2
(1.Department of Computer,Guangdong AIB Polytechnic College,Guangzhou 510507,China;2.Office of Academic Affairs,Guangdong AIBPolytechnic College,Guangzhou 510507,China)

Most of the navigation software uses single target mode of navigation compass point to position and navigate at present,which can′t achieve a person to a person positioning and concise navigation indication.A multiplayer positioning system based on Android is designed in order to meet the more localization context and provide a more concise navigation indicator.The system provides accurate and fast friend positioning and navigation service for life,to provide multi-person positioning,navigation for finding people,fiexd-place assemblies place and other functions.In practical application,this system achieved good results.

Android system;location;navigation;a person to a person positioning;fixed-place assemblies;Baidu map

TP392

A

1674-7720(2015)08-0076-04

2014-11-16)

李冬睿(1983-),通信作者,男,硕士,讲师,主要研究方向:图形图像处理、模式识别和嵌入式控制。E-mail:Ldr_1983@126.com。

赵建保(1978-),男,硕士,讲师,主要研究方向:多媒体信息处理与通信。

许统德(1980-),男,硕士,助理研究员,主要研究方向为:数据挖掘,模式识别。

广东省高等职业技术教育研究会课题(GDGZ14Y122 )

猜你喜欢
指南针好友百度
天然的指南针
观展指南针
汽车观察(2021年4期)2021-05-10 04:06:36
Robust adaptive UKF based on SVR for inertial based integrated navigation
属羊
看图写话有妙招
百度年度热搜榜
青年与社会(2018年2期)2018-01-25 15:37:06
删除好友
杂文月刊(2017年20期)2017-11-13 02:25:06
百度遭投行下调评级
IT时代周刊(2015年8期)2015-11-11 05:50:22
百度“放卫星”,有没有可能?
太空探索(2014年4期)2014-07-19 10:08:58
指南针的由来
河北遥感(2014年2期)2014-07-10 13:28:50