王紅勤
摘要:在深入分析現(xiàn)有高校設(shè)備管理系統(tǒng)功能的基礎(chǔ)上,文中設(shè)計(jì)了基于Android平臺的客戶端功能軟件。該軟件實(shí)現(xiàn)了用戶賬號登錄、掃描登錄二維碼登錄、查看用戶個(gè)人信息、查看當(dāng)前領(lǐng)用設(shè)備記錄、掃描二維碼/條形碼檢索設(shè)備信息等功能。該軟件使設(shè)備管理系統(tǒng)的功能更加完善,且具有界面友好,操作便捷,兼容性強(qiáng),便于后續(xù)開發(fā)和維護(hù)等特點(diǎn)。
關(guān)鍵詞:設(shè)備管理;Android客戶端;搜索設(shè)備;掃描二維碼
中圖分類號:TN929 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)12-0146-04
Abstract: Intensively analysis the function of existing equipment management system of University, the client app is designed base on Android platform. The software has realized the user account login, scaning the logining-qr code, check the users personal information, view the current usage records, scanning retrieval equipment information, and other functions. The software enables the function of equipment management system more perfect, the interface of software is friendly, convenient to operate, strong compatibility, which facilitates the subsequent development and maintenance, etc.
Key words: equipment management; Android client; search equipment; scan the QR code
隨著高校信息化建設(shè)速度的深入發(fā)展,高校所使用的設(shè)備越來越多,種類也越來越復(fù)雜,而原有管理方式無法適應(yīng)現(xiàn)代化管理的需要,出現(xiàn)了許多不足,從而對高校設(shè)備的管理成為重要研究問題。因經(jīng),擁有一個(gè)功能完備、操作便捷的設(shè)備管理系統(tǒng),是眾多高校設(shè)備管理的首選。
根據(jù)設(shè)備管理系統(tǒng)的需求,我們對設(shè)備管理信息系統(tǒng)進(jìn)行了詳細(xì)的設(shè)計(jì),包括Web端和Android客戶端。Web端主要分為六大模塊,包括設(shè)備管理、記錄管理、報(bào)表統(tǒng)計(jì)管理、庫存管理、權(quán)限管理和系統(tǒng)管理功能模塊; Android客戶端分為查看用戶信息、查看領(lǐng)用記錄、掃描檢索設(shè)備、搜索設(shè)備等模塊。該系統(tǒng)不僅能夠使設(shè)備管理者對設(shè)備信息的錄入、審核、查詢和統(tǒng)計(jì)等功能快速方便的操作。對于設(shè)備使用者來說,也可登錄移動終端,搜索相關(guān)設(shè)備、查看領(lǐng)用設(shè)備詳情等操作,給用戶帶來了很大的便捷。本文側(cè)重基于Android平臺[1]的客戶端功能的設(shè)計(jì)與實(shí)現(xiàn),基于eclipse的開發(fā)環(huán)境,采用JAVA語言,使軟件具有良好平臺移植性和可擴(kuò)展性,該APP軟件使得設(shè)備管理系統(tǒng)的功能更加完善,提高用戶操作的方便性。
1 Android客戶端功能需求分析
在設(shè)備管理信息系統(tǒng)中引入Android客戶端,主要為了方便用戶的操作,用戶無須使用電腦在web端登錄,就可完成相關(guān)的操作。比如檢索設(shè)備處是否存在某個(gè)設(shè)備,以便于領(lǐng)用申請,查詢自己的借用設(shè)備記錄等。Android客戶端具體的功能需求結(jié)構(gòu)圖如圖1所示。
1)查看用戶信息:用戶使用工號從客戶端成功登錄后,即可查看自己的信息。
2)掃描檢索設(shè)備信息:用戶成功登錄后,通過掃一掃功能掃描相應(yīng)二維碼、條形碼到設(shè)備庫檢索設(shè)備,若存在該設(shè)備將獲取設(shè)備信息,并顯示給用戶。
3)查看領(lǐng)用記錄:用戶成功登錄后,可以方便查看以往領(lǐng)用的設(shè)備記錄,無須登錄web端系統(tǒng)進(jìn)行查看。
4)搜索設(shè)備:用戶成功登錄后,通過搜一搜功能,并輸入相應(yīng)關(guān)鍵詞進(jìn)行檢索,若存在相關(guān)設(shè)備,將獲取設(shè)備相應(yīng)的數(shù)據(jù)顯示給用戶。
2 Android客戶端功能的設(shè)計(jì)與實(shí)現(xiàn)
2.1 Android客戶端登錄模塊設(shè)計(jì)與實(shí)現(xiàn)
這種登錄方式,需要用戶輸入用戶名(教師工號)和密碼進(jìn)行登錄,基于Android平臺進(jìn)行設(shè)計(jì)與實(shí)現(xiàn)。登錄模塊在進(jìn)行設(shè)計(jì)時(shí),頁面布局需要用xml格式編寫,該xml聲明一個(gè)垂直的線性布局,布局中包括了兩個(gè)子線性布局,其中第一個(gè)線性布局包含一個(gè)ImageView,用來設(shè)置登錄界面logo;第二個(gè)線性布局通過包含兩個(gè)EdiTextText(接收用戶賬號和密碼的輸入)、一個(gè)登錄Button控件以及兩個(gè)TextView,它們分別作用于設(shè)置用戶忘記密碼連接和App版權(quán)信息。 其中各個(gè)控件的樣式通過Android的背景選擇器selector[2]來定義,并在控件的background屬性進(jìn)行設(shè)置。
實(shí)現(xiàn)登錄功能需要用到LoginActivity和LoadingActivity,打開客戶端首先會啟動一個(gè)歡迎引導(dǎo)界面WelcomeActivity, 其次才啟動登錄界面LoginActivity,界面如圖2所示。當(dāng)用戶輸完賬號密碼點(diǎn)擊登錄按鈕之后,啟動一個(gè)透明背景加載等待的LoadingActivity擋在LoginActivity前面,這樣做的好處是防止用戶多次點(diǎn)擊登錄按鈕觸發(fā)登錄事件。 該LoadingActivity首先獲取LoginActivity傳過來用戶賬號和密碼,然后開啟一個(gè)線程發(fā)送請求到服務(wù)器進(jìn)行驗(yàn)證。若服務(wù)器返回成功登錄的狀態(tài)時(shí),這時(shí)LoadingActivity會通知LoginActivity進(jìn)行界面跳轉(zhuǎn)并且調(diào)用finish()方法關(guān)閉自己,LoginActivity接收到登錄通知,就會啟動主頁面MainActivity,主界面如圖3所示。
2.2 查看用戶信息模塊的設(shè)計(jì)與實(shí)現(xiàn)
用戶成功登錄客戶端后,點(diǎn)擊圖3主界面中的“個(gè)人信息”或者“設(shè)置”中的個(gè)人信息項(xiàng),Activity會向服務(wù)器的UsersCRUDController控制器發(fā)出“getSpecificUserRoleInfo”請求,控制器會以json形式返回用戶信息數(shù)據(jù),緊接著Activity調(diào)用JsonUtil類解析傳送數(shù)據(jù)展示給用戶,如圖4所示,相關(guān)代碼如下:
2.3 Android客戶端查詢領(lǐng)用記錄設(shè)計(jì)
點(diǎn)擊圖3中的“查看領(lǐng)用記錄”時(shí), 用戶可以在頁面查看設(shè)備的領(lǐng)用記錄,提供設(shè)備編號、領(lǐng)用人,領(lǐng)用開始時(shí)間、歸還開始時(shí)間等條件進(jìn)行篩選查詢,用戶填寫需要篩選的條件內(nèi)容后點(diǎn)擊“查詢”按鈕,界面如圖5所示。信息將會發(fā)送給服務(wù)器,服務(wù)器調(diào)用EquipmentLogController控制器通過業(yè)務(wù)層間接調(diào)用數(shù)據(jù)訪問層EquipmentLogDao的getReceordLogList ()方法來完成條件篩選,最后顯示到終端。
2.4 Android客戶端二維碼掃描模塊的實(shí)現(xiàn)
在該系統(tǒng)中,我們也引入二維碼應(yīng)用,當(dāng)設(shè)備處工作人員錄入設(shè)備時(shí),系統(tǒng)會將設(shè)備的編號以及它的SN碼生成二維碼,這樣做的好處是可以通過掃描,快速獲取設(shè)備相關(guān)信息;其次假設(shè)我們手中有某個(gè)設(shè)備的條形碼時(shí),想領(lǐng)用該設(shè)備,但卻不知道設(shè)備處是否有該設(shè)備,這時(shí)我們可以利用該客戶端掃描手中條形碼,檢索設(shè)備處庫中設(shè)備。
2.4.1 掃描二維碼通信過程
Android客戶端[3]要通過掃描設(shè)備的二維碼,可以和Web進(jìn)行建立通信,web端利用WebSocket協(xié)議實(shí)現(xiàn)了瀏覽器與服務(wù)器全雙工通信(full-duplex)。在 WebSocket API中,瀏覽器和服務(wù)器只需要要做一個(gè)握手的動作,然后,瀏覽器和服務(wù)器之間就形成了一條快速通道,兩者之間就直接可以數(shù)據(jù)互相傳送。利用WebSocket協(xié)議,可以使得服務(wù)器主動向客戶端傳送數(shù)據(jù),實(shí)現(xiàn)了服務(wù)器推送技術(shù),通過過程如圖6所示。
整個(gè)的操作的過程,步驟如下:
1)首先瀏覽器請求服務(wù)器生成登錄UUID 以及生成登錄二維碼圖片(使用UUID為了防止多用戶時(shí)沖突)。
2)服務(wù)器處理請求后,向?yàn)g覽器返回UUID和登錄二維碼圖片。
3)瀏覽器接收到所返回的數(shù)據(jù),處理后與服務(wù)器建一個(gè)WebSocket雙向通訊通道,以便后續(xù)數(shù)據(jù)通訊。
4)這時(shí),我們可以利用設(shè)備管理系統(tǒng)Android客戶端進(jìn)行掃描登錄二維碼,客戶端成功掃描并解析后,會向服務(wù)器發(fā)送信息數(shù)據(jù),其中包括UUID、Token。同時(shí),客戶端也會跳轉(zhuǎn)至授權(quán)界面。
5)服務(wù)器接受到手機(jī)客戶端請求后,及時(shí)向?yàn)g覽器發(fā)出通知,告訴用戶已有手機(jī)掃描登錄二維碼,并要求授權(quán)登錄。
6)當(dāng)手機(jī)客戶端確認(rèn)授權(quán)瀏覽器登錄系統(tǒng),會再次向服務(wù)器發(fā)起授權(quán)通知。
7)服務(wù)器一旦接到手機(jī)客戶端確認(rèn)授權(quán)通知,馬上通知瀏覽器登錄系統(tǒng),這是瀏覽器就能成功登錄系統(tǒng),無須像傳統(tǒng)那樣輸賬號與密碼,方便了操作。
2.4.2 Android客戶端二維碼掃描模塊的實(shí)現(xiàn)
二維碼掃描模塊利用了Google的開源項(xiàng)目Zxing,進(jìn)行一個(gè)二次開發(fā)。ZXing是一個(gè)開放源碼的,用Java實(shí)現(xiàn)的多種格式的1D/2D條碼圖像處理庫,它包含了聯(lián)系到其他語言的端口。Zxing可以利用手機(jī)的內(nèi)置攝像頭實(shí)現(xiàn)對條形碼、二維碼進(jìn)行編碼和解碼,目前它所支持的格式包括:UPC-A、UPC-E、EAN-8、EAN-13等等。Zxing庫的主要部分支持:核心代碼的使用、適用于J2SE客戶端的版本、適用于Android客戶端的版本(即BarcodeScanner)、Android的集成(通過Intent支持和BarcodeScanner的集成)等功能。
1)掃描界面開發(fā)
通過點(diǎn)擊圖3“主界面”右上角二維碼圖標(biāo)或者發(fā)現(xiàn)中掃一掃,如發(fā)送一個(gè)Intent對象[4]可以啟動掃描界面CaptureActivity。而原有掃描界面(提供普通橫屏的掃描界面)不能滿足我們的需求,因此對Zxing庫改寫。在本客戶端中,對Zxing的掃描框ViewfinderView進(jìn)行了修改,效果類似微信掃一掃,界面如圖7所示,主要利用畫筆繪畫出掃描框邊上的8個(gè)綠色矩形,然后繪畫出掃描的區(qū)域。
2)掃描二維碼/條形碼檢索設(shè)備詳情
Web端通過QrcodeHandler類對設(shè)備以SN碼和編號組合生成二維碼,設(shè)置二維碼的編碼格式(hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M))、二維碼的糾錯(cuò)率(hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M))以及二維碼的顏色等等。
然后,客戶端得到二維碼信息后會通過HttpUtil工具類向EquipmentCRUDController控制器發(fā)出獲取設(shè)備信息請求,控制器接收請求處理并返回?cái)?shù)據(jù),最后客戶端調(diào)用JsonUtil類解析數(shù)據(jù)展現(xiàn)給用戶。檢索到符合要求的設(shè)備界面如圖8所示。
3)掃描二維碼登錄模塊的實(shí)現(xiàn)
Web端掃描二維碼登錄系統(tǒng)主要利用WebSocket協(xié)議[5]實(shí)現(xiàn)了瀏覽器與服務(wù)器全雙工通信,以及手機(jī)客戶端配合。服務(wù)端WebSocket主要通過QrcodeLoginWS類進(jìn)行實(shí)現(xiàn)。
其中@ServerEndpoint 注解是一個(gè)類層次的注解,它主要是將目前的類定義成一個(gè)websocket服務(wù)器端,注解的值將被用于監(jiān)聽用戶連接的終端訪問URL地址;而@OnOpen和@OnClose注解定義了一個(gè)新用戶連接和斷開的時(shí)候所調(diào)用的方法;@OnMessag注解定義了當(dāng)服務(wù)器接收到客戶端發(fā)送的消息時(shí)所調(diào)用的方法。需注意從 javax.websocket包中引入了一些相應(yīng)類。
瀏覽器連接服務(wù)端WebSocket模塊開發(fā)
3 結(jié)束語
目前,移動互聯(lián)網(wǎng)技術(shù)迅速發(fā)展,Android操作系統(tǒng)的移動設(shè)備越來越多,設(shè)備管理系統(tǒng)的設(shè)計(jì)過程中,移動終端的應(yīng)用軟件也是必不可少的。本文通過對Android平臺的學(xué)習(xí),結(jié)合JAVA開發(fā)語言,設(shè)計(jì)了Android客戶端的功能軟件,該軟件可以方便用戶搜索設(shè)備,方便領(lǐng)用,查看用戶信息,二維碼/條形碼登錄等功能。軟件適用于android操作系統(tǒng)[6]2.3版本及以上,且實(shí)現(xiàn)了界面的自適應(yīng)功能,軟件還具有界面友好,操作便捷,易于維護(hù)等特點(diǎn)。
參考文獻(xiàn):
[1] Rick Rogers. Android應(yīng)用開發(fā)[M]. 李耀亮,譯.北京:人民郵電出版社,2010.
[2] 楊豐盛. Android 應(yīng)用開發(fā)揭秘[M]. 北京: 機(jī)械工業(yè)出版社, 2010.
[3] 馬建紅. 基于Android平臺的移動個(gè)人助手設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù), 2012,35(2):25-27.
[4] 余志龍, 陳昱勛, 鄭名杰, 等. Android SDK開發(fā)范例大全[M]. 2版.北京: 人民郵電出版社, 2010: 14-20.
[5] Mike ODocherty. 面向?qū)ο蠓治雠c設(shè)計(jì)(uml2.0版)[M]. 北京: 清華大學(xué)出版社, 2006: 214-243.
[6] 李剛. 瘋狂Android講義[M]. 北京: 人電子工業(yè)出版社, 2012: 307.