馮星星
(西安市市政設施管理中心 陜西省西安市 710016)
手機應用軟件APP 以其信息收集和處理不受時間、空間局限的優勢,與各行各業的融合發展日趨深入,西安城市管理部門(簡稱市政部門)與時俱進,相繼推出多款市政服務APP,但是城市橋梁巡視信息化建設尚處在起步階段。隨著西安現代化進程加快,城市橋梁巡視面臨更為嚴峻的挑戰。
(1)專業巡視人員數量的增長速度跟不上巡視范圍擴大的速度。西安城市發展已超過三環,橋梁保有量接近400 座,專業巡視人員卻不足百人,若招收臨時人員,投入的培訓經費將不菲,而且人員規范化管理仍處于探索總結之中,無成熟經驗可循。
(2)傳統的巡視方式效率不高。定期出巡的方式存在時空局限性,響應突發事故不及時,處理滯后。
(3)巡視信息存在人為錯誤。現場巡視人員一般通過紙質工單上報病害,再由人工轉錄成電子文檔,轉錄人員不良的職業操守或身心狀態將直接損害到信息存錄的質量。
(4)巡視信息存儲格式不規范,錯誤難以追溯和撤銷。
對橋梁巡視信息進行有序管理是橋梁科學養護的前提。為使橋梁巡視信息真實、完整、有效,實現橋梁巡視信息化管理,亟需開發一套專業和高效的信息系統對巡視信息進行采集、存儲和規整,基于安卓智能手機的橋梁巡視系統APP 的開發正逢其時。
西安市橋梁巡視系統APP 旨在集成巡視功能于手持設備端,實現巡視現場信息的實時處理與存檔。主要功能包括登錄、橋梁新建與信息查詢、工單操作、緊急消息發送與備查。在橋梁日常巡視中,巡視信息主要記錄在工單上,工單是保存、處理及查詢信息的憑證,因此在APP 開發中,工單被設計成為最基本的數據結構,信息傳輸、存儲及操作的基本單位。APP 主要開發內容包括身份認證與權限管理、橋梁信息、現場病害存儲、緊急消息的增刪改查、數據庫設計及UI 設計。
系統APP 主要以Android Studio 作為開發工具集,采用LitePal數據庫,以安卓8.0 版智能手機為測試機,利用原型法快速開發出一個原型系統,然后在原型的基礎上逐步實現并完善主要功能。主要技術特點包括:具有良好的安全性;具有錯誤提示和糾錯功能,滿足穩定性的要求;涵蓋了西安所有轄區、所有類型橋梁的全部巡視項目,保證信息的完整性;用戶界面簡潔友好,操作便捷;系統具有良好的擴展性,可與橋梁檢測部門的工作進行對接。

圖1

圖2

圖3
開發涉及的關鍵技術包括信息持久化技術、信息滾動顯示及刷新技術、病害照片拍攝和刪除技術、雙監聽器兼容技術、側滑菜單技術、天氣信息在線抓取和輸入提示技術,這7 項關鍵技術也是實現目標功能的難點。
信息持久化技術是指將巡橋記錄的瞬時數據存入手機數據庫中成為持久狀態,使數據在瞬時狀態和持久狀態間進行轉換的技術,保證數據在手機待機或關機時不會丟失,并能隨時調用。本系統APP 利用LitePal 數據庫實現信息持久化機制,即通過對象關系映射(ORM)模式,將類的實例化對象持久化到SQL 關系數據庫中。LitePal 數據庫中存有四個類的數據模式,分別是登錄Loading、橋梁Bridge、工單WorkSheet 和緊急消息UrgentMessage,其中WorkSheet 與Bridge 之間存在1:1 聯系,聯系關鍵字是bridge_code。四個類繼承于父類DataSupport,并且重寫Parcelable 接口實現對象序列化。DataSupport 類中的方法包括保存save()、更新update()、刪除delete()以及查找find();Parcelabler 接口中需要重寫的方法包括寫入writeToParcel()、讀出createFromParcel()、描述對象describeContents()以及統計對象個數newArray()。信息化持久技術類圖如圖1 所示。
橋梁基礎信息、工單及緊急消息在顯示時往往會超出屏幕范圍,滾屏顯示技術實現通過手指輕輕上滑即在一屏之內滾動顯示全部信息的功能,其技術原理是:編寫RecyclerView 控件作為顯示容器,將工單等數據源定義為List 類型,編寫適配器Adapter 將數據源注入到顯示控件RecyclerView 中,并在Adapter 中定義的內部類ViewHolder 承載數據源對象的屬性,實例化layoutManager 對象控制RecylerView 中數據源的顯示格式。信息滾屏顯示技術原理示意圖如圖2 所示。
數據刷新流程是:編寫SwipeRefresh 監聽器監聽下拉事件,從而觸發Refresh()方法,開啟新線程new Thread(new Runnable())顯示刷新過程,切回主線程查詢更新后的數據源queryDataSources(),通知適配器重新注入數據源adapter.notifiyDataSetChanged()。
巡視系統APP 既可以拍照,也可以隨時將不滿意的照片刪除,其技術原理是:編寫一個可刪除照片的類DeleteImageView,開啟手機攝像頭權限后,每拍攝一張照片就實例化一個可刪除類的對象,全部對象統一存放在顯示容器contain 中供用戶瀏覽和選擇刪除。可刪除類DeleteImageView 繼承自RelativeLayout 類,設置有三個狀態變量,分別存放照片對象、刪除按鈕對象以及照片地址,其中刪除按鈕對象帶有監聽功能,如果監聽到點擊事件,即觸發刪除功能刪除照片。病害照片拍攝與刪除技術原理示意圖如圖3 所示。

圖4

圖5

圖6
雙日期監聽技術實現了通過同時監聽開始日期和結束日期的改變、查詢出該時段全部工單信息的功能,其技術原理是:擴展OnDateChangedListener 接口編寫雙日期選擇器類DoubleDatePickerDialog,定義三個狀態變量,分別是開始日期選擇器datePicker_start、結束日期選擇器datePicker_end 和接口實例callback;重寫接口中的onDateChanged()方法,將監聽到的開始和結束日期分別保存在開始日期選擇器datePicker_start 和結束日期選擇器datePicker_end 中;在OnDateSetListener 監聽接口的實例callback 中重寫onDateSet()方法,用來查詢所選時間段內的全部工單。雙日期監聽技術類圖如圖4 所示。
巡視系統APP 編寫了RecyclerView 控件顯示信息,并為每條信息配加了側滑菜單。側滑菜單默認隱藏,手指左滑信息時菜單顯示,供刪除和修改。側滑菜單分為三種:按日期顯示工單的側滑菜單SlidingMenu_bydate、按時間段顯示工單的側滑菜單SlidingMenu_byperiod 和緊急消息的側滑菜單SlidingMenu_UrgentMessages。

圖7
實現側滑菜單有兩個關鍵技術點:
(1)每個RecyclerViewe 控件相應的適配器Adapter 負責將數據源注入到顯示控件RecycylerView 當中,并為數據源中的每條信息配加側滑菜單。
(2)菜單捕捉手指的起落和滑向,當手指按向屏幕中的一條信息時,觸發MotionEvent.ACTION_DOWN 事件,其他未選中信息的側滑菜單自動關閉;當手向左滑動離開屏幕時,觸發MotionEvent.ACTION_UP 事件,打開選中信息的側滑菜單。
側滑菜單技術類圖如圖5 所示。
巡橋人員填寫新建工單時,系統APP 將自動填入天氣信息,其技術原理是:從官方平臺上抓取并解析當天的天氣信息,okHttpClient 對象負責抓取,JsonObject 對象負責解析,如果解析成功,系統APP 利用message 和handle 對象將解析結果填入工單天氣一欄的textView 對象中。天氣信息在線抓取時序圖如圖6 所示。
日常橋梁巡視過程中,很多常見病害及專業術語往往需重復輸入,巡視系統APP 將這些常見病害及術語分別歸納入數據源,當輸入到類似的文字時APP 將立即給出提示,其技術原理是:使用ArrayList 數組作為數據源的數據結構,每個數組元素對應一種常見病害或是專業術語;編寫AutoCompleteTextView 下拉列表框控件顯示提示信息;編寫適配器Adapter 將數據源注入到AutoCompleteTextView 當中,并配寫過濾器arrayFilter 對數據源進行篩選,只提示與輸入相關的病害及專業術語。輸入提示技術類圖如圖7 所示。
西安市橋梁巡視系統APP 使用Material Design 和Material UI Kit進行用戶界面(UI)的設計。APP用戶界面包括登錄界面、主界面、橋梁新建界面、工單操作界面、工單條目顯示界面、工單新建界面、工單修改界面、工單顯示界面、消息發送界面、歷次消息備查界面,其中主界面包括概況版面、概覽版面和滑動菜單。所有界面及單座橋梁、單張工單、單條緊急都以xml 布局文件的形式編寫并保存。
主界面采用Fragment+ViewPage+TabLayout 輪換布局形式,工單條目顯示等界面采用列表式布局,工單操作等界面采用折疊式標題欄CollapsingToolbarLayout 布局,緊急消息發送采用懸浮按鈕形式,概覽版面采用CardView 卡片布局形式,概況版面采用PieChat布局形式,滑動菜單采用抽屜DrawerLayout 布局形式,除此之外,界面布局形式還包括LinearLayout 線性布局、CoordinatorLayout 布局等。
從登錄界面正確輸入用戶名和密碼將登錄主界面,如果用戶名、密碼未輸入或不匹配,系統APP 將給予提示,并可以在是否明文顯示密碼中進行切換。進入系統后用戶根據分配的權限進行相應的操作。
主界面分為三個部分:位于頂端的菜單欄、概況版面和概覽板面,單擊“概況”和“概覽”標簽可在兩個版面間切換,默認顯示概況版面。菜單欄包括系統標題和隱藏菜單,隱藏菜單包括新建橋梁和關閉系統兩項。概況版面用餅狀圖分別統計出了西安市主要城區所轄橋梁的總數和占比,餅狀圖中一個區塊一種顏色代表一個城區,顏色圖例在餅狀圖上方顯示。點擊任一個區塊,該區塊會突出顯示,其面積會略大于其他未為被點擊的區塊,然后顯示該城區所轄的全部橋梁。概覽版面顯示主要城區所有橋梁的名稱,下拉屏幕,屏幕中間會出現圓形進度條,當進度條消失后橋梁信息被刷新。點擊任一橋梁名稱進入所選橋梁的工單操作界面。
打開主界面隱藏菜單,在菜單項中點擊選擇新建橋梁項,進入新建橋梁界面。在新建橋梁界面中輸入橋梁名稱,點擊橋梁所在區輸入框,將顯示提示下拉框,可從中選擇新建橋梁所在的城區。點擊拍照圖標,拍攝新建橋梁的外觀照片;點擊打開圖標,從手機內存中直接選取外觀圖片。點擊外觀圖右上角的紅,可以刪除外觀圖重新進行拍照或者選取。點擊“保存”按鈕保存。如果信息沒有填入完整,系統APP 將給予提示。正確保存后回到主界面,在概覽版面下拉刷新,將出現新建的橋梁。
在單個橋梁的工單查詢中,向上滑動屏幕,將隱藏工單操作界面上端的橋梁外觀圖,只顯示菜單欄。菜單欄的左側依次是返回圖標和所選橋梁的名稱,右側是工單查找圖標和隱藏菜單。展開隱藏菜單,包括新建工單和發送消息兩項。菜單欄的下方顯示與該橋梁所有相關的工單,工單以巡視日期命名。點擊查詢圖標,出現雙日期選擇器,選擇“開始日期”和“結束日期”,點擊確定,將在單個橋梁的工單操作界面顯示所選時間段(包含“開始日期”和“結束日期”)內的全部工單。點擊工單,進入工單顯示界面,可瀏覽工單具體內容,點擊病害照片可以察看大圖。
在按日期查詢中,手指向右滑動屏幕,將出現滑動菜單。點擊按時間查詢項顯示日期選擇器。選擇日期后,點擊確定,查詢結果將顯示在工單條目顯示界面,工單以條目形式自上而下列出,每一工單所巡視的橋梁名稱顯示在條目的左側,拍攝的病害照片數顯示在條目右側。點擊條目進入工單顯示界面,可瀏覽工單具體內容。
在按時間段查詢中,手指向右滑動屏幕,將出現滑動菜單。選擇按時間段查詢項,進入時間段選擇界面。時間段選擇界面最上端是手動選擇時間段的區域,下面提示有四種時間段供選擇,分別是最近一周、最近半個月、最近一個月和最近半年。在手動選擇區從左到右依次是:返回圖標、起始時間選擇框、交換圖標、結束時間選擇框和查詢圖標。點擊起始時間選擇框,顯示起始時間選擇器,所選日期將顯示在起始時間選擇框中;點擊結束時間選擇框,出現結束時間選擇器,所選日期將顯示在結束時間選擇框中。點擊交換圖標,將交換起始時間選擇框和結束時間選擇框中的所選日期。點擊查詢圖標,將在工單條目顯示界面顯示查詢結果。
在工單新建中,新建界面的必填項一般由系統自動填入,包括:所巡視的橋梁名稱,當天巡視的日期,當天巡視的天氣;其余項需要手動填寫,包括:限載牌、限高牌、隔音板、端柱、人行道、車行道、隔離欄、伸縮縫、泄水孔、落水管、扶梯、欄桿、病害說明、結構變異、橋區施工、巡視人以及病害圖片。手動填寫時APP 會給出輸入提示,輸入一個字后即給出提示,可以從提示下拉框中選取輸入。點擊拍照圖標對橋梁病害進行拍照,一張工單最多允許拍攝十張病害照片,超過十張,系統將給出提示并且關閉當前的拍照功能。每一張病害照片的右上角均有一個紅,點擊紅可以刪除該照片。點擊“預覽”按鈕預覽新建的工單;點擊“保存”按鈕保存新建的工單并返回上一級界面。下拉屏幕刷新,當圓形進度條消失后,顯示新建的工單。
在工單修改中,修改界面顯示所需修改工單的原始信息,其中橋梁名稱、日期和天氣三項無法修改,其余項均可重新輸入;手指上滑屏幕顯示工單修改界面的余下部分。點擊已有病害圖片右上角的紅,刪除圖片;點擊拍攝圖標重新拍攝病害圖片;點擊“預覽”按鈕預覽修改結果;點擊“保存”按鈕保存修改結果。
刪除工單有兩種途徑:第一種,在單個橋梁的工單操作界面,長按工單根據提示框選擇“刪除”操作;第二種,在工單條目顯示界面,向左側滑任一條目右側,從出現的側滑菜單中選擇刪除操作。在橋梁工單操作界面或工單條目顯示界面下拉刷新,該工單將不再顯示。
兩種途徑可以進入消息發送界面發送消息:第一種,在工單條目顯示界面點擊位于右下方的懸浮按鈕;第二種,在單個橋梁的工單操作界面,展開隱藏菜單,從中選擇發送消息項。消息發送界面上端是手機號輸入框,單擊輸入框將出現提示下拉框,選擇電話號碼;界面下部是短信輸入框,寫好短信后點擊輸入框右端的發送圖標發送短信。如果發送成功,系統提示“已發送!”,并回到工單條目顯示界面或者橋梁工單操作界面,同時將發送成功的短信保存入數據庫。如果沒有填寫手機號、輸入手機號格式不正確或者短信輸入框為空,系統APP 將提示輸入錯誤,不予保存編輯內容。

圖8
在滑動菜單中點擊歷次消息項,進入歷次消息界面。向左側滑動任一條消息將出現“刪除”按鈕,點擊按鈕刪除該條消息。
系統APP 主要功能界面包括:登錄界面、橋梁信息瀏覽界面、橋梁新建界面、工單查詢和操作界面、緊急消息發送與備查界面等,主要功能界面如圖8 所示。
基于安卓智能手機的西安橋梁巡視系統APP 已經運用到了實際工作當中,功能和性能能夠滿足橋梁日常巡視的需要。通過無縫對接巡橋現場與病害信息處理,系統APP實現了對病害的快速響應,同時縮短了橋梁巡視時間,節省了人力和車輛投入。隨著系統APP版本的升級,市政橋梁巡視信息化水平將得到進一步的提高。