开放源码对软件开发市场产生了革命性影响,如今新的消息渠道不断涌现, 它们正是以这种方式强劲地冲击着传统的消息渠道。今天我们可以从各种 Internet 资源和 Internet 主流媒体获得免费的消息。我们可以通过阅读不同 的 Web 站点来获取消息,但这样做非常繁琐。那么,随时更新感兴趣的消息怎 么样?集中地接收您喜欢的消息不是很方面吗?在 BlackBerry 上,您可以通过 RSS 阅读器来实现这些功能。本教程是系列教程 “用开源工具创建 BlackBerry 应用程序” 的第 2 部分。本教程将创建一个让您的 BlackBerry 能够随时随地接收消息的 BlackBerry RSS 阅读器,并以此探索 RSS 数据发布格式。
开始之前
本系列通过一个移动电话数据收集应用程序,探索了如何用 开放源码和 Java 技术开发 BlackBerry 应用程序。第 1 部分 介绍了 BlackBerry 开发,内容包括平台简介、BlackBerry 开发工具概述,以及完整的 数据收集应用程序的构建。
本教程主要通过一个示例移动电话内容管理 应用程序探索了 BlackBerry 应用程序的开发。这个例子利用可以免费获得的 BlackBerry 开发工具演示了一个基本的 RSS 阅读器。具备开发移动电话应用程 序的经验会有帮助,但不是必要的。开发 BlackBerry 应用程序必须了解 Java 编程技巧,但这些技巧在本教程中不是必要的。RSS 提要是本文示例应用程序使 用的数据内容的来源。熟悉 RSS 会有帮助,但如果您仅希望了解移动电话内容 管理应用程序的架构,则不作要求。
关于本教程
为什么要为 BlackBerry 编写 RSS 阅读器?BlackBerry 和其他移动电话已 经成为我们生活的一部分。我们的移动设备的用户界面(UI)的功能越来越强, 技术性能也越来越好,比如数据存储速度、存储容量和处理速度都不断上升。如 果不能充分利用我们的设备,它们只不过是普通的电话而已。我们的设备需要丰 富的内容!记住,“笔杆胜过利剑”。文字的力量是巨大的。今天,我们的文字 是用数字来表达的、可移动的。信息流是免费的,订阅感兴趣的消息也是免费的 ,这就为免费、开源的社区打下基础。对订阅免费的信息而言,还有什么开源技 术会比 RSS 阅读器更好呢?
本教程使用 Java 编程语言构建用于 BlackBerry 平台的移动电话消息阅读 器。市面上也有针对移动设备的 RSS 阅读器,但本文的目标不是与商业 RSS 应 用程序比高低。本文演示了如何构建开源的应用程序,以帮助您构建用于处理内 容及其发布的有用应用程序。了解如何管理来自不同来源的消息的 RSS 提要。 这种范式也适用于其他应用程序,比如移动工具管理数据、员工派遣数据,甚至 实现移动搜索引擎。
尽管 BlackBerry 基于一个流行的平台,但它仍然需要第三方应用程序的支 持。要共享应用程序的成果,开源社区是最好的方式。本教程为构建开源 RSS 阅读器应用程序提供了基础,您可以在此基础上进行扩展以实现其他有用的功能 。
本教程先简单介绍 RSS,然后深入讨论实现 BlackBerry 移动 RSS 阅读器所 需的条件。您可以 下载 完整的 BlackBerry 应用程序源代码。
系统需求
本教程演示如何使用 BlackBerry 开发工具构建一个开源的 BlackBerry RSS 阅读器。您将需要一个 BlackBerry Java Development Environment (JDE) 或 其他可用环境,以开发 RSS 阅读器应用程序。本教程使用 V4.0.2 版本的 JDE 。此外,本教程提供一些示例 RSS 提要链接,但您可以根据需要替换为自己的 链接。
示例代码概述
在本教程中,将为 BlackBerry 构建一个名为 IBMRss 的移动 RSS 阅读器应 用程序。在阅读本文的过程中,尝试让思维突破消息阅读器这个范围;RSS 数据 格式可在许多其他应用程序上使用。您可以 下载 完整的源代码。源代码片段包 括:
IBMRssApplication这个类包含了应用程序的入口点。IBMRssScreen这个类包 含 UI 元素,包括菜单和一个 ListField。并且提供用户交互函数。 IBMRssStorage这个类封装了数据的存储,包括各种 access/helper 例程。 setupdata这个方法负责组织存储数据和用户界面之间的关系。它在启动和刷新 RSS 提要之后使用。loadFeed这个方法显示在 UI 中选定的来自特定 RSS 提要 的条目。showItem这个方法显示特定 RSS 条目的描述,并给出一个用于查看 Full Story 的选项。RSSDescriptionshowItem 调用这个类来显示特定的 RSS 条目。RssKeyListener 负责与 BlackBerry 的键盘交互的类。它查找 Enter 和 Esc 键。drawListRow这个方法负责为用于显示 RSS 数据的 ListField 绘制文 本。将通过一个 ListField 显示一组 RSS 提要,并列出特定 RSS 提要中的条 目。IBMRssXMLHandler这个类扩展了 DefaultHandler 类,以处理由 SAX XML 解析器引擎生成的解析事件。SAX XML 解析器引擎用于解析 RSS 提要。 IBMRssComms这个类负责获取所有感兴趣的 RSS 提要。它扩展了 java.lang.Thread 类。Guid这个类包含了一些 final 成员,它们对跨线程通信 和惟一地标识应用程序的数据存储非常有用。Utils这个类包含一个很有趣的方 法:split。这为处理存储在 RecordStore(由 IBMRssStorage 实现)中的数据 实现一个简单的分词器(tokenizer)。
真正简单的联合(Really Simple Syndication,RSS)
本小节简单了解一些 RSS 的历史、构造和潜在用途。了解这种数据格式之后 ,您就可以开始构建 RSS 应用程序了。