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