編輯:開發入門
開始之前
本教程介紹了如何在 android 平台之上處理 XML。要按照本教程構建樣例應用程序,必須在開發計算機中安裝和運行 Android SDK。推薦使用 Eclipse 構建 Android 應用程序,但不作硬性要求。具備移動開發經驗固然有幫助,但是 android 應用程序開發要求具有 Java™ 編程技能,這將有助於本教程的學習。
關於本教程
android 的 RSS 閱讀器為什麼值得我們關注?XML 又是如何融入其中的呢?首先,Android 是一種在移動市場中迅速獲得廣泛關注的平台。甚至在配備了 Android 的消費型設備出現之前,許多開發人員就已紛紛投入到這一移動市場,希望為即將出現的、備受期待的 Android 式設備做好准備。諸如 android 這樣的富設備(Rich device)要求提供內容。某些情況下,內容的表現形式為游戲或一個生產力應用程序。然而,除了移動電子郵件外,最能夠驅動數據使用的內容是新聞和信息。這種內容可能看上去類似於與特定金融市場有關的新聞,或者是天氣預報這種比較普遍的信息。對於周末想到海邊度假的人,自然十分關心天氣預報。於是,以一種簡單、實用的方式從移動設備獲取數據成為了擺在人們面前的一道難題。
Android 包含了 WebKit.org 浏覽器引擎,這意味著它可以向移動用戶交付高質量的浏覽器體驗。然而,對於一個小型屏幕和有限的輸入設備,在多個 Web 站點中查找新聞和消息是非常乏味的事情。不要誤會,自從出現 WAP 浏覽器和有限的基於文本的信息以來,這一市場已經得到了長足的發展,然而,移動信息的價值在於:輸入 RSS 提要時一眼就可以判斷出它是否可用。RSS 是 “Really Simple Syndication” 的縮寫。實際上,RSS 是一種分布感興趣的信息的方便方法。RSS 支持 XML 數據;數據包含完整信息源的簡單摘要。如果對這些摘要該興趣,用戶可以進一步獲取信息並獲得全部內容。本教程將演示在構建 android RSS 閱讀器過程中涉及到的幾個主要的 XML 處理步驟。
本教程分為以下小節:
先決條件
本教程需要結合使用幾種技術。需要通過以下步驟獲得所有這些工具。
完整的源代碼可以從 下載 小節獲得。本教程包含的源代碼片段包括:
RSSReader
:該類實現主 GUI 並包含菜單處理代碼。RSSFeed
:該類含有一個經過解析的 RSS 提要,包含 RSS 通道信息和一組 RSSItems
。RSSHandler
:該類實現 SAX 解析器處理程序,從而實現對 XML 流(Internet 中的 RSS 提要)的解析並填充一個 RSSFeed
實例。RSSItem
:該類表示解析 XML 流得到的一個 RSS 項。ShowDescription
:這是一種行為(Activity),顯示所選的RSSItem
的摘要並包含可鏈接的文本,可以無縫啟動 android 浏覽器來訪問 RSSItem
中的可用鏈接。啟用這一 Activity 將在偽同步調用中結合使用一個 Intent 和額外的 Bundle。術語
構建一個 android RSS/XML 應用程序需要 XML、RSS 和 HTTP 方面的知識,還需要了解 android 平台的各個方面。了解下面的術語對於學習本教程大有裨益。要想了解關於這些主題的更多信息,請參見參考資料 中的鏈接。
RSS 基礎介紹
在詳細介紹下載 RSS 提要並使用基於 android 的 RSS 閱讀器進行處理之前,讓我們首先簡要回顧一下使用 RSS 的需求、位置以及它的結構。
為什麼使用 RSS?
信息傳播工具多種多樣,包括可以免費收聽的無線電廣播、公共和有線電視、印刷媒體,甚至包括 Internet 這樣顛覆性的技術,以及其龐大的 Web 站點和電子郵件訂閱。雖然選擇很多,但是這些工具都存在一個問題:很難在龐雜的海量數據中精確查找到真正感興趣的信息和價值。幸運的是,RSS 可以幫助我們解決這個問題。
RSS 是 “Really Simple Syndication” 的縮寫。RSS 是一種內容發布者用來發布信息的 XML 數據格式,這些信息經過了分類並適合人機閱讀。RSS 提要通常使用諸如新聞閱讀器這種人類可讀的友好格式進行處理並顯示給用戶,本教程中構建的應用程序就是這樣一種新聞閱讀器。RSS 提要同樣可以供計算機使用,從而生成後續的、聚合的信息源。舉例來說,定期檢索並提供給旅行社本地預訂系統的租賃列表就是一個機器使用 RSS 提要的例子。
在討論新聞內容時經常會提到 RSS,然而,除新聞以外,這種格式可用於組織和發布其他很多類型的信息。例如,很多 Web 站點都發布可用的 pod-cast 的 RSS 提要,從而發布音頻和視頻內容。Handango.com 是一個流行的移動軟件和內容的在線商店,它根據移動平台分類,提供新的流行軟件標題的提要。例如,提供針對 Windows® Mobile、Blackberry、Palm 和其他平台的提要。用不了多久,很可能就會提供針對 android 應用程序的提要了!
RSS 的格式是 XML 數據,這表示數據本身就包含描述性元素,也就是說它是自包含的。隨著行業的逐步規范化,XML 結構在過去幾年也經歷了一些變化。最新的版本也是應用最廣的版本是 2.0。RSS 2.0 是一種相對簡單的 XML 結構,很容易由計算機程序解析。在本教程中,我們將解析從 IBM developerWorks Web 站點獲得的一條 RSS 提要。
RSS version 2.0
關於哪一個版本最流行已經進行了太多的討論,現在讓我們了解一下 RSS 2.0 規范。RSS 2.0 格式只包含有限的標記。<?xml> 是一個強制使用的標記,所有 XML 文檔都需要使用到。第一個標記實際是 <rss> 標記,它以屬性的形式包含版本。<rss> 標記是一個或多個通道,每個通道都包含如清單 1 所示的元素。
清單 1. RSS 2.0 中的通道和元素
<channel> <title/> <link/> <description/> <pubDate /> <language/> <copyright/> <image> <title /> <url /> <link /> </image> + <item /> </channel> </rss>
每個通道可能含有一個或多個項。每個項具有如清單 2 所示的結構。
清單 2. 項結構
<item> <title /> <description /> <link /> <category /> <pubDate /> </item>
數據使用
RSS 提要的使用者可以決定如何顯示數據。通常,RSS 閱讀器將顯示一些有關可用通道的標題信息,包括發布日期(包含在 pubDate 元素中)。注意,RSS 是用於發布相關的即時數據,因此不應該忽視發布日期。圖 1 演示了本教程中運行的示例應用程序,它顯示了一條 RSS 提要。圖 1 顯示了 RSS 提要的標題、發布日期,並使用列表(List)格式顯示提要項。本教程後面的內容討論將解析得到的 RSS 提要提供給 android 用戶界面的機制。
圖 1. 運行中的 android RSS 閱讀器
RSS 提要的 item 標記中的元素描述提要中包含的所有項。例如,在本教程中,您要處理的 RSS 提要中包含來自 IBM developerWorks 站點中的一組受歡迎的教程。提要中的每個條目都提供了足夠的信息,使用戶充分了解提要的主題以及如何獲取更多信息。這些信息共分三個級別,每個級別的信息都非常詳細。此外,每個條目都包含一個發布日期和類別信息。條目標題簡要介紹了提要的主題,例如:<title><![CDATA[Develop android applications with Eclipse]]></title>
。
如果您對使用 Eclipse 進行 android 開發感興趣的話,那麼這個條目標題足夠引起您的興趣。如果用戶(即使有應用程序的人員)希望了解更多,則可以獲取更多信息,即清單 3 中的描述。
清單 3. 描述
<description><![CDATA[Android is Google's oft-discussed mobile, wireless, computer, and communications platform. You can take advantage of the powerful Eclipse environment to build Android applications using the Android Eclipse plug-in. This tutorial introduces Android application development with the Eclipse plug-in, otherwise known as Android Development Tools. The tutorial provides an introduction to Android development with a quick introduction to the platform, a tour of android Development Tools, and includes the construction of two example applications. ]]></description>
注意這裡使用了 CDATA XML 技術。如果 XML 提要中包含了可以與所含的 XML 標記進行交互的 mark-up 元素,那麼則需要使用 CDATA。CDATA 的一個副作用是數據是按原樣獲取的,因此您需要對文本進行額外的格式化,以便正確顯示到目標用戶界面中。本教程後面演示的示例應用程序中將看到這樣一個例子。
最後,如果用戶對這一主題非常感興趣的話,可以通過提供的鏈接找到關於這一特定主題的更多信息:
<link> <![CDATA[http://www.ibm.com/developerworks/edu/os-dw-os-eclipse-android.Html?ca=drs-]]> </link>
本教程沒有細究對類別的任何特殊處理,這是因為 RSS 提要中的所有類別都是相同的。顯示發布日期是一項最佳實踐技術。
簡要介紹了 RSS 及其用途之後,我們來從較高的層次了解一下 RSS 閱讀器應用程序的架構。
作為開發者,你的第一感覺是你拿到這個開發框架寫“Hello, World!”程序時的難易程度給你留下的。 當然,在android裡,這個非常容易,下面我給你演
簡介: Cameron Laird 用一篇對受歡迎的 Expect 工具的概述開啟了他新的月度專欄,Expect 是一種功能大大超出大多數程序員和管理員認識的
Android 應用程序一個最常見的任務就是檢索數據或通過網絡將數據發送到遠程服務器。這一操作的結果通常是一些您想要展示給用戶的新數據。這意味著您需要修改用戶界面。大多
android Software Developer Kit我們已經大致了解了 Android 平台,現在討論如何設置 Eclipse 環境來支持 android 應用