周輝+王文青+趙峰+郭啟倩
摘 要: 為了解決原有跨斷層測距記簿器老舊及記簿程序功能不完善的問題,結(jié)合實(shí)際需求和自身優(yōu)勢,選用目前最為流行的Android智能終端作為記簿器并開發(fā)相配套的跨斷層測距外業(yè)記簿應(yīng)用程序。主要從技術(shù)手段、功能設(shè)計、總體結(jié)構(gòu)和主要功能模塊的實(shí)現(xiàn)等方面做簡要介紹。結(jié)果表明該軟件工作正常并實(shí)現(xiàn)了所有設(shè)計的功能,能夠滿足現(xiàn)有業(yè)務(wù)的需求。
關(guān)鍵詞: 跨斷層測距; 記簿程序; Android; XML文件
中圖分類號: TN926?34 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2017)01?0017?03
Abstract: In order to deal with the problems of ageing and incomplete functions of cross?fault range finding record program, in combination with the actual demand and advantage of the cross?fault range finding recorder, the most popular Android intelligent terminal was chosen as the recorder, and the matched cross?fault range finding record application program was deve?loped. The technical means, functional design, overall structure, and the implementation of the main function module are introduced briefly. The test results show this software works normally, can realize all designed functions and meet the demand of the existing businesses.
Keywords: cross?fault range finding; record program; Android; XML file
0 引 言
跨斷層形變監(jiān)測被認(rèn)為是較可靠的地震前兆監(jiān)測手段之一??鐢鄬訄龅匦巫冇^測是根據(jù)大地形變測量原理,在斷層上進(jìn)行斷層垂直、水平活動的直接觀測技術(shù),觀測量是斷層兩側(cè)的相對位移量,其物理意義明確,觀測信息直觀,觀測手段成熟,在我國已有40余年歷史,積累了大量有價值的觀測資料,在地震預(yù)測研究、地質(zhì)探測、地球運(yùn)動學(xué)和地球動力學(xué)研究中發(fā)揮了重要作用[1?3]。目前中國地震局第二監(jiān)測中心負(fù)責(zé)12個跨斷層測距測量場地的觀測任務(wù)。之前跨斷層測距外業(yè)觀測數(shù)據(jù)采集仍然使用1993年問世的惠普HP?100LX掌上電腦。由于該掌上電腦已停產(chǎn)多年,機(jī)器及數(shù)據(jù)連接線經(jīng)過十多年的使用已嚴(yán)重老化,故障率高,目前很難找到相匹配的零部件,并且所配套外業(yè)記簿軟件功能不完善,雖然有較完整的數(shù)據(jù)記錄功能但沒有相應(yīng)的限差檢查等功能,觀測人員需要人工計算觀測結(jié)果來檢查是否超限,給正常觀測外業(yè)工作帶來極大的不便。
自從Google于2007年推出專為移動設(shè)備設(shè)計的開源操作系統(tǒng)Android以來,Android吸引了眾多軟件開發(fā)者的目光,2012年以來它的市場份額超過70%。鑒于現(xiàn)存的以上情況,本文采用Android智能終端開發(fā)相配套的跨斷層測距外業(yè)記簿應(yīng)用程序。
1 系統(tǒng)設(shè)計
1.1 Android開發(fā)環(huán)境
Android是一個基于Linux內(nèi)核的移動操作系統(tǒng)。可利用Eclipse軟件進(jìn)行編程,采用Android虛擬設(shè)備(AVD)進(jìn)行仿真,使用Java語言開發(fā)Android應(yīng)用程序。搭建、配置Android開發(fā)環(huán)境需要如下軟件工具:
(1) Java Development Kit(JDK):JDK是整個Java的核心,包括Java運(yùn)行環(huán)境,Java工具和Java基礎(chǔ)的類庫,是Android軟件開發(fā)中最基礎(chǔ)的軟件包。
(2) Eclipse:Eclipse是Android開發(fā)中常使用的開發(fā)環(huán)境(IDE),應(yīng)用軟件開發(fā)工作主要在其上完成。
(3)Android Software Development Kit(Android SDK):Android SDK是一系列Android專屬的軟件開發(fā)工具的集合,包含開發(fā)Android應(yīng)用程序的各種工具集,有Android模擬器(Android Emulator)、Android調(diào)試工具(Android Debug Bridge)等。
(4) Eclipse插件ADT:ADT旨在為Eclipse提供一個強(qiáng)大的集成環(huán)境來開發(fā)、調(diào)試Android 應(yīng)用程序。
1.2 功能設(shè)計
參考前一款跨斷層外業(yè)記簿程序的功能特點(diǎn),再加入一線觀測人員的意見。本文開發(fā)了集觀測數(shù)據(jù)記錄和超限檢查于一體的跨斷層測距外業(yè)記簿軟件,該程序由以下三個模塊組成:外業(yè)觀測記簿模塊、實(shí)用功能模塊和軟件設(shè)置模塊。系統(tǒng)功能模塊如圖1所示。
(1) 外業(yè)觀測記簿模塊實(shí)現(xiàn)以下功能:根據(jù)記錄人員的操作記錄觀測基礎(chǔ)信息、天氣情況和觀測數(shù)據(jù)等,計算出單次觀測成果;在記錄的過程中對一些限制條件進(jìn)行超限檢查;最后對原始觀測數(shù)據(jù)加密,使得原始觀測數(shù)據(jù)在存儲時以加密方式存儲。
(2) 實(shí)用功能模塊實(shí)現(xiàn)的功能有:讀取指定跨斷層測邊的觀測數(shù)據(jù)以及計算相對誤差等觀測成果,根據(jù)超限標(biāo)準(zhǔn)進(jìn)行提示;可根據(jù)日期和觀測場地的經(jīng)緯度等參數(shù)計算日出日落時間以及允許觀測的時間段。
(3) 軟件設(shè)置模塊主要用于設(shè)置和查看程序正常運(yùn)行所需的各種參數(shù),包含當(dāng)前觀測期數(shù)、是否使用軟鍵盤等。
2 系統(tǒng)實(shí)現(xiàn)
2.1 Android應(yīng)用程序結(jié)構(gòu)分析
Android應(yīng)用程序由Activity,Intent,Service,Content Provider[4]四個重要部分組成。如圖2所示,Activity實(shí)現(xiàn)應(yīng)用程序的界面,負(fù)責(zé)與用戶交互;Intent承擔(dān)傳遞應(yīng)用程序中所有數(shù)據(jù)的工作。它既可在應(yīng)用程序之間傳送數(shù)據(jù),也可用于自身內(nèi)部的Activity/Service之間的數(shù)據(jù)交互。Service主要在后臺處理一些耗時的邏輯,或者去執(zhí)行某些需要長期運(yùn)行的任務(wù)。Content Provider負(fù)責(zé)存儲數(shù)據(jù)。本文設(shè)計的外業(yè)記簿應(yīng)用程序的主要功能由Activity,Intent和Content Provider組件完成,共設(shè)計了12個Activity用戶界面用于用戶查看錄入等操作。
2.2 解析和生成XML文件
本文采用eXtensible Markup Language(XML)格式存儲觀測數(shù)據(jù)文件和配置文件。XML是W3C制定的電子文件結(jié)構(gòu)和內(nèi)容描述的一個開放標(biāo)準(zhǔn),已經(jīng)得到了人們廣泛的支持與應(yīng)用[5]。
因此如何正常解析XML格式的文件顯得尤為重要。XML文件解析是指把代表XML文件的一個無結(jié)構(gòu)的字符序列轉(zhuǎn)換為滿足XML語法的結(jié)構(gòu)化組件的過程[6]。Android支持三種解析技術(shù):DOM,SAX和XMLPull。綜合考慮移動設(shè)備內(nèi)存的大小、XMI文檔的大小以及移動應(yīng)用程序中解析文檔的主要用途等多方面的因素[5],本文采用XMLPull解析器對XML文件進(jìn)行解析。XMLPull解析器提供了相應(yīng)的事件,允許用戶的應(yīng)用程序代碼從解析器中獲取事件,如開始元素和結(jié)束元素事件[6]。使用parser.next()方法可以進(jìn)入下一個元素并觸發(fā)相應(yīng)的事件。事件將作為數(shù)值代碼被發(fā)送[5],因此,用戶代碼可以對感興趣的事件進(jìn)行選擇,然后進(jìn)行相應(yīng)的處理。解析XML功能的實(shí)現(xiàn)代碼如下:
2.3 數(shù)據(jù)加密解密
為了獲得真實(shí)可靠的原始觀測結(jié)果、相關(guān)成果及觀測時間等信息,記簿程序有必要對這些信息進(jìn)行加密保護(hù)。本文采用Advanced Encryption Standard(AES),即高級加密標(biāo)準(zhǔn)作為數(shù)據(jù)加密算法。該標(biāo)準(zhǔn)由美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)在2001年11月26日發(fā)布,并于2002年5月26日成為正式標(biāo)準(zhǔn)[7]。
AES加密過程是在一個4×4的字節(jié)矩陣上運(yùn)算的,其加密過程分別涉及到4種操作:字節(jié)替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和輪密鑰加(AddRoundKey)。解密過程分別為對應(yīng)的逆操作。由于每一步操作都是可逆的,按照相反的順序進(jìn)行解密即可恢復(fù)明文。本文調(diào)用Android SDK提供的API實(shí)現(xiàn)對觀測讀數(shù)、測量限差、計算結(jié)果進(jìn)行加、解密,其中主要的加、解密代碼如下所示:
3 結(jié) 論
目前,本文已經(jīng)完成了外業(yè)記簿應(yīng)用程序的開發(fā)與測試。2015年7月該程序在二測中心跨斷層測距外業(yè)中得到了全面應(yīng)用,圓滿的完成了此次觀測任務(wù)。外業(yè)記簿程序的主界面如圖3(a)所示,記簿中基礎(chǔ)信息記錄界面如圖3(b)所示。
該應(yīng)用程序是跨斷層測距外業(yè)記簿的最初版本。隨著業(yè)務(wù)的不斷深入,該應(yīng)用程序仍需進(jìn)一步優(yōu)化:連接測距儀器,實(shí)時獲取觀測讀數(shù);集成基于網(wǎng)絡(luò)的數(shù)據(jù)提交功能,使科研人員能夠更方便快捷地獲取到最新的觀測成果;添加測距儀器檢查功能。
參考文獻(xiàn)
[1] 劉文義,張希.用形變測量實(shí)現(xiàn)地震跟蹤預(yù)測方法的研究[J].大地測量與地球動力學(xué),2006(z1):17?21.
[2] 張希,張四新,王雙緒,等.川滇地區(qū)近期地殼運(yùn)動的應(yīng)變積累[J].大地測量與地球動力學(xué),2007(4):8?15.
[3] 劉天海,尚紅,寇建新,等.基線測量技術(shù)更新的實(shí)用化研究[J].大地測量與地球動力學(xué),2011,31(3):150?155.
[4] 嚴(yán)海衛(wèi),章雒霏,杜雙偉,等.基于Android開發(fā)平臺的教學(xué)應(yīng)答系統(tǒng)的研究與設(shè)計[J].南京師范大學(xué)學(xué)報(工程技術(shù)版),2015(1):30?34.
[5] 欒詠紅.基于Android的XML解析器的分析與比較[J].南京曉莊學(xué)院學(xué)報,2011,11(6):98?100.
[6] 李瑞花.基于Android的XML解析技術(shù)的分析[J].計算機(jī)時代,2010(12):31?33.
[7] 鄒蕾.基于AES的Flash加密實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2014(22):115?116.