譚欽紅,黃茂碟,張作運(yùn)
?。ㄖ貞c郵電大學(xué) 通信與信息工程學(xué)院,重慶 400065)
摘要:根據(jù)現(xiàn)有信息處理方式,設(shè)計(jì)了基于Android的情報(bào)管理系統(tǒng)。情報(bào)管理系統(tǒng)通過(guò)網(wǎng)絡(luò)實(shí)時(shí)上傳采集的情報(bào)信息,管理員及時(shí)處理并下發(fā)指令,APP用戶(hù)根據(jù)指令進(jìn)行處理并將結(jié)果反饋給管理員從而形成閉合的信息處理方式。緊急情況下手機(jī)客戶(hù)端直接與后臺(tái)管理端進(jìn)行視頻直播,更加快捷地做出處理措施。詳細(xì)闡述了系統(tǒng)的總體構(gòu)架,介紹了系統(tǒng)的功能模塊和具體實(shí)現(xiàn),對(duì)系統(tǒng)進(jìn)行測(cè)試,并提出系統(tǒng)需要完善的地方。
關(guān)鍵詞:Android;情報(bào)管理系統(tǒng);JAX-WS;視頻通話(huà)
中圖分類(lèi)號(hào):TN919.82文獻(xiàn)標(biāo)識(shí)碼:ADOI: 10.19358/j.issn.1674-7720.2017.02.030
引用格式:譚欽紅,黃茂碟,張作運(yùn).基于Android的情報(bào)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2017,36(2):100-103.
0引言
隨著 “互聯(lián)網(wǎng)+”[1]時(shí)代的到來(lái),傳統(tǒng)行業(yè)中情報(bào)信息處理方式顯得有些過(guò)時(shí),如民警執(zhí)法、事故現(xiàn)場(chǎng)指揮救援等采集的情報(bào)信息往往是事后處理,導(dǎo)致信息滯留,采集設(shè)備也因行業(yè)不同使應(yīng)用場(chǎng)景受限。本文基于互聯(lián)網(wǎng)技術(shù),采用全新信息處理模式,設(shè)計(jì)了基于Android[2]的情報(bào)管理系統(tǒng)。選用開(kāi)源MySQL[3]關(guān)系型數(shù)據(jù)庫(kù)放置在網(wǎng)絡(luò)服務(wù)端,通過(guò)Web Service技術(shù)進(jìn)行數(shù)據(jù)傳輸,利用線(xiàn)程及流媒體技術(shù)進(jìn)行視頻數(shù)據(jù)傳輸,實(shí)現(xiàn)信息及時(shí)上傳處理并利用Android平臺(tái)擴(kuò)展應(yīng)用場(chǎng)景,達(dá)到了較好的情報(bào)管理效果。
1系統(tǒng)總體架構(gòu)
1.1系統(tǒng)簡(jiǎn)介
情報(bào)管理系統(tǒng)主要包括后臺(tái)數(shù)據(jù)存儲(chǔ)服務(wù)器、手機(jī)端(包括手機(jī)客戶(hù)端和手機(jī)服務(wù)端)和后臺(tái)管理端三部分,其系統(tǒng)架構(gòu)圖如圖1所示。手機(jī)端采集情報(bào)信息上傳至后臺(tái)管理端,后臺(tái)管理端處理采集信息下發(fā)指令給手機(jī)端,手機(jī)端用戶(hù)根據(jù)指令內(nèi)容完成相應(yīng)動(dòng)作并進(jìn)行反饋從而完成一條閉合的信息處理。情報(bào)信息數(shù)據(jù)在兩大服務(wù)器中進(jìn)行處理。系統(tǒng)接入互聯(lián)網(wǎng),實(shí)時(shí)將現(xiàn)場(chǎng)音視頻圖像回傳給后臺(tái)管理端,將手機(jī)變成隨身攜帶的監(jiān)控點(diǎn),彌補(bǔ)傳統(tǒng)監(jiān)控設(shè)備有圖像沒(méi)聲音,無(wú)法實(shí)時(shí)上傳視頻圖像等問(wèn)題。
1.2系統(tǒng)設(shè)計(jì)
情報(bào)管理系統(tǒng)手機(jī)端由Android平臺(tái)開(kāi)發(fā)完成,手機(jī)端采用C/S[4]架構(gòu)將應(yīng)用程序分為手機(jī)客戶(hù)端、手機(jī)服務(wù)端兩部分,手機(jī)服務(wù)端與數(shù)據(jù)存儲(chǔ)服務(wù)器進(jìn)行數(shù)據(jù)交互;后臺(tái)管理端由.NET[5]平臺(tái)開(kāi)發(fā)完成,后臺(tái)管理端訪(fǎng)問(wèn)數(shù)據(jù)存儲(chǔ)服務(wù)器獲得數(shù)據(jù)。
通過(guò)調(diào)用JAXWS[6]服務(wù)來(lái)發(fā)布使用Web Service框架的手機(jī)服務(wù)端,簡(jiǎn)化了Java技術(shù)開(kāi)發(fā)和部署Web Service的工作。手機(jī)客戶(hù)端采集情報(bào)信息通過(guò)HTTP協(xié)議訪(fǎng)問(wèn)Tomcat發(fā)布的Web Service服務(wù)器接口將信息存入數(shù)據(jù)庫(kù),將圖片存入FTP服務(wù)器并將圖片路徑寫(xiě)入數(shù)據(jù)庫(kù)中。后臺(tái)管理端通過(guò)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)得到情報(bào)信息,進(jìn)行分析并下發(fā)處理指令寫(xiě)入數(shù)據(jù)庫(kù)中,同時(shí)接收手機(jī)客戶(hù)端通過(guò)Socket連接請(qǐng)求的實(shí)時(shí)視頻傳輸。情報(bào)管理系統(tǒng)數(shù)據(jù)流圖如圖2所示。
2系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
情報(bào)管理系統(tǒng)主要有三大功能模塊:情報(bào)模塊、指令模塊、視頻圖傳模塊。情報(bào)模塊包括后臺(tái)管理端的情報(bào)管理和手機(jī)端的情報(bào)采集,兩者共同完成情報(bào)信息的管理以及采集;指令模塊包括后臺(tái)管理端的指令管理和手機(jī)端的指令處理,兩者共同完成實(shí)時(shí)指令的處理;視頻圖傳模塊實(shí)現(xiàn)一對(duì)多的通信模式,后臺(tái)管理端可以同時(shí)接受多個(gè)手機(jī)客戶(hù)端發(fā)起的視頻連接請(qǐng)求,實(shí)時(shí)監(jiān)聽(tīng)完成視頻傳輸,并在視頻通話(huà)結(jié)束后把視頻存入FTP服務(wù)器中將視頻路徑寫(xiě)入數(shù)據(jù)庫(kù)。
2.1情報(bào)模塊
該模塊手機(jī)客戶(hù)端通過(guò)HTTP方法上傳情報(bào)信息,情報(bào)信息包括情報(bào)標(biāo)題、情報(bào)內(nèi)容、發(fā)生時(shí)間和地點(diǎn),以及選擇圖片作為附件等,同時(shí)手機(jī)客戶(hù)端用戶(hù)可以查看歷史上傳情報(bào)。從后臺(tái)管理端,管理員可以查看相應(yīng)的情報(bào)信息,實(shí)時(shí)監(jiān)聽(tīng)手機(jī)端是否上傳情報(bào)。
2.1.1情報(bào)模塊手機(jī)端實(shí)現(xiàn)
完成該模塊功能需要在程序中申明INTERNET權(quán)限讓APP應(yīng)用接入網(wǎng)絡(luò),申明調(diào)用手機(jī)攝像頭拍照和操作權(quán)限允許APP應(yīng)用拍照以及操作手機(jī)圖庫(kù)照片,APP應(yīng)用實(shí)現(xiàn)完整信息上傳。
在手機(jī)客戶(hù)端定義InformToServer類(lèi),利用HTTP的POST請(qǐng)求方法實(shí)現(xiàn)客戶(hù)端與服務(wù)器之間的數(shù)據(jù)傳輸。訪(fǎng)問(wèn)服務(wù)端Web Service接口的方法如下:HttpPost httpPost = new HttpPost(urlAddress)創(chuàng)建POST請(qǐng)求方法,并且在List<NameValuePair> params 數(shù)組中附加上傳手機(jī)服務(wù)端數(shù)據(jù),最后使用httpPost.setEntity(new UrlEncodedFormEntity(para))方法將數(shù)據(jù)上傳至手機(jī)服務(wù)端。手機(jī)服務(wù)端使用request.getParameter()方法獲得數(shù)據(jù)并對(duì)數(shù)據(jù)進(jìn)行處理存入數(shù)據(jù)庫(kù)。最后手機(jī)客戶(hù)端使用ht.getEntity()方法獲得手機(jī)服務(wù)端反饋。
在手機(jī)客戶(hù)端創(chuàng)建基于JAXWS的InformActivity客戶(hù)端類(lèi),在手機(jī)服務(wù)端創(chuàng)建基于JAXWS的Upload服務(wù)端類(lèi),實(shí)現(xiàn)WSDL對(duì)Web Service接口的定義。手機(jī)客戶(hù)端通過(guò)訪(fǎng)問(wèn)手機(jī)服務(wù)端指定Web Service的wsdlURL(訪(fǎng)問(wèn)路徑)和QName(命名空間)完成圖片信息的上傳。
2.1.2情報(bào)模塊后臺(tái)管理端實(shí)現(xiàn)
該模塊后臺(tái)管理端將實(shí)時(shí)監(jiān)聽(tīng)手機(jī)端上傳情報(bào)信息條數(shù),提醒管理員系統(tǒng)中存在未處理情報(bào)。
點(diǎn)擊主界面“情報(bào)管理”按鈕,通過(guò)mysql.mySqlCommand.ExecuteReader()方法訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),將返回的數(shù)據(jù)在ListView控件中顯示。管理員可以按照指定日期的時(shí)間段、所屬機(jī)構(gòu)以及情報(bào)信息狀態(tài)查詢(xún)情報(bào)內(nèi)容。管理員根據(jù)上傳的情報(bào)內(nèi)容做出正確處理措施并將以指令方式下達(dá)給APP用戶(hù),通過(guò)new Order(order_ID, inform_ID)方法跳轉(zhuǎn)到指令下發(fā)界面進(jìn)行下發(fā)操作。
2.2指令模塊
該模塊中手機(jī)客戶(hù)端主動(dòng)向手機(jī)服務(wù)端請(qǐng)求查詢(xún)后臺(tái)管理端下發(fā)的指令信息,后臺(tái)下發(fā)的指令內(nèi)容插入MySQL數(shù)據(jù)庫(kù)中,手機(jī)服務(wù)端訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),將數(shù)據(jù)反饋給手機(jī)客戶(hù)端,利用ListView控件將信息顯示在APP界面上,并根據(jù)指令信息進(jìn)行情報(bào)反饋。
2.2.1指令模塊手機(jī)端實(shí)現(xiàn)
點(diǎn)擊APP應(yīng)用主界面的“新指令”按鈕,使用HTTP的POST請(qǐng)求訪(fǎng)問(wèn)手機(jī)服務(wù)端的Web Service接口。手機(jī)服務(wù)端反饋數(shù)據(jù)較多,將采用JSON數(shù)組形式進(jìn)行返回。首先將從數(shù)據(jù)庫(kù)中獲得的數(shù)據(jù)以鍵值對(duì)的方式存入HashMap散列表中,接著調(diào)用JSONObject類(lèi)將HashMap對(duì)象轉(zhuǎn)成Jason數(shù)組反饋給手機(jī)客戶(hù)端。手機(jī)客戶(hù)端以Jason格式接收數(shù)據(jù)再進(jìn)行處理。
APP主界面中將實(shí)時(shí)顯示未讀指令條數(shù),提醒APP用戶(hù)及時(shí)查看新指令并對(duì)指令進(jìn)行反饋。該功能將在手機(jī)客戶(hù)端設(shè)置一個(gè)定時(shí)任務(wù),不斷輪詢(xún)手機(jī)服務(wù)端得到最新數(shù)據(jù)[7],實(shí)現(xiàn)方法如下:Timer timer = new Timer()創(chuàng)建定時(shí)器,TimerTask task = new TimerTask()創(chuàng)建執(zhí)行任務(wù),利用timer.schedule(task, 0, 3000)執(zhí)行定時(shí)任務(wù)。
2.2.2指令模塊后臺(tái)管理端實(shí)現(xiàn)
后臺(tái)管理端的指令功能包括指令管理和指令模板兩個(gè)模塊。指令管理即為管理員下達(dá)新指令,指令模板將日常事件生成樣板,在下達(dá)新指令時(shí)選擇即可。模塊內(nèi)容可根據(jù)日期、狀態(tài)或者標(biāo)題進(jìn)行查詢(xún),同時(shí)可完成新建與刪除操作。后臺(tái)管理端指令下發(fā)流程如圖3所示。
2.3視頻圖傳模塊
該模塊中手機(jī)客戶(hù)端將直接與后臺(tái)管理端進(jìn)行網(wǎng)絡(luò)連接完成視頻通話(huà)[8],此通信方式實(shí)現(xiàn)了視頻傳輸實(shí)時(shí)性高、傳輸效率高等。情報(bào)管理系統(tǒng)可實(shí)現(xiàn)多個(gè)手機(jī)客戶(hù)端與后臺(tái)管理端通話(huà),同時(shí)進(jìn)行多個(gè)場(chǎng)景的視頻監(jiān)控。手機(jī)客戶(hù)端與后臺(tái)管理端交互的數(shù)據(jù)流向如圖2虛線(xiàn)標(biāo)識(shí)部分所示。該模塊采用傳輸控制協(xié)議[9](Transmission Control Protocol,TCP)協(xié)議建立連接實(shí)現(xiàn)Socket通信。
?。?)手機(jī)客戶(hù)端視頻請(qǐng)求
Socket通信前對(duì)APP應(yīng)用中視頻通話(huà)的視頻質(zhì)量進(jìn)行設(shè)置。首先在程序中申明調(diào)用使用手機(jī)攝像頭拍照權(quán)限對(duì)攝像頭進(jìn)行初始化,設(shè)置視頻寬度、視頻高度等影響視頻質(zhì)量因素的值。完成視頻通話(huà)準(zhǔn)備工作后新開(kāi)線(xiàn)程建立TCP連接,實(shí)現(xiàn)方法如下:client=new Socket(serverUrl,serverPort)定義MyThread對(duì)象方法,Thread th = new MyThread()實(shí)例化MyThread對(duì)象,th.start()執(zhí)行連接請(qǐng)求。
(2)后臺(tái)管理端接收請(qǐng)求并存儲(chǔ)視頻
后臺(tái)管理端接收來(lái)自手機(jī)客戶(hù)端的TCP請(qǐng)求,點(diǎn)擊打開(kāi)視頻播放器實(shí)現(xiàn)與手機(jī)用戶(hù)視頻通話(huà),在視頻通話(huà)結(jié)束后將視頻存入FTP服務(wù)器并在數(shù)據(jù)庫(kù)中寫(xiě)入視頻存放地址,以便回放歷史視頻查看。為了完成多個(gè)場(chǎng)景下視頻監(jiān)控,后臺(tái)管理端同時(shí)開(kāi)啟多個(gè)Socket線(xiàn)程接收手機(jī)客戶(hù)端的視頻請(qǐng)求。實(shí)現(xiàn)方法如下:
實(shí)例化名SocketServer對(duì)象,名為server;
調(diào)用server對(duì)象的接入函數(shù),數(shù)據(jù)流接收函數(shù),中斷函數(shù);
開(kāi)始監(jiān)聽(tīng)server對(duì)象;
?。?)后臺(tái)管理端視頻回放
每次視頻通話(huà)結(jié)束后臺(tái)管理端會(huì)將視頻存入FTP服務(wù)器,訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)得到視頻存儲(chǔ)地址對(duì)視頻進(jìn)行回放,為事件處理提供有利證據(jù)。系統(tǒng)需要在指定管理員身份下查看相關(guān)視頻錄像。該功能的偽代碼如下:
獲得歷史視頻存儲(chǔ)地址lvi;
實(shí)例化名為vlc的視頻播放對(duì)象;
設(shè)置vlc的名稱(chēng):lvi.SubItems[3].Text;
開(kāi)始播放視頻;
3系統(tǒng)功能測(cè)試
系統(tǒng)手機(jī)服務(wù)端由MyEclipse、Tomcat、JDK、MySQL開(kāi)發(fā)完成,手機(jī)客戶(hù)端由Eclipse、JDK、Android SDK、ADT開(kāi)發(fā)完成,后臺(tái)管理端由Visual Studio開(kāi)發(fā)完成。基于系統(tǒng)開(kāi)發(fā)環(huán)境以及系統(tǒng)框架的設(shè)計(jì),首先在xampp中開(kāi)啟MySQL服務(wù),其次打開(kāi)系統(tǒng)后臺(tái)管理端可執(zhí)行文件,并在MyEclipse軟件中啟動(dòng)Tomcat服務(wù)器開(kāi)啟系統(tǒng)手機(jī)服務(wù)端,為手機(jī)客戶(hù)端提供可訪(fǎng)問(wèn)Web Service接口。最后將情報(bào)管理系統(tǒng)手機(jī)APP的安裝文件apk安裝到Android手機(jī)終端,進(jìn)行系統(tǒng)測(cè)試。
(1)系統(tǒng)主界面
系統(tǒng)主界面的呈現(xiàn)方式對(duì)于用戶(hù)體驗(yàn)是至關(guān)重要的,簡(jiǎn)單大方的UI設(shè)計(jì)方便用戶(hù)快速定位到所需功能。在手機(jī)端和后臺(tái)管理端的主界面都直接設(shè)置了系統(tǒng)功能模塊按鈕,用戶(hù)點(diǎn)擊按鈕即可跳轉(zhuǎn)對(duì)應(yīng)功能模塊,進(jìn)入系統(tǒng)主界面流程如圖4所示。
(2)情報(bào)和指令模塊
情報(bào)模塊和指令模塊是相互關(guān)聯(lián)的功能模塊。手機(jī)客戶(hù)端采集情報(bào)上傳,后臺(tái)管理端根據(jù)情報(bào)信息下發(fā)處理指令,手機(jī)端對(duì)指令信息進(jìn)行情報(bào)反饋,因此情報(bào)與指令模塊測(cè)試一起進(jìn)行。進(jìn)入模塊流程如圖5所示。
(3)視頻圖傳模塊
視頻圖傳是系統(tǒng)開(kāi)發(fā)的核心,要求視頻清晰,對(duì)該模塊進(jìn)行測(cè)試。APP應(yīng)用接入網(wǎng)絡(luò)并調(diào)用手機(jī)攝像頭進(jìn)行視頻錄入與后臺(tái)管理端進(jìn)行Socket連接完成實(shí)時(shí)通話(huà),視頻通話(huà)流程如圖6所示。
4結(jié)論
情報(bào)管理系統(tǒng)應(yīng)用解決了傳統(tǒng)行業(yè)中的信息滯留問(wèn)題,同時(shí)將隨身攜帶的手機(jī)變成監(jiān)控點(diǎn)、定位點(diǎn),節(jié)約了不少設(shè)備資金。這樣的系統(tǒng)取代了傳統(tǒng)行業(yè)中的情報(bào)信息處理方式,隨時(shí)隨地采集信息,實(shí)時(shí)上傳,及時(shí)處理。此外,系統(tǒng)還需要進(jìn)一步完善,做到Android手機(jī)端之間的信息共享。
參考文獻(xiàn)
?。?] 寧家駿.“互聯(lián)網(wǎng)+”行動(dòng)計(jì)劃的實(shí)施背景、內(nèi)涵及主要內(nèi)容[J]. 電子政務(wù), 2015(6):32-38.
?。?] LEE J K, LEE J Y. Android programming techniques for improving performance[C]. 2011 3rd International Conference on Awareness Science and Technology (ICAST2011), 2011:386389.[3] CABRAL S K. MySQL 5.5: improving on the world’s most popular open source database[J]. Database Trends and Applications, 2011, 25(3):30.
[4] 陳俊斌.C/S與B/S結(jié)合的軟件體系結(jié)構(gòu)[J]. 電子技術(shù)與軟件工程,2015(3):68-69.
?。?] 王海燕.C#.NET下三層架構(gòu)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開(kāi)發(fā)[J]. 計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(6):78-81.
[6] 彭邦倫.利用JAX—WS開(kāi)發(fā)Web Service[J]. 電腦編程技巧與維護(hù), 2008(12):21-23.
[7] 倪紅軍.基于Android平臺(tái)的消息推送研究與實(shí)現(xiàn)[J]. 實(shí)驗(yàn)室研究與探索, 2014,33(5):99-100.
[8] 鄧蕊.基于Android的視頻監(jiān)控的研究與實(shí)現(xiàn)[D]. 西安:西安電子科技大學(xué),2012.
?。?] Xiong Yonghua, Wu Min, Jia Weijia. Delay prediction for realtime video adaptive transmisson over TCP[J]. Journal of Multimedia, 2010,5(3):216-223.