基于Android手机的好友定位系统的探究与实现

2012-04-14 01:10宋崇生
科技视界 2012年12期
关键词:好友客户端服务器

宋崇生

(华侨大学信息化建设与管理处 福建 厦门 361021)

0 引言

随着移动通讯产业的发展,手机的生产和使用量有了大幅的提高。如何进一步提升手机的应用价值、开发新的功能,已成为手机发展的热点。GPS技术具有广阔的应用前景,拓展手机GPS功能将成为未来几年移动程序开发的新趋势。当前,手机GPS已在个人导航定位方面发挥了巨大作用。

1 相关技术探究

1.1 Web实时事件通知的方法

下面是4种可以实现基于web的实时事件通知的方法[1]:

1.1.1 HTTP拉取方式:在这种传统的方法中,客户端以用户可定义的时间间隔去检查服务器上的最新数据。这种拉取方式的频率要足够高才能保证很高的数据精确度,但高频率可能会导致多余的检查,从而导致较高的网络流量对于手机有限的流量来说是个致命方法。而另一方面,低频率则会导致错过更新的数据。理想地,拉取的时间间隔应该等于服务器状态改变的速度。

1.1.2 HTTP流:这种方法由存在于不间断的HTTP连接响应中或某个XMLHttpRequest连接中的服务器数据流所组成。

1.1.3 反转AJAX:服务流应用到AJAX,就是所谓的反转 AJAX或者COMET。它使得服务器在某事件发生时可以发送消息给客户端,而不需要客户端显式的请求。目标在于达到状态变化的实时更新。COMET使用了HTTP/1.1中的持续连接的特性。

1.1.4 长时间轮询:也就是所谓的异步轮询,这种方式是纯服务器端推送方式和客户端拉取方式的混合。它是基于BAYEUX协议的。这个协议遵循基于主题的发布——订阅机制。在订阅了某个频道后,客户端和服务器间的连接会保持打开状态,并保持一段事先定义好的时间。如果服务器端没有事件发生,而发生了超时,服务器端就会请求客户端进行异步重新连接。如果有事件发生,服务器端会发送数据到客户端,然后客户端重新连接。

1.2 Android广播机制

在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。发送Broadcast和使用Broadcast Receiver过滤接收的过程如下[2]:

首先,在需要发送信息的地方,把要发送的信息和用于过滤的信息装入一个Intent对象,然后,通过调用 Context.send Broadcast()、send Order Broadcast()或 send Sticky Broadcast()方法,把 Intent对象以广播方式发送出去。

当Intent发送以后,所有已经注册的Broadcast Receiver会检查注册时的Intent Filter是否与发送的Intent相匹配,若匹配则就会调用Broadcast Receiver的on Receive()方法。所以当我们定义一个Broadcast Receiver的时候,都需要实现on-Receive()方法。

1.3 手机地图服务

手机地图服务是指在手机上利用GPS或者网络实现精确定位,并使用WAP方式或客户端方式,通过移动通信网络与手机地图应用服务器之间的互联通信,查找自己的位置、搜索地点、查询行车路线的一种与地理信息相关的位置业务。用户在查询过程中,不仅可以得到相关的文字信息,还可以通过手机终端友好的人机界面得到直观的地图信息。手机地图查询系统的结构如图1所示。

图1 手机地图查询系统结构

手机端地图是安装在手机上的简易地图文件,详细的地图信息,要通过发送到网络端应用服务器的查询命令解析执行后,再下发到终端进行异步下载。

1.4 GPS定位技术

移动终端的定位是通过检测移动终端和基站之间传播信号的特征参数来获得其几何位置,根据进行定位估计位置的不同分为两种:基于移动终端定位和基于网络定位。GPS是由美国国防部在20世纪70年代开始联合研制的新型卫星导航系统,历时20年,耗资200亿美元,于1994年全面建成。它采纳了子午仪系统的成功经验,具有全球性,全天候、高精度三维定位的特点。GPS系统主要由三大部分组成:GPS卫星星座(空间部分)、地面监控系统(控制部分)和GPS信号接收机(用户部分)。GPS的定位原理就是根据高速运动的卫星瞬间位置作为已知的数据,采用空间距离后方交会的方法,确定待测点的位置。

2 系统的功能设计

本系统实现了好友的地理位置信息通过后台的推送服务,更新并发送给其好友,并在客户端上通用Google地图上显示出来。只要用一个帐号和密码登录,使用者就可以自动生成一个好友的地理位置列表,好友列表和好友记录列表,在这项列表里,使用者可以根据好友的名字定位好友。用户还可以在当前的地理位置发送一条地理记录,该用户的好友便可得到在该位置上的这条新记录,并且可以查看记录的评论,对记录进行评论。

使用者可以跟据用户的帐号查找好友,并向其发送添加好友请求,若好友不在线,服务器保存此条请求信息,等到一下次该被请求的好友上线之后发送给该好友,发送之后服务器将此条请求信息删除。

2.1 客户端功能设计

客户端是手机应用程序,主要包括数据接收,数据处理,界面更新。其原理图如图2所示。

图2 客户端结构

当手机端的Comet Client接收到服务器发送来的数据后,将数据交给Data Process线程进行处理,Data Process判断数据并对数据进行分类处理,然后更新Cache类里面的静态数据。 最后,Data Process发送广播给 Activity(界面),Activity根据当前的状态判断是否马上更新界面。

2.2 服务端功能设计

服务端负责接收用户的HTTP请求,并推送给好友相关的信息,其主要功能有:用户上线处理,下线处理,更新地理位置,用户聊天,用户注册,发送记录信息,修改密码,添加好友,同意好友添加,拒绝好友添加。

处理用户上线:用户请求登录,得到我的所有信息,并让所友在线好有得到我登录的信息和我最新的地理位置。

更新地理位置:当用户的地理位置发生改变时通知其在线的好友该用户最新的地理信息,并让新上线的好友得到该用户的最新地理信息。

用户聊天:用户可以跟每个在线好友发送聊天信息,若该好友不在线则给予提示。

用户发送记录信息:用户可以随时地发送一条记录信息,该记录信息对应当前的地理位置并且让好友知道此条记录信息。

用户注册:用户填写完注册信息后,给用户生成一个对应的帐号。

添加好友:用户根据帐号发送添加好友请求,若该目标用户在线,则他能马上收到添加请求,若该用户不在线,则等到该用户上线也能收到该请求。

同意添加好友请求:用户收到该添加好友请求时,进行回复同意或拒绝,若同意则两人成为好友,并得到对方的信息并显示在好友列表里面,对方若在线也同样马上得到我的信息并显示在好友列表上。

删除好友:用户选择删除好友后,该好友马上在我的好友列表上消失,并且通知对方已解除好友关系,若对方不在线,上线之后也能收到此消息。

3 数据库设计

用户表存放所有用户的信息,每个用户对应表中的一行,如表1所示。

表1 用户表

表2 好友关系表

表3 消息表

表4 事件表

4 结束语

本文针对手机GPS功能、地图功能发展空间巨大的现状,提出了基于Android平台来设计GPS好友定位系统的方案。Android是一个多功能平台,对网络等技术都有很好的支持,基于Android的GPS应用、地图应用,可以进一步与网络相结合,实现数据的实时上传,以达到地理信息共享的目的。随着计算机和定位技术的飞速发展,全球定位系统(GPS)和地图服务得到了更广泛的重视和应用,将地图有效地与位置定位技术相结合,应用前景十分广阔。

[1]IBM文档库.Comet:基于 HTTP长连接的“服务器推”技术[Z].2007.

[2]吴亚峰,索依娜.Android核心技术与实例详解[M].电子工业出版社,2010.

猜你喜欢
好友客户端服务器
通信控制服务器(CCS)维护终端的设计与实现
属羊
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
基于Vanconnect的智能家居瘦客户端的设计与实现
中国服务器市场份额出炉
得形忘意的服务器标准
计算机网络安全服务器入侵与防御
客户端空间数据缓存策略
雪花特快专递