殷軼娜,劉靜聞,黃淼婉,王秀木
(遼寧省地震局,遼寧 沈陽(yáng) 110034)
APP 是application 的縮寫(xiě),通常專(zhuān)指手機(jī)上的應(yīng)用軟件,或稱(chēng)手機(jī)客戶(hù)端。APP 開(kāi)發(fā)是指專(zhuān)注于手機(jī)應(yīng)用軟件的開(kāi)發(fā)與服務(wù)。Google Play 又稱(chēng)Play 商店,是由Google 公司為Android操作系統(tǒng)所開(kāi)發(fā)的移動(dòng)應(yīng)用程序數(shù)字發(fā)行平臺(tái),它作為Android 操作系統(tǒng)的官方應(yīng)用商店,允許用戶(hù)瀏覽和下載使用Android SDK 開(kāi)發(fā)并透過(guò)Google 發(fā)布的應(yīng)用程序。Google Play 通過(guò)應(yīng)用內(nèi)評(píng)價(jià)(In-APP review)API 可以第一時(shí)間將APP 用戶(hù)的使用反饋推送至APP 開(kāi)發(fā)者,這使得眾APP 開(kāi)發(fā)者擁有了直面用戶(hù)的機(jī)會(huì),同時(shí)Google 較為科學(xué)和易為接受的創(chuàng)收策略也吸引了國(guó)內(nèi)眾多程序開(kāi)發(fā)商將研發(fā)重心轉(zhuǎn)移到Android APP 上面。2010 年,Android 平臺(tái)在國(guó)內(nèi)手機(jī)市場(chǎng)上呈井噴態(tài)勢(shì)發(fā)展,APP 開(kāi)發(fā)的前景極其廣闊。隨著搭載Google 系統(tǒng)的智能手機(jī)越發(fā)普及、用戶(hù)對(duì)手機(jī)軟件的越發(fā)依賴(lài),APP開(kāi)發(fā)的市場(chǎng)需求與發(fā)展前景也逐漸蓬勃。移動(dòng)互聯(lián)網(wǎng)時(shí)代是全民的移動(dòng)互聯(lián)網(wǎng)時(shí)代,是每個(gè)人的時(shí)代,APP 便捷了每個(gè)人的生活,APP 開(kāi)發(fā)讓每個(gè)企事業(yè)單位都開(kāi)始了移動(dòng)信息化進(jìn)程。
當(dāng)今,網(wǎng)絡(luò)互動(dòng)交流應(yīng)用平臺(tái)日益受到社會(huì)公眾的認(rèn)可,微博、微信、手機(jī)客戶(hù)端等已被公眾廣泛使用,并取得了很好的效果。充分利用這些資源優(yōu)勢(shì)并結(jié)合地震信息服務(wù)的特點(diǎn),為公眾提供了豐富的地震信息服務(wù)。社會(huì)公眾可以通過(guò)上述各種渠道及時(shí)了解地震的相關(guān)信息,并幫助公眾掌握震情災(zāi)情、地震科技動(dòng)向、地震科普知識(shí)等,同時(shí)運(yùn)用自救互救技能還能保護(hù)自己,拯救他人生命。
每當(dāng)?shù)卣鸢l(fā)生后,政府、社會(huì)及地震系統(tǒng)相關(guān)部門(mén),對(duì)地震三要素(地震發(fā)生的時(shí)間、地點(diǎn)、震級(jí))、災(zāi)情、震后社會(huì)響應(yīng)等重要的震情十分關(guān)心。所以如何迅速而且準(zhǔn)確的發(fā)布震情相關(guān)信息,如何高效的使工作流程推進(jìn)顯得十分重要。只有快速發(fā)布震情信息,才能為后續(xù)的啟動(dòng)相關(guān)應(yīng)急預(yù)案,震情分析,抗震救災(zāi)起到關(guān)鍵作用。
遼寧省境內(nèi)有郯城—營(yíng)口地震帶,是我國(guó)東部大陸區(qū)一條強(qiáng)烈地震活動(dòng)帶。1668 年山東郯城8.5 級(jí)地震、1969 年渤海7.4 級(jí)地震、1974 年海城7.4 級(jí)地震就發(fā)生在這個(gè)地震帶上,據(jù)記載,本帶共發(fā)生4.7 級(jí)以上地震60 余次。其中7~7.9 級(jí)地震6 次;8 級(jí)以上地震1 次。所以遼寧省地震局信息中心及遼寧地震臺(tái)也承擔(dān)著重要的地震速報(bào)及震情發(fā)布的任務(wù)。
隨著經(jīng)濟(jì)的發(fā)展,當(dāng)前群眾百姓的幸福感和安全感已經(jīng)不再僅滿(mǎn)足于衣食住行方面,而開(kāi)始向更高的要求邁進(jìn),其中對(duì)地震信息情況發(fā)布相較前些年關(guān)注度更高。以往,我省地震信息僅在內(nèi)部短信上發(fā)布,但對(duì)普通百姓的信息公布則相對(duì)較慢。在過(guò)去的十幾年里,往往是地震過(guò)后我局值班電話(huà)因百姓過(guò)分關(guān)注而出現(xiàn)長(zhǎng)時(shí)間無(wú)法連通的情況。
為有效緩解上述情況,順應(yīng)科技時(shí)代的發(fā)展要求,開(kāi)發(fā)了本款A(yù)PP 能夠迅速向百姓推送速報(bào)信息,使百姓能夠根據(jù)速報(bào)信息進(jìn)行迅速撤離和避險(xiǎn)。
基于Android 平臺(tái)的遼寧地震速報(bào)智能移動(dòng)終端在系統(tǒng)總體架構(gòu)上分為三個(gè)層次,即客戶(hù)端、服務(wù)器端和數(shù)據(jù)端??蛻?hù)端為最終信息發(fā)布的平臺(tái),通過(guò)數(shù)據(jù)轉(zhuǎn)化為JSON 展示地震數(shù)據(jù)。服務(wù)端需要通過(guò)主服務(wù)器分配的賬號(hào)和密碼,定時(shí)從主服務(wù)器抓取數(shù)據(jù),然后將該數(shù)據(jù)存儲(chǔ)到MySQL 數(shù)據(jù)庫(kù)中,例如{level:3,latitude:45,longitude:150,time:20150924053011}表示的是震級(jí)、經(jīng)緯度、時(shí)間。將抓取到的每條數(shù)據(jù)都存在數(shù)據(jù)庫(kù)中,供客戶(hù)端查詢(xún)。
客戶(hù)端通過(guò)HttpClient 這個(gè)類(lèi),發(fā)一個(gè)http的GET 請(qǐng)求,例如:http://your_server.com/earthquake/record/list?time=<當(dāng)前時(shí)間>,Web 服務(wù)器從MySQL 數(shù)據(jù)庫(kù)中查詢(xún)?cè)诖藭r(shí)間之后的存儲(chǔ)記錄,為此段時(shí)間內(nèi)發(fā)生的地震次數(shù);客戶(hù)端大概每3~5 秒請(qǐng)求一次,如果有新的記錄,就展示出來(lái)。服務(wù)器使用PHP 可直接通過(guò)json_encode 的方式,將MySQL 中查出來(lái)的數(shù)據(jù)轉(zhuǎn)化成JSON 格式,發(fā)給客戶(hù)端。
圖1 遼寧地震速報(bào)智能終端架構(gòu)圖Fig.1 Architecture diagram of Liaoning earthquake quick report intelligent terminal
實(shí)施技術(shù)的關(guān)鍵在于利用MySQL 數(shù)據(jù)庫(kù)中的地震事件數(shù)據(jù),在Web 服務(wù)器中使用PHP語(yǔ)言編寫(xiě)程序,完成數(shù)據(jù)抓取并轉(zhuǎn)換為JSON格式。并繪制客戶(hù)端界面,把JSON 格式轉(zhuǎn)成文字,展示在界面上。
(1)環(huán)境部署
服務(wù)器配置:型號(hào)為聯(lián)想啟天M4500-N000,顯卡獨(dú)立2G,內(nèi)存容量4G,硬盤(pán)容量1TB,雙端口網(wǎng)卡。
系統(tǒng)運(yùn)行環(huán)境:RedHat Linux 64 位操作系統(tǒng),分別配置內(nèi)網(wǎng)及公網(wǎng)IP 地址。配置系統(tǒng)防火墻,開(kāi)放80、3306、22 端口。
軟件環(huán)境:Web 服務(wù)器:Apache/2.2.15(Unix)。語(yǔ)言環(huán)境:PHP5.3.3。數(shù)據(jù)庫(kù):MySQL5.1.73
(2)編程語(yǔ)言:PHP,JavaScript,Python
(3)軟件邏輯結(jié)構(gòu)圖如圖2 所示。
圖2 軟件邏輯結(jié)構(gòu)圖Fig.2 Software logic structure diagram
客戶(hù)端通過(guò)抓取EQIM 數(shù)據(jù)庫(kù)的相關(guān)數(shù)據(jù),建立MySQL 的數(shù)據(jù)庫(kù),進(jìn)行Web 服務(wù)器平臺(tái)的搭建,編寫(xiě)PHP 程序,對(duì)地震信息相關(guān)數(shù)據(jù)進(jìn)行抓取,并將數(shù)據(jù)轉(zhuǎn)化為JSON 格式。
(1)建立MySQL 數(shù)據(jù)庫(kù),創(chuàng)建相關(guān)表,抓取EQIM 數(shù)據(jù)庫(kù)地震數(shù)據(jù)。
圖3 程序流程圖Fig.3 Program flow chart
表1 信息表數(shù)據(jù)格式
圖4 抓取地震數(shù)據(jù)Fig.4 Grab seismic data
(2)使用Python 語(yǔ)言,抓取EQIM 數(shù)據(jù)庫(kù)地震數(shù)據(jù),部分關(guān)鍵代碼如下:
在客戶(hù)端中,需要畫(huà)出客戶(hù)端界面,并將JSON 格式轉(zhuǎn)成文字,展示在界面上。抓取Web服務(wù)器數(shù)據(jù)后,并轉(zhuǎn)JSON 格式,使用了PHP語(yǔ)言,關(guān)鍵語(yǔ)句代碼如下:
客戶(hù)端使用Java 語(yǔ)言,部分客戶(hù)端讀取地震記錄的代碼如下:
本軟件利用Android Studio 為開(kāi)發(fā)工具,采用Java 語(yǔ)言實(shí)現(xiàn)了遼寧地震數(shù)據(jù)的實(shí)時(shí)推送,服務(wù)器端部署在遼寧省地震局信息中心核心機(jī)房服務(wù)器上,通過(guò)一段時(shí)間的測(cè)試運(yùn)行,系統(tǒng)運(yùn)維穩(wěn)定,主要功能均已實(shí)現(xiàn)。
圖5 軟件運(yùn)行界面Fig.5 Software running interface
Android 系統(tǒng)手機(jī)在現(xiàn)代社會(huì)應(yīng)用廣泛,手機(jī)APP 方便下載,使用頻繁??梢允谷藗兗皶r(shí)得到地震信息,從而減輕了地震值班電話(huà)的負(fù)擔(dān)?;贏ndroid 的地震速報(bào)軟件通過(guò)Android Studio 開(kāi)發(fā)工具,在地震發(fā)生時(shí),迅速推送事實(shí)情況,使用戶(hù)迅速了解地震的位置、震級(jí)、震源深度。對(duì)工作人員對(duì)資源進(jìn)行合理的指揮與調(diào)度,從而提高了救援的效率和能力?,F(xiàn)有app 版本僅實(shí)現(xiàn)了Android 系統(tǒng)的速報(bào)信息推送功能。今后可以在此基礎(chǔ)上,繼續(xù)開(kāi)發(fā)其他功能,增加用戶(hù)體驗(yàn)。