Android平臺下云計算應(yīng)用的開發(fā)詳解
近幾年來“云計算”概念非常的火爆,“云計算”核心是將大量的網(wǎng)絡(luò)資源統(tǒng)一起來,為用戶提供高效、便捷的軟件服務(wù)。“云計算”倡導(dǎo)者希望的是:用戶使用軟件服務(wù)就像使用電和水一樣,可以便捷、隨時隨地、按需地使用服務(wù)。在“云計算”這個網(wǎng)絡(luò)應(yīng)用模式下,用戶可以通過各種“端”訪問“云”,“端”可以是任何能夠上網(wǎng)的電子設(shè)備,“云”就是提供的服務(wù),“云”可能是巨大的、連成一片的、無邊境的,也可能是渺小的、孤立的,總之它無處不在,能夠提供給用戶所需要的各種服務(wù)。
典型云端應(yīng)用城市天氣信息服務(wù)
隨著3G網(wǎng)絡(luò)時代的到來,移動網(wǎng)絡(luò)速度大大提升,從而使得云與端應(yīng)用軟件需求量越來越大。“云”無論如何飄必須要“落地”,即必須要有移動終端設(shè)備和相應(yīng)的軟件支持。
在Android平臺中“云端”應(yīng)用的例子很多,如Android 系統(tǒng)預(yù)裝的Gmail(圖15-2)、日歷和Google Map等。
本章通過一個基于Android系統(tǒng)的天氣信息查詢案例,介紹云和端的應(yīng)用技術(shù)。本章要實現(xiàn)的基本功能是軟件啟動后進(jìn)入初始畫面,初始畫面顯示中國主要城市名稱列表,如圖15-3所示。
當(dāng)用戶觸摸其中一個城市則彈出一個對話框,在對話框中列出了該城市當(dāng)天及未來4天的天氣信息。
要實現(xiàn)這個Android天氣信息查詢案例,會涉及什么技術(shù)呢?
首先是UI部分,這個系統(tǒng)中采用的UI控件主要是ListView控件,這個控件前面的章節(jié)已經(jīng)做過介紹了,不是本章關(guān)注的重點。除了UI以外,開發(fā)這個系統(tǒng)的核心問題還有3個:從哪里可以獲得這些數(shù)據(jù);采用什么技術(shù)獲得;獲得數(shù)據(jù)后如何解析。
從哪里可以獲得這些數(shù)據(jù),也就是信息數(shù)據(jù)的來源,這里的信息可以分為中國主要城市名稱和某個城市當(dāng)前的天氣信息兩部分。后者與其他的Android數(shù)據(jù)庫應(yīng)用系統(tǒng)略有不同,這里的某個城市當(dāng)前天氣信息是不可能從本地手機(jī)數(shù)據(jù)庫中獲得的。道理很簡單,就是這些數(shù)據(jù)是實時動態(tài)變化的,是無法預(yù)知的,因此只能從“別人”那里獲得,這里“別人”就是常說的“云計算”中的“云”。“云”能夠按需求提供給我們所需要的數(shù)據(jù)。在案例中使用Google公司提供的天氣信息服務(wù)。對于前者而言,由于這些數(shù)據(jù)是固定的,因此可以把數(shù)據(jù)硬編碼到程序中或者放到手機(jī)端的數(shù)據(jù)庫中,但本案例中數(shù)據(jù)的來源,是Google公司提供的世界城市信息服務(wù)。
采用什么技術(shù)獲得數(shù)據(jù)呢?解決這個問題的關(guān)鍵是使用什么樣的“云”(服務(wù)器端),由于上述的兩個Google服務(wù)都采用HTTP協(xié)議,因此可以采用Java的一些支持HTTP協(xié)議的網(wǎng)絡(luò)通信技術(shù)。除了可以使用HTTP協(xié)議外還有很多技術(shù)可以使用,例如:Socket和Web Service等,但是這些都要依賴于“云”開放什么形式的API。
獲得數(shù)據(jù)后如何解析?這個問題也要依賴于使用的“云”,一般而言,“云”都會提供多種形式的數(shù)據(jù)以滿足不同用戶的需求。在本例中采用的兩個Google服務(wù),它們返回的數(shù)據(jù)格式有JSON和XML,可以針對這些格式采用不同的技術(shù)進(jìn)行解析。云與端的應(yīng)用技術(shù)主要是網(wǎng)絡(luò)通信。