探索 IBM Lotus Sametime V7.5 中的位置识别

无论您身在何处,IBM Lotus Sametime V7.5 都能够利用其全新的位置识别(location awareness)特性找到您。在这篇文章中,您将了解到位置识别的服务器端和客户端机制,文中还简单介绍了一种使用位置数据来为您提供当地重要场所的插件。

IBM Lotus Sametime V7.5 是实时协作领域中的重大进展。它是下一代的客户机,具有升级的即时消息传递用户体验,交付了一种构建于 Eclipse 框架之上的可扩展插件模型。因此,它不仅仅是一种工具,更是一种创新平台。

这一客户机提供了众多新特性,包括快速查找、迷你应用程序、名片、音频集成等等,其中最突出的一项就是位置识别。本文介绍位置识别,说明其工作原理、您能如何利用它。还为您展示了 Concierge 插件背后的一些代码,它使用位置数据来为您提供当地重要场所的信息。

本文的目标读者包括:Lotus Sametime 的新用户和有经验的用户、对扩展 Lotus Sametime 的功能感兴趣的应用程序开发人员。

何为位置识别?

位置识别的概念类似于用户的 “我有空” 状态。实际上,用户通过 “我有空” 状态告诉其他用户自己在线,而位置识别又扩展了这个概念。使用位置识别时,您与其他用户共享您的位置信息(也就是您的地理信息),帮助他们判断您当前身处何方。此外,还可以利用位置信息来接受基于位置的服务。

在 Lotus Sametime V7.5 中,您当前的位置信息显示在联系人列表的右上角处。图 1 显示了用户的当前位置是 Cambridge, MA, US。

若您将自己的位置信息与他人共享,其他用户就能够在 Lotus Sametime Connect 中两处看到这些信息:

位置识别的工作原理

Lotus Sametime V7.5 为位置识别使用一种基于客户机的记录机制。目前我们正在测试一种基于服务器的自动记录机制,这将进一步扩展位置识别功能。本文将探讨这两种位置信息检测方式。

基于客户机的位置识别

基于客户机的位置识别使用一种基于 IP 的记录机制。基于 IP 的位置识别利用了用户的网络信息,包括子网、网络掩码和路由器的 Mac 地址。这种机制要求各用户手动为每个新位置填写详细地理信息。数据存储在用户计算机上的配置文件中,因此,每当用户进入先前访问过的位置时,其位置信息将根据他上一次填写的内容自动预填充。否则就会出现类似于图 4 的警告,提示他输入该地区的信息。

可单击警告,在 Preferences 对话框的 Location Settings 中输入详细的位置信息(参见图 5)。提示您输入城市、州、国家、邮政编码、时区和电话号码。

服务器端位置识别

在 IBM 内部,我们已经实现了一种检测位置的服务器端解决方案。这项解决方案将在未来的某个发布版中提供。依据可用性,服务器端机制将与客户端机制配合工作。

服务器端位置识别也使用了一种基于 IP 的检测机制。基于 IP 的位置识别利用了用户的网络信息,包括子网、网络掩码和路由器的 Mac 地址。此信息通过其他网络到位置的映射与中央数据库中存储的详细地理信息耦合。为区分虚拟专用网(VPN),将使用客户机第一次连接的第一个路由器的 Mac 地址来作为区分因素。

当您第一次访问一个数据库中不存在其详细网络信息的位置时,Lotus Sametime Connect 客户机将提示您在 Preferences 对话框的 Location Settings 中输入信息(参见图 9)。提示您输入的信息包括城市、州、国家、邮政编码、时区和电话。

输入位置设置数据时,Lotus Sametime 在中央数据库中为该位置创建一个条目。该条目与 Lotus Sametime Connect 客户机自动检测到的网络信息耦合。下一次再有其他用户进入相同的位置(子网和路由器)时,将自动为其推送位置信息,因为数据库中已经有了一个与他所用的子网相对应的条目。一个简单的查询为该地区的所有用户实现了基于推的位置检测(参见图 6)。

例如,若根据网络上用户 1 的输入,子网 129.1.1.0 和 Mac 地址 00:06:2A:CE:F4:A9 的详细位置信息是 Cambridge, MA, US,则将 Cambridge, MA, US 指派给其他所有登录到该网络的用户,其位置如图 7 所示。随后,所有尝试确定该用户位置的人都可看到这一数据。

这种服务器端机制使用基于投票系统的自主学习模型。每当一名用户为一个特定网络输入详细地理信息以在中央数据库中创建网络到位置的映射时,即将其计为一次投票。投票系统验证数据。验证过程是自动的,基于该位置的历史投票情况。用户可以选择更改自己的投票,例如,若 23 名用户确认一个特定位置是 Cambridge, MA, US,但另有 24 名用户试图将此位置改为 Poughkeepsie, NY, US,那么投票系统最后会将该网络位置对应的条目更改为 Poughkeepsie, NY, US。这实现了一种自主学习的健壮系统,能够为登录到该位置的新用户推送最准确的数据。

使用这种技术,尽管需要数据储存库,但系统依然具备与其他基于储存库的解决方案不同的自治性。用户更新位置信息时,所需的用户交互或系统管理最少。整个过程对于用户是透明的,非常值得信赖。这个模型可帮助减少错误的网络到位置的映射,从而使位置数据更可靠。

基于服务器的机制是 IBM Research 的 Grapevine 项目的成果。如果这项机制可用,您就可以轻松将其结合到 Lotus Sametime V7.5 中。在 Lotus Sametime V7.5 中,两种机制相互配合。若客户机具有特定位置的本地配置文件,则使用配置文件;否则基于服务器的机制(若存在)就查询位置信息。

两种机制也会共享用户界面。如果您在 Preferences 对话框中输入或编辑您的位置信息,Lotus Sametime 能够同时更新服务器条目和客户机配置文件。

无论使用基于客户机的机制还是使用基于服务器的机制,您都可以选择与其他用户或应用程序共享位置信息,也可选择取消共享。类似地,您也可选择在检测到新位置时不需警告。所有这些首选项都可在 Preferences 对话框的 Location Settings 中设置。

Sametime 位置服务器

Lotus Sametime 服务器将通过客户机或服务器机制获得的位置存储为一个 location 对象。location 对象包含城市、州、国家、邮政编码、用户定义的位置名和时区等属性。通过上述任一种机制更新用户的地理位置时,信息都将传递给 Lotus Sametime 服务器。

Lotus Sametime 服务器在您在线期间临时将此信息存储为一项属性。如果您选择共享位置,它还会使其他用户和应用程序获知您的位置。

您可通过 Lotus Sametime Software Development Kit(SDK)访问由客户机或服务器机制聚集的位置信息,以供您的插件使用。在您离线后,Lotus Sametime 服务器上的位置信息就会丢失,这与客户机/服务器机制不同。

Sametime 插件的位置识别

客户机收集的位置信息也可供您创建的任何插件使用。此数据通过 Lotus Sametime SDK 公开。各插件都可访问关于某人当前位置所在的信息。位置信息包括:

  • 城市名
  • 州名
  • 国家名
  • 邮政编码
  • 用户定义的个人位置名
  • 时区

您可使用此信息来编写基于位置的服务。基于位置的服务是使用位置数据为相应地理位置提供当地信息的服务。例如,您可提供一项服务,显示附近的饭店、加油站、电影院等。

Concierge 插件

继续学习之前,您可能希望先自己熟悉一下 Lotus Sametime 插件的开发,以便更好地理解下面介绍的 Concierge 插件。关于已发表的介绍 Lotus Sametime V7.5 插件开发的文章和 Lotus Sametime SDK 的更多信息,请参阅参考资料部分。本文的这一部分假设您熟悉扩展点,并对 Eclipse SDK 和 Eclipse 平台有所了解。

在图 8 展示的例子中,您能看到如何在 Lotus Sametime V7.5 中利用位置信息,为身处 Poughkeepsie, NY, US 的一名用户提供 Concierge 服务,包括当地气象信息。

Concierge 插件检测到,这名用户位于 Poughkeepsie, NY, US,此信息随后被提供给所有插件。插件使用这一位置信息为该用户查找当地气象信息、定位当地的饭店、本地打印机和自助餐厅。

气象信息获取自 National Oceanic and Atmospheric Administration Web 站点。我们使用 Google Maps 来查找当地饭店,使用 IBM 服务查找本地打印机和自助餐厅。当我们检测到一名用户的个人位置时,即使用此位置信息调用 National Oceanic and Atmospheric Administration Web 站点,接受 XML 格式的气象信息。此 XML 数据随后转换为图形格式,显示在 Lotus Sametime V7.5 的迷你应用程序区域中。

对于当地饭店,我们使用 Google Maps,用已有的位置信息预先填入 URL。在下面的 URL 中,我们用已有的城市和州信息取代 #city# 和 #state#。

http://local.google.com/local?f=l&hl=en&q=restaurant&near=#city#,+#state# &ie=UTF8&z=13&om=1

采用类似的方式,指向 IBM 打印机和自助餐厅的恰当 URL。

Concierge 插件使用迷你应用程序区域的扩展点来显示基于位置的插件。迷你应用程序区域是位于联系人列表底部的一块区域,可为插件而扩展。示例插件(例如 Lotus Sametime SDK 中的 BuddyNote)利用迷你应用程序区域来显示数据。

Lotus Sametime 插件可在其 plugin.xml 中使用 com.ibm.collaboration.realtime.imhub.miniApps 扩展点,如下所示:



Concierge 插件使用 AbstractMiniApp 类的 isInitiallyVisible()方法,初始值是 false。isInitiallyVisible() 方法值为 false 就意味着最初不显示此插件。它等待 Lotus Sametime V7.5 消息事件在一名用户的位置变更时向它发出通知,随后此插件即被触发,显示出来。

public boolean isInitiallyVisible() {
	if (URLvalid) {
		return true;
}
	return false;
}


这里调用了 AbstractMiniApp 类的 createControl(Composite parent) 方法。createControl 方法传递一个 parent Composite,Concierge 类使用它在迷你应用程序区域中显示数据。Convierge 插件使用 Web 浏览器小部件显示来自一个 URL 的气象信息。

public Control createControl(Composite parent) {
		Composite composite = new Composite(parent,SWT.NULL);	
		composite.setLayout(new FillLayout());		
		final Browser browser = new Browser(composite, SWT.NONE);	
		browser.setURL(“www.abc.com”);			
		browser.setData("refresh", "false");		
		composite.setEnabled(true);
		composite.layout();
		return composite;
	}

结束语

本文深入探讨了位置识别在 IBM Lotus Sametime V7.5 中的工作原理。指出了收集和共享位置信息的不同方式。我们简要说明了如何使用 Lotus Sametime SDK 提供的 location 对象在迷你应用程序区域中显示对象。下一篇文章 “开发 IBM Lotus Sametime Connect V7.5 的位置识别插件” 详细讨论了如何使用位置数据来创建一个基于位置的气象插件。我们将逐步介绍如何获取某人的位置信息并使用这些信息来确定当地气象情况。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14751907/viewspace-444261/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14751907/viewspace-444261/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值