高嘉偉 李 娟 李幫輝
(山西大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 山西 太原 030006)
?
基于Android的地震速報軟件設(shè)計(jì)與實(shí)現(xiàn)
高嘉偉李娟李幫輝
(山西大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院山西 太原 030006)
摘要地震是一種對人類危害較大的自然現(xiàn)象,常常造成重大的人員傷亡和經(jīng)濟(jì)損失。尤其當(dāng)?shù)卣鸢l(fā)生在深夜時,人們由于在熟睡中往往意識不到地震的發(fā)生,因而更容易導(dǎo)致慘劇的發(fā)生。基于Android的地震速報軟件不需增加額外硬件設(shè)備,通過調(diào)用智能手機(jī)自帶的方向傳感器、加速度傳感器,感知周圍環(huán)境的變化情況,提醒用戶震動的發(fā)生。同時軟件在手機(jī)連接互聯(lián)網(wǎng)時,可以實(shí)時獲取中國地震信息網(wǎng)發(fā)布的官方權(quán)威地震信息,方便用戶查詢。軟件集成了相關(guān)的地震常識,可以在平時和被困后給予用戶指導(dǎo)和幫助。此外,該軟件還實(shí)現(xiàn)了獲取用戶的GPS地理位置信息,并給指定聯(lián)系人發(fā)送求救短信和平安短信的功能。整個系統(tǒng)利用Java+Eclipse+Android 模式開發(fā)運(yùn)行,并使用真機(jī)進(jìn)行測試,實(shí)現(xiàn)地震信息、信息設(shè)置、地震監(jiān)測和地震常識等功能。
關(guān)鍵詞Android地震震級烈度
0引言
地震是一種對人類危害比較大的自然現(xiàn)象,常常造成重大的人員傷亡和經(jīng)濟(jì)損失。地球每年會發(fā)生大概500多萬次地震,平均每天發(fā)生上萬次地震。大地震的發(fā)生總會帶來重大的經(jīng)濟(jì)損失和人員傷亡,因而如何減少地震帶來的損失一直是人類關(guān)注的問題。
隨著移動設(shè)備的廣泛普及以及硬件設(shè)備的提升,移動設(shè)備的功能越來越多,也更加人性化。其中國內(nèi)外使用Android系統(tǒng)的手機(jī)用戶數(shù)以億計(jì),并且規(guī)模仍在不斷擴(kuò)大?;谝陨显?,將Android智能手機(jī)作為地震減災(zāi)工具,具有較大的現(xiàn)實(shí)意義和市場前景。
目前已有一款由中國地震信息網(wǎng)(http://www.csi.ac.cn/)官方發(fā)布的關(guān)于實(shí)時查看地震信息軟件——“地震快訊”手機(jī)客戶端。它可在與互聯(lián)網(wǎng)相聯(lián)的情況下為用戶提供最新的地震信息,并且這些地震信息可分別按時間和震級的順序排列;另外用戶可自定義地震提示距離,即當(dāng)?shù)卣鹫鹬信c用戶之間的距離小于用戶自定義的距離,地震信息網(wǎng)在發(fā)布地震信息的同時會向用戶作出提示。這款軟件可以在連接互聯(lián)網(wǎng)時提示用戶臨近地區(qū)發(fā)生的地震,但是它的實(shí)時性并不是很高,而且必須在連接互聯(lián)網(wǎng)后才可獲取相關(guān)信息,地震信息的實(shí)時獲取具有一定的局限性。因而,如何把智能手機(jī)作為地震監(jiān)測器,實(shí)現(xiàn)地震速報,提高用戶獲取信息的時效性成為重要的研究方向。
基于Android 的地震速報軟件利用手機(jī)傳感器監(jiān)測周圍環(huán)境的震動,并實(shí)時為用戶提供地震警報,尤其適用于夜間熟睡的用戶。它也為用戶提供中國地震信息網(wǎng)官方發(fā)布的地震信息,可分別按時間和震級順序排列,并且它為用戶圖文并茂地提供地震常識和避震指導(dǎo)。此外它還可以獲取用戶的GPS地理位置信息,并給指定聯(lián)系人發(fā)送求救短信或平安短信。這可能會在一定程度上減少地震帶來的損失。
1軟件的總體設(shè)計(jì)
該軟件在Eclipse環(huán)境下開發(fā),所使用的語言是Java,使用的開發(fā)工具有Android SDK、JDK和ADT。
Eclipse是著名的跨平臺的自由集成開發(fā)環(huán)境,Eclipse可以安裝不同的插件,使它能夠支持不同的計(jì)算機(jī)語言[1]。Android SDK是軟件開發(fā)者為了方便使用而建立的用于為特定軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應(yīng)用軟件的軟件開發(fā)工具的集合[2]。JDK是甲骨文公司下屬的太陽微系統(tǒng)公司針對Java開發(fā)人員發(fā)布的免費(fèi)軟件開發(fā)工具包[3]。安裝在Eclipse中的ADT,為Android開發(fā)者提供開發(fā)工具的升級或者變更[4]。
該軟件主要分為四個模塊,各個模塊之間的關(guān)系如圖1所示。
圖1 軟件總體功能模塊圖
地震信息模塊實(shí)時為用戶提供中國地震信息網(wǎng)發(fā)布的地震信息;信息設(shè)置模塊讓用戶預(yù)設(shè)聯(lián)系人以及預(yù)編輯短信;地震監(jiān)測模塊利用手機(jī)自帶的方向傳感器和加速度傳感器為用戶監(jiān)測地震的發(fā)生;地震常識模塊提供圖文并茂的地震常識,為用戶提供避震指導(dǎo)。
2軟件的詳細(xì)設(shè)計(jì)過程
2.1地震信息模塊中實(shí)時抓取網(wǎng)頁信息的實(shí)現(xiàn)
地震信息模塊利用中國地震信息網(wǎng)的開放源代碼來實(shí)現(xiàn)從網(wǎng)頁抓取地震信息。本款軟件采用Java的一款HTML解析器jsoup來解析HTML的文本內(nèi)容,使用DOM來查找和取出數(shù)據(jù)。
首先定義了一個Document對象來獲取地震信息臺網(wǎng)上的所有信息,將信息以哈希表這一數(shù)據(jù)結(jié)構(gòu)存儲。然后用getElementsByClass()方法獲取包含實(shí)時地震信息的類。最后用getElementsByTag()方法獲取震級、時間、震中位置等信息。將以上操作在異步操作類AsyncTask中實(shí)現(xiàn),用該類的doInBackground(Params…) 方法后臺獲取網(wǎng)頁信息,用onPostExecute(Result)方法返回得到的結(jié)果處理操作UI。
此外,當(dāng)用戶點(diǎn)擊每條從網(wǎng)頁抓取的地震信息時,可顯示出用戶與震中之間的距離,并且通過該距離與地震震級大致判斷該地震是否給用戶帶來危險。已知地球上震中和手機(jī)用戶所處位置的經(jīng)緯度,利用文獻(xiàn)[5]中的公式,計(jì)算得出兩地之間的距離。設(shè)地球的半徑為R,地球上兩地A、B。A地的經(jīng)度和緯度分別為δ1、ε1;B地的經(jīng)度和緯度分別為δ2、ε2。A和B兩地間的距離為S,計(jì)算公式如下:
S=Rarccos[cosε1cosε2cos(δ1-δ2)+sinε1sinε2]
(1)
2.2信息設(shè)置模塊中短信發(fā)送的實(shí)現(xiàn)
讀取通訊錄中的聯(lián)系人,需要獲得讀聯(lián)系人的權(quán)限,即
為了方便用戶,讓用戶不必每次使用軟件都要重新設(shè)置信息,需要對數(shù)據(jù)進(jìn)行存儲。由于存儲的數(shù)據(jù)比較簡單,采用SharedPreference對數(shù)據(jù)進(jìn)行保存。SharedPreference是以鍵值對的形式存儲數(shù)據(jù),不需要使用數(shù)據(jù)庫[7]。
2.3地震監(jiān)測模塊的設(shè)計(jì)
地震監(jiān)測是本系統(tǒng)的主要功能,它主要通過調(diào)用方向傳感器和加速度傳感器實(shí)現(xiàn)地震監(jiān)測功能,流程如圖2所示。
圖2 地震監(jiān)測流程圖
(1) 當(dāng)啟動地震監(jiān)測模式時,通過調(diào)用方向傳感器來判定手機(jī)是否放平。
圖3 方向傳感器的坐標(biāo)軸
Android手機(jī)的方向傳感器的坐標(biāo)軸的定義為:X軸是沿著手機(jī)的短邊,Y軸是沿著手機(jī)的長邊,Z軸是指向屏幕正面之外的,即屏幕背面是Z的負(fù)值,如圖3所示。當(dāng)設(shè)備運(yùn)動或旋轉(zhuǎn)的時候,這些坐標(biāo)軸是不會改變的,即它們是跟隨手機(jī)的轉(zhuǎn)動而轉(zhuǎn)動[8]。
證明過程如下:
A1x+B1y+C1z+D1=0
(2)
A1x+B2y+C2z+D2=0
(3)
為不失一般性,設(shè)式(2)為水平面的方程(其中A1=B1=D1=0,C1=1)。式(3)為手機(jī)平面的方程。因?yàn)槭謾C(jī)平面法向量與坐標(biāo)軸的夾角與手機(jī)繞著X坐標(biāo)軸、Y坐標(biāo)軸、Z坐標(biāo)軸旋轉(zhuǎn)的角度α、β、γ互余,故手機(jī)平面的法向量為:
即n=(sinα,sinβ,sinγ)。由此得出手機(jī)平面方程為:
sinαx+sinβy+sinγz-p=0
(4)
其中,p為原點(diǎn)到手機(jī)平面的距離。
由于式(3)和式(4)都是手機(jī)平面方程,于是得出A2=sinα,B2=sinβ,C2=sinγ,D2=-p。
手機(jī)平面與水平面之間夾角的余弦值:
(5)
故手機(jī)與水平面的夾角:
(6)
在軟件設(shè)計(jì)中,當(dāng)θ小于10°時,認(rèn)為手機(jī)放平。
(2) 若手機(jī)放平,當(dāng)?shù)卣鹫嬲l(fā)生時,通過調(diào)用加速度傳感器來獲得手機(jī)的水平加速度a。
(3) 由中國地震烈度表(GB/T 17742-2008)[9]可得出物體水平加速度和地震烈度的關(guān)系,如表1所示。
表1 物體水平加速度和地震震中烈度的關(guān)系
因此,可由加速度傳感器提供的手機(jī)分別沿X坐標(biāo)軸的加速度ax,Y坐標(biāo)軸的加速度ay計(jì)算得出手機(jī)的水平加速度a,再根據(jù)手機(jī)的水平加速度a按照表1得出震中烈度。
當(dāng)震源深度在15~20千米時,地震烈度與震級的關(guān)系如表2所示[10]。
表2 震中烈度和震級的關(guān)系(震源深度在15~20千米情況)
假設(shè)用戶所處的位置為震中,根據(jù)表2的震中烈度,可以近似得出地震級數(shù)。而事實(shí)上用戶所處的位置不一定是震中,所以地震的實(shí)際震級可能大于手機(jī)測得的地震震級。軟件反饋得到的震級數(shù)只是提示用戶所處位置近似發(fā)生了某級的地震,以提醒用戶危險的發(fā)生并合理避險。
3真機(jī)測試
因?yàn)槟M器上沒有方向傳感器和加速度傳感器,所以必須在真機(jī)上進(jìn)行測試。2014年11月2日在小米1S手機(jī)(Android 4.2)上測試了軟件各項(xiàng)功能,均達(dá)到了預(yù)期的目標(biāo)。
圖4是主界面,主界面的上方是功能欄,有震級、時間、地震監(jiān)測、地震常識四個按鈕。功能欄下方是是地震信息窗口,能顯示地震信息,地震信息默認(rèn)是按地震發(fā)生時間排序,用戶也可點(diǎn)擊“震級”按鈕使地震按照地震震級大小進(jìn)行排序。圖5是信息設(shè)置界面。圖6是地震常識界面。圖7是地震監(jiān)測模式開啟后監(jiān)測到地震發(fā)生時的界面。
圖4 主界面 圖5 信息設(shè)置界面
圖6 地震常識界面 圖7 監(jiān)測到地震發(fā)生時界面
4結(jié)語
基于Android 的地震速報軟件不需要增加額外的硬件設(shè)備。當(dāng)啟動地震監(jiān)測模式時,通過調(diào)用手機(jī)自帶的傳感器來感知周圍環(huán)境的變化,計(jì)算出手機(jī)的水平加速度,根據(jù)此得出震中烈度,并轉(zhuǎn)化為可能對應(yīng)的震級以提醒用戶危險的發(fā)生。同時當(dāng)手機(jī)連接互聯(lián)網(wǎng)時,該軟件還能獲取國家地震臺網(wǎng)發(fā)布的最新地震信息。此外用戶平時可瀏覽地震常識,為其提供自救方法以減小災(zāi)害的損失,也可以預(yù)編輯求救短信和平安短信,并添加緊急聯(lián)系人,可以實(shí)現(xiàn)遇到危險時快捷發(fā)送求救短信和平安短信的功能,具有很強(qiáng)的實(shí)用價值。
參考文獻(xiàn)
[1] 馬建設(shè),趙雪江,蘇萍,等.基于Android系統(tǒng)的視頻播放器開發(fā)[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(11):136-137,175.
[2] 唐敏.基于Android平臺的通訊幫手的設(shè)計(jì)與開發(fā)[J].計(jì)算機(jī)科學(xué),2012,39(6):573-576.
[3] 李興華.名師講壇—Android開發(fā)實(shí)戰(zhàn)經(jīng)典[M].北京:清華大學(xué)出版社,2012.
[4] 吳亞峰,索依娜.Android核心技術(shù)與實(shí)例詳解[M].北京:電子工業(yè)出版社,2010.
[5] 劉凡俊,李登有.球面的距離公式及其應(yīng)用[J].數(shù)學(xué)教學(xué)研究,2013,32(3):39-43.
[6] 李剛.瘋狂Android講義[M].2版.北京:電子工業(yè)出版社,2013.
[7] 范亞瓊.短信報警與定位系統(tǒng)的研究與實(shí)現(xiàn)[D].北京交通大學(xué),2008.
[8] 莊翠翠,李成榮,韋瑋,等.基于Android系統(tǒng)的多傳感器體感應(yīng)用[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2013,22(8):72-75.
[9] 中國地震信息網(wǎng).中國地震烈度表(GB/T 17742-2008)[EB/OL].[2014-07-05].http://www.csi.ac.cn/publish/main/847/1114/index.html.
[10] 中國地震信息網(wǎng).震級和震中烈度有何關(guān)系[EB/OL].(2010-04-15).[2014-07-05].http://www.csi.ac.cn/publish/main/720/721/20131025102955-797568625/index.html.
DESIGN AND IMPLEMENTATION OF ANDROID-BASED QUICK EARTHQUAKE REPORT
Gao JiaweiLi JuanLi Banghui
(SchoolofComputerandInformationTechnology,ShanxiUniversity,Taiyuan030006,Shanxi,China)
AbstractEarthquake is a natural phenomenon with great harm to human beings and usually causes heavy casualties and economic losses. In particular, when an earthquake happens late at night, the consequence will be tragic, for people who are asleep often cannot feel the quake. The quick earthquake report software based on Android perceives the changes of the surrounding environment by invoking the direction sensor and acceleration sensor in smartphones themselves without adding extra hardware devices, and alerts users the occurrence of an earthquake. At the same time, the software can timely obtain the seismic information with official authority released by China Seismic Information Website when the smartphones are connected to the Internet, which is convenient for users to query. The software integrates the correlated earthquake knowledge that can give users guidance and help in either normal time or after being stranded. In addition, the software also realises the function of obtaining users' GPS geographic positioning information and sending short massages of SOS and safety to specified contacts. The whole system is developed and operated using the model of Java+Eclipse+Android, and tested on real mobile phones as well, it achieves the functions of earthquake information, information setting, earthquake monitoring and earthquake knowledge, etc.
KeywordsAndroidEarthquakeEarthquake magnitudeEarthquake intensity
收稿日期:2014-11-13。國家自然科學(xué)基金項(xiàng)目(61303091);山西省自然科學(xué)基金項(xiàng)目(2014021022-2);山西大學(xué)第十二期本科生科研訓(xùn)練項(xiàng)目(2014012237)。高嘉偉,講師,主研領(lǐng)域:機(jī)器學(xué)習(xí)和軟件設(shè)計(jì)。李娟,本科生。李幫輝,本科生。
中圖分類號TP3
文獻(xiàn)標(biāo)識碼A
DOI:10.3969/j.issn.1000-386x.2016.05.053