Project Report 資工碩職一 402085165 周宏曄

題目:Android雲端技術應用介紹

 1.  研究動機

國際數據資訊(IDC)供佈2013第三季智慧型手機約2.61億支出貨量,較2012年成長40%。其中Andorid平台市占率約81%,幾乎形成獨大現象。
雲端運算(Cloud Computing)是近三年以來IT熱門產業之一, 透過雲端使用者不需在本地建置主機與網路系統, 改為透過向雲端服務提供者申請租用即可。
行動裝置上,提供的軟體服務日增,例如地圖、翻譯、Youtube、Gmail與GAE應用程式引擎,在雲端執行大量運算功能可解決手機資源不足問題。

2. 背景介紹

2.1.   雲端服務分三種模式
Saas:一般使用者最常接觸到的應用服務,透過帳號密碼登錄,就可以馬上取得服務,這個服務不是安裝在使用者的電腦中,所以不需購買與安裝軟體,只要連上網路,不管是電腦,平板或手機,都可以使用,因為軟體是安裝在供應商的伺服器裡。
Paas:通常會使用這種服務的是SaaS的開發人員。例如Facebook就有提供社交應用平台,通常是利用提供某些API的方式,讓程式開發人員可以開發Facebook上的應用軟體,像開心農場,心理測驗,一些常常看到的小遊戲,都是利用Facebook PaaS的服務,開發出軟體。
Iaas:一些企業,為了降低自行建置基礎架構的成本,而選擇用IaaS。

2.2.    各家雲端技術比較

平台

Google App Engine

Amazon Web Services

Windows Azure

開發語言

Java、Python、PHP、GO

Java、.NET、PHP、Node.js、Python、Ruby

Java、.NET、PHP、Node.js、Python、Ruby

支援資料庫系統

BigTable、MySQL

MySQL、Oracle、Microsoft SQL Server、PostgreSQL

SQL Service

計價方式

免費500MB儲存空間及每月5百萬次瀏覽數,額外功能按資源及服務配額計價

12月內免費試用方案,超過部份依服務功能流量計價

一個月免費試用,隨用隨付及按月支付型給予折扣優惠

2.3.    Google App Engine

是一個由Google所提供的應用程式平台,開發者可藉由此平台發佈與佈署自行開發的應用程式。申請及建置簡單、維護容易,而且可以因應流量和資料儲存量輕鬆擴充。
可以從自己的網域名稱 (例如 http://www.hychou.com/) 提供應用程式。或者,使用 appspot.com 網域上的免費名稱,提供您的應用程式。
支援多種程式設計語言編寫的應用程式。
使用「應用服務引擎」不需支付任何費用,啟用計費功能時,只需要為超過免費等級的資源使用量支付費用。

2.4.    Android網路技術介紹

利用Apache HTTP元件開發Client網路程式
元件採用Web的表單處理方法,較為簡單使用
實現所有 HTTP 的方法

HttpClient:
實現所有 HTTP 的方法(GET,POST,PUT,HEAD 等)

HttpPost:
實現Post方法,提供setEntity函式放置要傳送到伺服器的資料

HttpResponse :
可以取的Http回應的狀態結果及資料

3.  系統方法

3.1. GAE 開發環境
申請Google App Engine開發者帳號,使用google帳號登入後點擊「Create Application」會跳出驗證視窗需輸入個人手機號碼,之後輸入收到的授權碼至 「Enter Account Code」,就可以開紿佈署專案至https://appengine.google.com/start

3.2.    GAE 程式
1.在Google Engine設定新的應用程式,最重要是設定應用程式ID, 需要與專案名稱相同

2.利用Google App Engine Lanucher建立PHP程式應用專案,自動產生三個檔案(設定檔、主程式.php及圖片檔)。

3.3.    Android程式

開發一個Android應用程式需先安裝Eclipse、Java SDK、Android SDK,使用Eclipse開發,以下介紹一個簡單的Android程式與Cloud程式之間的溝通應用。Android程式本身有五個類別,HttpActivity是UI主畫面,本身就是一個main-thread(主執行緒). Http Client在做遠端連線會占系統資源,因此不可以直接寫在HttpActivity裡,需要利用Thread (執行緒)或Task(任務)去執行,而執行緒本身不可以直接操弄UI畫面,可以透過Handler送message方式通知Activity。HttpActivity呼叫(使用) HttpThread,HttpThread繼承Thread,HttpThread呼叫(使用) MessageHandler,MessageHandler繼承Handler是一個HttpActivity內部類別。


程式UML類別圖

4. 系統實作

4.1.  系統介面

實作一個簡單的文字輸入畫面,系統起始畫面於Android Client端輸入資料後點擊Send將輸入資訊傳送到Cloud server,啟動Java Thread控制HTTP與GoogleAppEngine  server端程式做連線溝通,最後透過Message Handler通知更新Activity UI畫面。


系統介面圖

4.2. 系統架構

本系統架構分2個模組,主要目的在將Android Client輸入文字傳送到Cloud server端,伺服端是由GAE建置,並搭配PHP 程式作為接收Http 傳送來的資料,透過Handler通知更新Activity UI。

 5. 結論與未來展望

  1. 本研究實作一個簡單的行動裝置與雲端伺服器溝通的架構,結果說明在Android平台利用Apache HTTP與Google GAE程式,是一種簡單、節省成本且穩定的方式。
  2. 在Android平台使用JAVA語言,Google GAE採用PHP語言,程式移植容易。
  3. Android平台與雲端伺服器的系統架構,可使用在多種產品應用上。
  4. 由於在Google GAE申請MySQL資料庫功能是要計費,未來希望可以申請並擴大程式應用。

 

 

參考來源

http://www.idc.com/getdoc.jsp?containerId=prUS24442013
http://en.wikipedia.org/wiki/Cloud_computing
https://developers.google.com/
http://aws.amazon.com/
http://www.windowsazure.com/