章亦葵,王哲文
(天津大學 軟件學院,天津300072)
隨著智能手機市場的發展,Android已經成為了當前市場中的主流平臺,而Android平臺程序也隨之成為了開發的熱門。針對目前Android平臺編程的現狀,本文采用HTML、CSS、JavaScript語言來編寫Android平臺應用程序,利用HTML簡單的布局,很大程度地提高了編程效率。[1]系統的設計按照軟件工程的思路,從需求開始,到設計、編碼實現、測試交付,完整地完成了一個軟件周期。
Android是基于Linux內核的軟件平臺操作系統,早期由Google公司開發,后由開放手機聯盟Open Handset Alliance開發。[2,9-10]它包括操作系統、用戶界面、應用程序以及移動電話工作所需的全部軟件。它采用了軟件堆層(software stack,又名軟件疊層)的架構,主要分為三部分:
① 底層以Linux核心為基礎,由C語言開發,只提供基本功能。
② 中間層包括函數庫Library和虛擬機Virtual Machine,由C++開發。
③ 最上層是各種應用軟件,包括通話程序、短信程序等,應用軟件由各公司自行開發,以Java編寫。[3-4]
隨著Android系統的不斷發展,由Google公司主導的Android已經開始向Iphone發起挑戰。[5]Android系統架構圖如圖1所示。
Dojo是一個用JavaScript語言實現的開源DHTML工具包。它是在幾個項目捐助基礎上建立起來的(nWidgets、Burstlib、f(m)),這也是叫它a"unified"toolkit的原因。Dojo的目標是解決開發DHTML應用程序中遇到的那些長期存在的歷史問題以及Historical problems with DHTML跨瀏覽器問題。[6]
Dojo有以下的特征:
◆利用Dojo提供的組件,你可以提升Web應用程序的可用性、交互能力以及性能。
◆可以更容易地建立互動的用戶界面,同時Dojo提供小巧的動態處理工具。
◆利用它的低級API和可兼容的代碼,能夠寫出輕便的、單一風格的JavaScript代碼。Dojo的事件系統、I/O的API以及通用語言形式是基于一個強

圖1 Android系統架構圖
大的編程環境。
◆通過Dojo提供的工具,可以為你的代碼寫命令行式的單元測試代碼。
◆Dojo的擴展包能夠使你的代碼更容易維護,耦合性更低。
Dojo通過很少的代碼完成了以上的功能。當寫腳本時,只需要包含很少的JS文件,也可以有選擇地下載Dojo提供的龐大的功能。
JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。它基于JavaScript(Standard ECMA-262 3rd Edition-December 1999)的一個子集。JSON采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習慣(包括C、C++、C#、Java、JavaScript、Perl、Python等)。這些特性使JSON成為理想的數據交換語言,易于人閱讀和編寫,同時也易于機器解析和生成。[7]
JSON建構于兩種結構:
① “名稱/值”對的集合(A collection of name/value pairs)。不同的語言中,它被理解為對象(object)、記錄(record)、結構(struct)、字典(dictionary)、哈希表(hash table)、有鍵列表(keyed list)或者關聯數組(associative array)。
② 值的有序列表(An ordered list of values)。在大部分語言中,它被理解為數組(array)。
本文中推薦使用Ubuntu 10.0.1版本的操作系統,開發平臺使用Eclipse集成開發環境。服務器使用Tomcat 6.0版本,數據庫使用開源的 MYSQL5.0,JDK版本采用1.6,Android的SDK版本采用10.0.1。[8]
本文設計了一個小的場景作為程序的需求,如圖2所示。

圖2 系統需求用例圖
首先來解釋圖2中所示的需求,假設和朋友一起外出,到了吃飯的時候,首先通過應用程序來查找附近的飯店,然后選擇一家餐館用餐,用餐之后通過手機進行支付,同時在應用中分享對餐館的評價。由于需要進行查看餐館優惠信息、查看餐館評價等活動,需要進行大量的運算和存儲,因此,本程序設計是將數據的運算和存儲都放到了云端,而手機端只進行簡單的數據解析和顯示。這樣的云端加手機端的設計,既發揮了云端計算速度快、存儲容量大的特點,又發揮了移動端便攜的優勢。
總體上講系統設計為兩個部分:一部分是手機上的客戶端,另一部分是遠程的服務器端。手機端負責向服務器端發送請求,顯示服務器端返回的信息,而服務器端則響應手機端的請求,將信息按照指定的格式返回。由于本程序對數據的運算和存儲都在云端進行,因此手機端和云端需要有大量的數據交換,為了應對由此產生的流量問題,決定采用輕量級的JSON數據結構作為手機端和云端進行數據交換的格式。這樣既能減少因為數據交換而產生的流量,又可以完成手機端和云端之間頻繁的數據交換。
本文中主要進行手機端應用程序的設計。使用HTML、CSS、JavaScript作為開發語言,運用Dojo框架完成手機端應用程序的開發。與服務器的交互采用JSON輕量級的數據格式,在頁面展示部分運用Dojo框架輔助進行展示。
用戶登錄系統之后,選擇查看附近餐館信息,此時手機端系統會向遠端的服務器發送包含自身經緯度信息的請求,服務器端接收請求之后,進行運算和查找,將返回的信息用JSON格式進行包裝發送回手機端,查看附近餐館時序圖、查看餐館信息流程如圖3、圖4所示。

圖3 查看附近餐館時序圖

圖4 查看餐館信息流程
用戶在登錄系統之后,選擇查看附近餐館信息,當用戶選擇其中一間餐館進行詳細查看的時候,就能夠看到餐館全部的信息以及其他用戶對餐館的評價。手機端會向服務器端發送包含餐館ID以及評論條數作為參數的信息,服務器端接收到信息之后會將信息以JSON格式發送回來。手機端在對接收到的信息進行解析之后,將信息顯示出來。查看餐館信息時序圖、查看餐館評價信息流程如圖5、圖6所示。

圖5 查看餐館信息時序圖

圖6 查看餐館評價信息流程
用戶在登錄系統之后,查看了某一餐館的具體信息,如果這家餐館有打折活動,就可以查看這家餐館的優惠信息。手機端會向服務器端發送請求,服務器端會將這家餐館的全部打折信息以JSON格式返回。手機端接收到信息之后,進行解析顯示,查看餐館優惠信息時序圖、查看餐館優惠信息流程如圖7、圖8所示。

圖7 查看餐館優惠信息時序圖

圖8 查看餐館優惠信息流程
用戶在用餐完畢之后,可以選擇對這家餐館進行評價,同時可以將評價信息分享到微博等社交工具上,方便朋友們進行參考。手機會將評價信息以JSON格式發送到服務器上,服務器將數據解析之后存入數據庫中,同時利用已經開發好的接口,將信息自動發往微博保存,發表評論信息時序圖、發表評論信息流程如圖9、圖10所示。

圖9 發表評論信息時序圖
系統樣品展示略——編者注。

圖10 發表評論信息流程
Android平臺作為當前最為流行的平臺,具有巨大的市場潛力,僅僅能夠單機運行的程序勢必會漸漸地被能夠與云端、移動互聯網相關聯的程序所取代。可以預見,未來以Android為平臺的,與云計算、云存儲相結合的程序將是發展的主流,將是嵌入式智能手機應用程序的發展方向。使用Dojo作為開發框架,能夠提高布局編程效率,降低了移動互聯網程序的門檻,使移動互聯網程序更加容易開發。
編者注:本文為期刊縮略版,全文見本刊網站www.mesnet.com.cn。
[1] J F DiMarzio.Android:A Programmer's Guide[M].New York:McGraw-Hill,2009.
[2] 公磊,周聰.基于Android的移動終端應用程序開發與研究[J].計算機與現代化,2008(8).
[3] 韓超,粱全.Android系統原理開發要點詳解[M]北京:電子工業出版社,2010.
[4] 靳巖,姚尚朗.Android入門開發與實踐[M].北京:人民郵電出版社,2009.
[5] 楊豐盛.Android應用開發揭秘[M].北京:機械工業出版社,2010.
[6] Rawld Gill,Craig Riecke,Alex Russell.精通 Dojo[M].北京:人民郵電出版社,2009.
[7] Douglas Crockford.JavaScript語言精粹[M].北京:電子工業出版社,2009.
[8] 余志龍.Android SDK開發范例大全[M].北京:人民郵電出版社,2009:120-150.
[9] 王向輝,張國印,沈潔.Android應用程序開發[M].北京:清華大學出版社,2010:1-60.
[10] E2ECloud工作室.深入淺出 Google Android[M].北京:人民郵電出版社,2009.