基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案

转载 2012年03月30日 09:24:59

一、前言、提出问题

       公司最近举行2011年度创新设计大赛,快年底了正打算写写2010年以来Android开发的心得与经验,正好同事出了个点子:假如A和B两个人分别在不同的地点,能不能实现这样的功能,让A和B之间可以互相感知对方的位置信息。

       于是整理了一下思绪,说白了分解开来就是两个方面的问题:一、实现信息的即时传递,二、实现基站/wifi、GPS的定位。

       1. 实现消息的即时传递:说到这个问题大家应该能联想到QQ、MSN、Gtalk这些即时通信软件。

       2. 定位:这个让人联想到时下非常火的LBS服务(Location Based Services)。有关LBS详细介绍请移步百度百科http://baike.baidu.com/view/152851.htm

 

二、应用场景

       即时通信和LBS两个热门的技术引出了我们的主角:位置感知服务 (Location-aware service)。那么,有哪些与之有关的场景呢?下面列出了自己想到的几个例子(还有很多,大家可以充分发挥自己的想象力):

       1. 手机制作商通过在设备中内置一个定位服务来跟踪手机的位置。比如,苹果官方推出的"Find My iPhone"手机定位服务,可通过Mobile Me帐号来定位iPhone手机目前的位置,可帮助失主找回自己的iPhone手机。

       2. 你和朋友一起去郊区旅游,会不会碰到走散的时候?如果这个时候你有一款手机(Android、iPhone、Symbian或其他手机)并且安装了一个可以实现朋友之间位置实时共享并把大家的所在位置显示在地图上的应用,那问题就好办了。

       类似的还有朋友之间自驾游、人员跟踪、突发事件、急救等领域都能派上用场。

 

三、寻找问题的解决方案

       1. 关键的问题:即时通信。因为前面的项目积累了基于位置应用的相关经验,所以定位不算一个问题。需要花费比较多精力的地方是实现消息的即时传递。

       2. 分析需求:根据提出的问题,A发出的信息需要实时的到达B,反过来就是B发出的信息也要实时到达A。对这种双工实时的通信目前还没有相关的项目经验。

      3. 最简单的实现可能用轮询(Polling)了,在这个问题中,轮询意味着使用一种RESTful Web服务(目前我们手机项目普遍使用的服务器接口方式)来为A或B获得(GET)对方的更新。但这种方式有缺点:一则增大服务器的负担,想想如果每个客户端每隔1分钟访问服务器,而大多数情况下服务器是没有更新数据的,对比起来服务器的负担就很浪费了,1分钟的时间又很难做到实时的更新;二则对于移动设备,例如手机这种客户端,轮询浪费电源这个手机最宝贵的资源。

       4. 解决的方式是长连接。PubSub(Publish/Subscribe,发布/订阅)是一种使用异步消息传递协议的架构性方法,其中发布者和任何订阅者都是解耦的。在需要向大量客户端发送更新通知的场合下,这些特征使得PubSub成为一种合适的可伸缩性选择。

       5. 经过搜索相关资料,决定尝试使用一种基于XMPP[Extensible Messaging and Presence Protocol,可扩展消息传递和现场协议]的PubSub服务

微软企业开发技术 | 移动开发(Google Android、Windows Mobile)技术| 嵌入式系统设计与开发 | JAVA开发

基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案

一、前言、提出问题        公司最近举行2011年度创新设计大赛,快年底了正打算写写2010年以来Android开发的心得与经验,正好同事出了个点子:假如A和B两个人分别在不同的地点,能不...

Android基于即时通信和LBS技术的位置感知服务(一):提出XMPP解决方案

一、前言、提出问题 公司最近举行2011年度创新设计大赛,快年底了正打算写写2010年以来Android开发的心得与经验,正好同事出了个点子:假如A和B两个人分别在不同的地点,能不能实现这样的功能,...

基于即时通信和LBS技术的位置感知服务(二):XMPP协议总结以及开源解决方案

在《基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案》一文中,提到尝试使用XMPP协议来实现即时通信。本文将对XMPP协议框架以及相关的C/S架构进行介绍,协议的底层实现不再本文的讨论...

基于即时通信和LBS技术的位置感知服务(二):XMPP协议总结以及开源解决方案

在《基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案》一文中,提到尝试使用XMPP协议来实现即时通信。本文将对XMPP协议框架以及相关的C/S架构进行介绍,协议的底层实现不再本文的讨论...

基于即时通信和LBS技术的位置感知服务(一)

一、前言、提出问题        公司最近举行2011年度创新设计大赛,快年底了正打算写写2010年以来Android开发的心得与经验,正好同事出了个点子:假如A和B两个人分别在不同的地点,能不...

基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

主要包含4个章节: 1. Java 领域的即时通信的解决方案 2. 搭建 Openfire 服务器 3. 使用客户端测试我们搭建的 Openfire 服务器 4. Smack ...

基于即时通信和LBS技术的位置感知服务(四):Location-Aware-Instant:开发即时位置感知的Android客户端

一、回顾       在分享这个项目之前先来回顾以前的三篇文章:       《基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案》(外网地址)       在第一篇文...

如何更好的提出问题,找解决方案

目录 翻译放弃介绍之前你问当你问 仔细选择你的论坛堆栈溢出Web和IRC论坛作为第二步,使用项目邮件列表使用有意义的,特定主题的头可以很容易地回复写清楚,语法,拼写正确的语言发送无障碍,标准格式问...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案
举报原因:
原因补充:

(最多只允许输入30个字)