鐘新斌,劉 云,張振江
(北京交通大學通信與信息系統北京市重點實驗室,北京100044)
城市軌道交通建設的飛速發展,給城市生活帶來了巨大的便利,同時也給城市軌道交通基礎設施的日常養護維修普查工作帶來了不小的挑戰。針對傳統普查方式存在的不足,本文設計了一種基于Android平臺的城市軌道交通養護維修普查信息采集平臺,該平臺允許普查工作人員使用支持android應用的手機等便攜式移動設備,隨時隨地記錄各類普查數據,并在特定條件下安全可靠地將普查數據上傳到普查信息系統中,提高普查工作效率。
平臺的主要設計思路是在現有養護維修普查信息系統的基礎上,增加一個基于Android操作系統的普查信息采集客戶端,該普查客戶端可以靈活地安裝在支持Android應用的手機等便攜式移動設備中,并可以和部署在遠端Internet上的服務器交互通信,如圖1。

圖1 平臺總體設計框圖
普查客戶端的前端GUI信息錄入模塊,用于給普查人員提供友好的普查信息錄入界面;數據存取接口用于保存和維護各類普查信息;數據包封裝模塊用于將各類普查信息封裝成統一格式的數據包,便于傳輸和推送;編碼壓縮用于保證數據包推送的可靠性和有效性;客戶端配置單元可以獲取并更新從普查服務器端下發的配置信息;基于WIFI、GPRS和3G網絡,Client和Server通過通信組件實現交互,完成配置參數下發和數據推送功能。
普查信息采集平臺主要實現將普查信息推送到服務器(普查信息系統)。要實現數據的準確、高效的提交需要普查客戶端和服務器的有機配合。針對平臺特點,其工作流程如圖2。

圖2 平臺工作流程
用戶在經過1和2過程成功開啟普查客戶端應用后,經過過程3可以啟動普查客戶端后臺服務,該服務可以定時檢查手機網絡狀態、內存和最新的普查數據保存情況。當更新周期到達時,經過4和5獲取從服務器下發的最新配置參數,完成平臺設定。
普查人員可以通過觸摸屏、手機鍵盤等方式填寫特定時間、特定位置和特定普查對象的普查信息,這些信息通過數據接口保存在Android平臺內嵌的SQLite數據庫中[1]。
當后臺服務監聽到數據需要推送時,比如數據記錄到達一定數量,手機內存空間不足,或用戶手動提交等,此時會啟動數據推送功能,普查客戶端將普查數據按一定的方式進行統一的組織,經過一定的壓縮和編碼,在網絡環境和服務器就緒的情況下將數據提交到普查服務器端。
普查服務器接收到普查客戶端提交的數據后,進行解碼和解壓,進一步拆封數據包,將普查信息存入數據庫中,同時給客戶端反饋狀態碼 。
普查客戶端從服務器端獲取正確的反饋狀態碼后,可以繼續發送下一個數據包,否則重新發送。
在移動環境下,通常受到帶寬和網絡流量的限制,普查客戶端要將普查數據高效可靠地上傳到普查服務器中,需要對暫存在Android移動設備中的數據進行很好的封裝。平臺對普查數據的封裝過程如下:

圖3 數據封裝過程
JSON(JavaScript Object Notation)和XML(Extensible Markup Language)是目前最常用的2種數據傳輸格式[2]。與XML格式相比,JSON作為輕量級的數據傳輸格式,它基于文本,易于閱讀和編碼,同時更加節省計算資源,減少網絡傳輸流量,加快網絡傳輸。Android平臺的org.json包提供了對JSON格式數據的序列化和反序列化的支持。此外,為了進一步提高平臺的數據傳輸效率,減少網絡傳輸流量。平臺還對JSON格式的數據采用ZIP算法進行了壓縮處理。
普查數據經ZIP 壓縮后,JSON格式的文本數據轉換成壓縮后的二進制數據格式,這類數據的高效、無損的傳輸和表示是采集平臺需要考慮的問題。為了便于二進制文件的傳輸,需對ZIP壓縮后數據采用一種映射方式將二進制文件映射成文本數據再進行傳輸和處理,本平臺采用Base64編碼技術實現映射。Base64編碼MIME規定的一種編碼格式,其通過64個ASCII字符碼對二進制數據進行重新編碼組合[3],特別適合在http傳輸中應用。
為了保證普查數據可以高效、可靠地推送到部署在遠端Internet上的服務器中,普查客戶端需一定的機制對采集的數據進行整合,通信雙方按一定的機制實現交互。本系統設計的數據推送流程如圖4。

圖4 客戶端普查數據推送流程
要將普查客戶端采集的普查數據推送到普查信息系統中,必須通過目前的WIFI、GPRS或是3G網絡。Android平臺提供Socket和HTTP等方式實現網絡通信,由于現有的普查信息系統是基于B/S結構,需要部署到Web服務器中,而設計基于socket的健壯的web服務器較為困難。在不同的網絡中,HTTP方式實現較為容易。因此平臺采用Http方式實現客戶端和服務端的網絡通信。HTTP請求包括POST和GET 2種方式。由于GET方式對傳輸的數據長度有限制,而普查數據較為龐大,因此采用POST方式上傳。
為了保證普查客戶端和服務端的安全通信,特別是保證傳輸數據的完整性,平臺采用基于RSA公鑰密碼體系的安全交互方式,如圖5。

圖5 普查客戶端與服務器交互機制
普查客戶端:
(1)普查客戶端將原始普查數據經JSON封裝→ZIP壓縮→Base64編碼后組成原始數據A;
(2)數據A附加用戶標識UA,組成數據B=A+UA,UA由(uName, pwd)組成,分別是服務器分配給客戶端的用戶名和口令;
(3)采用算法計算數據的值v=MD5(B);
(4)采用MD5算法計算數據B的MD5值v=MD5(B);
(5)采用RSA加密算法,用客戶端私鑰對v加密,得到C=EPRa(v);
(6)將數據C附加到數據B中組成完整的數據包P=B+C,將P上傳個到服務器。需要說明的是,為了保證安全,可對P進行加密處理。
普查服務器:
(1)服務器獲取普查客戶端上傳的數據'P;
(2)解析P'的數據B'和C',對B'進行MD5雜湊計算得到MD5值v'=MD5(B'),同時對C'用RSA解密算法,用客戶端的公鑰進行解密得到一個參數v''=Dpua(C');
(3)比較v'與v'',如果相同,說明數據包在傳輸過程中沒有被篡改。否則,丟棄該數據;
(4)從B'中獲取A'和UA',系統對UA'中的用戶進行驗證,驗證通過后可以將A'中的數據經Base64解碼→ZIP解壓縮→JSON解析過程得到普查數據并存入數據庫中,否則丟棄該組數據。
基于Android平臺的城市軌道交通養護維修普查信息采集平臺,有效解決了普查數據的二次錄入問題,節約了大量人力物力,加速了城市軌道交通信息化的建設。本系統雖然對基本的普查信息采集方面效果明顯,但在對圖片特別是多媒體(視頻等)普查數據支持方面有待進一步改善。
[1] 勒巖,姚尚明. Google Android 開發入門與實戰[M] . 北京:人民郵電出版社.
[2] Guanhua Wang. Improving Data Transmission in Web Applications via the Translation between XML and JSON.Communications and Mobile Computing (CMC), 2011, 182-185.
[3] Shirali-Shahreza, M.; Shirali-Shahreza, S.Sending pictures by SMS. Advanced Communication Technology, 2009, 222-223.
[4] Reto Meier. Professional Android 2 Application Development[M] . Indianapolis:Wiley publishing Inc, 2011.