隆杰 孫健 彭躍彪
(湖南文理學院計算機與電氣工程學院 湖南省常德市 415006)
近幾年來,中國的水表抄表發(fā)展還處于一個不太高的水平,現(xiàn)在水表百分之七十還是人工抄表,人工抄表具有眾多弊端。例如由于抄表的數(shù)據量比較龐大,容易生錯、漏等;或是由于管理不合理,出現(xiàn)很多竊水現(xiàn)象,對國家經濟造成重大的損失。
盡管水表行業(yè)發(fā)展迅速,但智能表的普及仍然僅在歐美一些比較發(fā)達的國家,而在大部分發(fā)展中國家,仍然是機械表占據了主要的市場地位。在歐美一些國家中,人工費是十分昂貴的,因此智能表的普及是可以預見的,但在中南亞及一些其他發(fā)展中國家里,人工費便是較為廉價的,因此這些國家為了測查水表信息會招收大量抄表員,但受限于技術發(fā)展,仍處于一個較低的水平。
隨著我國經濟的快速發(fā)展和“一表一戶”工程政策的全面實施,城鎮(zhèn)居民對水的需求量越來越大,同時對抄表管理水平有了更高的要求,但目前普遍采用的還是人工抄表方式,弊端較多,因此,越來越多的水表將計算機、抄表測量技術和現(xiàn)代通信技術結合在一起,提高抄表效率,方便用水數(shù)據統(tǒng)計與管理。
系統(tǒng)的架構包括本地持久層,Activity 及業(yè)務層,通訊層,服務層,數(shù)據持久層。抄表員通過APP 處理,即業(yè)務層處理,完成相關操作后通過網絡通信,即通訊層與后臺服務器進行數(shù)據交互,后臺將處理好的信息存儲于數(shù)據庫,APP 同時將本地需要存儲的數(shù)據存儲于Sqlite 輕量型數(shù)據庫中。
本層主要是針對各界面中需要存儲本地的數(shù)據進行處理,如抄表冊數(shù)據的記錄,抄表狀態(tài)的修改等數(shù)據庫處理功能。
本層主要是各種功能的設計與使用,包含對UI 界面的設計、抄表員信息設置、數(shù)據持久化存儲、模糊查詢、登錄賬號綁定、存儲空間的管理、服務器端口的設置、系統(tǒng)權限檢取、網絡通訊等。
通過網絡通訊來實現(xiàn)端口連接、數(shù)據上傳下載、系統(tǒng)版本的更新檢測等功能。是實現(xiàn)夸平臺交互最重要的一層,也是應用程序能否被拓展的最關鍵的一層,包括抄表數(shù)據上傳、故障信息處理、近期水量查詢、抄表冊下載、圖片上傳、用戶參數(shù)上傳等異步隊列。
該層主要是接收處理網絡通訊與數(shù)據庫傳來的數(shù)據,并作為中間商快速的將這些數(shù)據上傳到數(shù)據持久層或通訊層,從而來實現(xiàn)數(shù)據的高效交互與更替。
為保證數(shù)據的管理與存儲,采用SQL 數(shù)據庫對服務層傳過來的數(shù)據進行處理,方便管理人員進行查詢、刪除、審核等業(yè)務需求功能的實現(xiàn)。如圖1 所示。
圖1: 系統(tǒng)框圖
該項目系統(tǒng)主要采用了Litepal 輕量型數(shù)據庫作為整個項目數(shù)據庫的設計,主要分為抄表員管理,抄表冊管理,抄表管理3 個重要的數(shù)據庫。如表1、表2、表3 所示。
表1: 抄表員管理數(shù)據庫
表2: 抄表冊管理數(shù)據庫
表3: 抄表管理數(shù)據庫
本系統(tǒng)主要使用了TextView、Button、EditText、RecycleListVew、Dialog 等控件。具體設計如下:
TextView 控件,主要用于各種數(shù)據的顯示,使用時首先在XML 文件中進行注冊,隨后在對應界面進行初始化。
Button 控件用于各種界面跳轉的開關,控件初始化后為了UI 的美觀,用xml 文件編寫B(tài)utton 的背景,編寫單擊事件來觸發(fā)界面轉出或彈框。
EditText 主要被用于各種需要手動填寫的數(shù)據或需要修改的內容,如抄表實際數(shù)字和抄表反饋等,首先在注冊初始化控件后需要對EditText 內容進行約束,在實際抄表數(shù)EditText 填寫框中將其內容與上期抄表數(shù)進行聯(lián)系,當兩者間的差大于上期抄表數(shù)百分之20 時變會爆紅提醒抄表員數(shù)據誤差過大。
RecycleListView 應用于大量數(shù)據顯示和數(shù)據拖動等功能需求界面,由于基本每個界面的需求都不一樣,所以先讓適配器綁定需用使用RecycleListView,然后新建一個界面作為適配器的主界面。
Dialog 對話框用于顯示上傳是否成功或是否完成某項操作后,使用AlartDialog,通過編寫對話框屬性。
由于Retrofit 采用標注方式進行接口連接,在多接口連接時十分便捷,本系統(tǒng)有十幾個接口,但只有兩個是多文件多參數(shù)進行傳輸?shù)?,因此,為了開發(fā)周期更短,僅兩個接口采用OkGo 框架,其余都采用Retrofit 框架進行網絡通訊。
Retrofit 框架使用時首先需要導入jar 包,導包后需要注冊服務來聯(lián)系接口與服務器的網絡連接,由于大部分接口如抄表冊下載等傳輸數(shù)據較大,內容類型也十分多,因此若不進行數(shù)據解析則會有大量亂碼的出現(xiàn)。在Retrofit 框架中只需addConvererFactory(GsonConverterFactory)便能實現(xiàn)數(shù)據的Gson 解析,解析成果后在OnResponse 反饋方法中將接收的數(shù)據存儲到本地數(shù)據庫中。
OkGo 的框架使用首先在服務注冊時可直接在OkGo.execute()方法中直接注冊,注冊后直接在此方法中進行Gson 格式數(shù)據解析,多文件上傳時,params()來設置上傳參數(shù)的類型與變量名,addFileParams()來指定文件集。若成功接收數(shù)據則在OnSuccess 方法中存儲到本地數(shù)據庫中,否則通過tag 標志在OnFault 方法中進行錯誤類型提醒,如服務器不存在tag 便是404。此外與服務器通訊傳來的數(shù)據僅在OnSuccess 中可用,不可在其他方法中調用這些數(shù)據。
2.1.1 抄表計劃測試
進入“抄表計劃下載”頁面,如圖1 所示,表冊可以單獨下載也可以全部下載,下載后數(shù)據才會出現(xiàn)在本地。
2.1.2 抄表管理主頁面查看已下載好的表冊的基本信息,如圖2 所示,并且通過點擊某條表冊信息進來相應的表冊詳細信息界面。
圖2: 抄表計劃界面
2.1.3 抄表管理詳細頁面
該頁面分為“待抄”、“已抄”、“已審”、“異?!焙汀绊樞颉?,如圖3 所示,點擊前四項可以查看到該分類下的基本用戶數(shù)據,點擊“查看地圖”查看水表具體位置,點擊用戶數(shù)據將進入抄表頁面,“順序”下可以調整待抄用戶的順序,需要點擊“保存”才能生效。若出現(xiàn)抄表錯誤時,可點擊用戶表上分灰色字體部分進行復抄未審核用戶表。
圖3: 抄表管理主頁面
2.1.4 抄表頁面
分為“抄表”和“表況”,如圖4 所示,在該頁面內進行抄表,點擊“上一戶”或“下一戶”可在本頁面內快速切換用戶,點擊右上方的感嘆號可以進入用戶信息頁面。
圖4: 抄表管理詳細頁面
不同的算法與框架的使用會導致每個界面的功能的響應速度都是不一樣的,為了保證用戶的良好體驗,本論文對APP 流暢性做了測試,結果如表4 所示。
表4: APP 反應時間測試
基于Android 的高效抄表APP 系統(tǒng)設計能夠實現(xiàn)監(jiān)督抄表員按時精確的完成抄表,當抄表員下載了表冊后,表冊會在一定期限后無效,即抄表員無法繼續(xù)抄表,同時通過GPS定位查看抄表員抄表軌跡,避免抄表員采用估算方法進行偷懶?;诖?,抄表公司不僅減輕了每月對抄表數(shù)據統(tǒng)計的繁重任務,同時督促了抄表員的抄表效率,給水表公司帶來了更大的效益。