戴智明
隨著移動技術的不斷發展,人們都在使用身邊的各種移動設備享受著各式各樣的服務。Android作為一個Google發行的用于移動設備操作系統,由于Android的開放性、低成本,使其迅速獲得了市場的認可。根據2012年7月的統計結果顯示,Android在中國市場的占有率已經達到了76.7%。因此為了讓學生,讓宿舍管理人員,讓維修人員能夠更高效更便捷的完成各種日常維護管理工作,本文提出了一種基于Android平臺的宿舍維修管理系統。
根據筆者所在學校的宿舍維修管理的情況看,目前的情況為學生找宿舍管理人員填寫紙質報修單,再由宿舍管理人員定時將報修單提交給維修班,維修班根據報修單派人完成維修工作;而宿舍管理人員每天都需對各個宿舍的衛生狀況進行檢查及打分,都是記錄在紙上然后再在門口黑板上公布結果。這樣的流程不僅繁瑣,而且不易歸檔整理。
(1)現設計學生能利用自己的Android手機直接向維修班提交報修單,并可以對維修單的進度進行跟蹤,完成之后能進行評價反饋。(2)維修班則可使用WEB平臺接收所提交的所有報修單,并對其進行人員分配,把訂單直接發布到維修人員的Android移動終端上,這樣不僅簡化了流程,也使維修人員在外也能得知接下來的任務,維修流程大大縮短。(3)宿舍管理人員每天對宿舍的檢查記錄也只需在Android移動終端上完成,對自己負責的宿舍范圍內的所有宿舍的衛生狀況進行打分,如若發現有不符合宿舍規范的現象發生,也可直接使用移動終端對該宿舍發送整改通知。
根據之前的需求,基于 Android的宿舍維修管理系統在功能上將包括以下幾個部分[1],如圖1所示:

圖1 系統功能模塊圖
(1)Android SQLite
SQLite是一款輕量級、嵌入式的關系型數據庫,其占用的資源非常少,可能只需要幾百KB。而Android作為移動終端的操作系統,其資源量是不能跟PC機相提并論的,因此當需要在 Android平臺上進行數據存儲的時候 SQLite則是一個不錯的選擇[2]。因為在本維修管理系統中產生的數據量不會很龐大,因此也將采用SQLite作為數據的本地存儲方式,同時也會記錄下用戶等的一些狀態信息。
(2)WebService
WebService,其實就是一個程序,其提供了一個服務接口,允許用戶通過Web來對其進行調用[3]。在Android平臺上是無法直接對遠程數據庫(如:SQL)做直接的訪問的,所以就需要WebService來擔當中間層,可以用過http協議來訪問WebService,然后再通過WebService來訪問數據庫,完成數據的請求。對于數據結構及數據之間的關系,WebService則采用標準的XML語言,通過指定的格式來對數據進行描述。
WebService具有以下優點:
跨防火墻的通信:如果用戶數量龐大,并且分布很廣,那客戶端和服務器端之間的防火墻或者說代理服務器都將會使通信變得很麻煩。如果在中間層使用WebService,就可以允許用戶直接通過中間層來進行調用,這樣不僅開發周期大大降低,同時代碼的復雜度也會降低。
集成性:在很多情況下,都需要對不同平臺、不同語言構成的應用程序進行集合。但這個集合所需要的成本是異常大的。而WebService是由標準的XML來描述,具有良好的跨平臺性,那么通過 WebService可以將數據進行統一共享,以方便使用。
在本系統中也將借助WebService來進行對遠程數據的交互。
遠程數據的訪問將使用 WebService來完成交互,WebService 是一種基于 SOAP協議[4]的遠程調用標準,通過 WebService可以將各種平臺、各種語種、各種數據整合到一起。但是在Android SDK中并沒有提供調用WebService的庫,因此需要通過第三方提供的包來向服務器端進行WebService調用。首先得先下載 KSOAP包,然后新建android項目:并把KSOAP存放在android項目的lib目錄下,右鍵->build path->configure build path,在 Libraries中Add JARS,添加KSOAP包。
要對WebService方法進行調用首先得對SoapObject對象進行實例化,指明命名空間和方法名:

設置調用方法的參數

對SOAP請求信息進行設置,包括SOAP的版本號

創建HttpTransportsSE對象:

然后對返回的數據進行解析
另外需要注意的是,通過 Android移動終端調用WebService時,是必須通過網絡的,因此程序必須首先獲得網絡訪問的權限,需要在AndroidManifest.xml中的manifest中添加一條對訪問網絡權限的定義:

XML作為一種標準化的常用存儲數據方式,具有很良好的跨平臺性。對 XML的解析通常有三種方法:DOM、SAX、PULL[5]。DOM解析器在對XML文件進行操作時,是將文件分成獨立的片段或樹形結構的節點,通過節點樹來訪問數據,因此其檢索效率會比較高,但是在訪問大文檔的時候整個解析過程所消耗的資源會比較大,通常這種方式會用在PC上。SAX和PULL的運行方式是相類似的,都是基于事件的解析器。其特點都具有解析速度快、資源消耗小、小巧等特點。而PULL已經嵌入到Android內核中了,不需借助第三方的jar包來進行支持,在本文中的XML文件的解析都將采用PULL解析器來完成。
PULL解析器進行解析時首先需獲取解析器并設置編碼,并產生第一個事件:

當事件產生后將對這個事件進行解析。
通過XmlPullParser.START_DOCUMENT,判斷當前的事件是否為文檔開始的事件。如果是則需初始化對象的集合,如:

通過XmlPullParser.START_TAG來判斷是否是標簽元素的開始,如果是則需判斷標簽元素名,并得到其屬性值如:

通過XmlPullParser.END_TAG判斷當前事件是否是標簽結束的事件,如果是則添加到集合,并進入下一個事件:
event = parser.next();
在開發過程中有的時候會碰到中文顯示亂碼的問題,這是由于在通信的過程中,使用了不同的編碼方式;這個編碼至少會進行兩次,一次從服務器的編碼轉換成網絡編碼,第二次是從網絡編碼轉換成終端設備上的編碼。在這兩個轉換過程中,如果編碼方式的不統一,就可能會引起亂碼。在本系統中采用的方式為傳輸過程中采用 UTF-8的編碼方式進行傳輸,因為目前的終端設備幾乎都會支持Unicode的字符集,那么在UTF-8和Unicode字符集之間就能夠進行轉換。
系統界面如圖2所示:

圖2 系統界面圖
將宿舍維修管理系統放到 Android平臺上,充分發揮了移動終端的便捷性,報單、打分、維修等都能輕松實現。特別對于維修人員來說,現大可不必每次處理完一批報修單后還需返回重新領取任務,隨時隨地都可清楚的看到完成了哪些,還有哪些需要完成,也能及時的收到維修后的反饋。
本系統的實現也可以作為其他高校輔助系統開發的一種參考。
[1]李亮.基于Android系統的小型店鋪輔助管理軟件的設計[B].企業科技與發展:下半月,2011(10):48,50.
[2]張恒喜.基于 SQLite的 Android數據庫編程[J].電腦編程技巧與維護,2011(21):30,31.
[3]王成偉.基于 WebService的建材租賃管理信息系統的設計與實現[J].電腦與信息技術,2012(3):54,58.
[4]韓雙旺.基于Web Service技術的考試成績在線查詢系統[J].工業儀表與自動化裝置,2012(3):45-47.
[5]欒詠紅.基于 Android平臺電子讀物的開發與實現[J].湖南理工學院學報,2011:48,52.