高嘉偉 李 娟 李幫輝
(山西大學計算機與信息技術學院 山西 太原 030006)
?
基于Android的地震速報軟件設計與實現
高嘉偉李娟李幫輝
(山西大學計算機與信息技術學院山西 太原 030006)
摘要地震是一種對人類危害較大的自然現象,常常造成重大的人員傷亡和經濟損失。尤其當地震發生在深夜時,人們由于在熟睡中往往意識不到地震的發生,因而更容易導致慘劇的發生。基于Android的地震速報軟件不需增加額外硬件設備,通過調用智能手機自帶的方向傳感器、加速度傳感器,感知周圍環境的變化情況,提醒用戶震動的發生。同時軟件在手機連接互聯網時,可以實時獲取中國地震信息網發布的官方權威地震信息,方便用戶查詢。軟件集成了相關的地震常識,可以在平時和被困后給予用戶指導和幫助。此外,該軟件還實現了獲取用戶的GPS地理位置信息,并給指定聯系人發送求救短信和平安短信的功能。整個系統利用Java+Eclipse+Android 模式開發運行,并使用真機進行測試,實現地震信息、信息設置、地震監測和地震常識等功能。
關鍵詞Android地震震級烈度
0引言
地震是一種對人類危害比較大的自然現象,常常造成重大的人員傷亡和經濟損失。地球每年會發生大概500多萬次地震,平均每天發生上萬次地震。大地震的發生總會帶來重大的經濟損失和人員傷亡,因而如何減少地震帶來的損失一直是人類關注的問題。
隨著移動設備的廣泛普及以及硬件設備的提升,移動設備的功能越來越多,也更加人性化。其中國內外使用Android系統的手機用戶數以億計,并且規模仍在不斷擴大。基于以上原因,將Android智能手機作為地震減災工具,具有較大的現實意義和市場前景。
目前已有一款由中國地震信息網(http://www.csi.ac.cn/)官方發布的關于實時查看地震信息軟件——“地震快訊”手機客戶端。它可在與互聯網相聯的情況下為用戶提供最新的地震信息,并且這些地震信息可分別按時間和震級的順序排列;另外用戶可自定義地震提示距離,即當地震震中與用戶之間的距離小于用戶自定義的距離,地震信息網在發布地震信息的同時會向用戶作出提示。這款軟件可以在連接互聯網時提示用戶臨近地區發生的地震,但是它的實時性并不是很高,而且必須在連接互聯網后才可獲取相關信息,地震信息的實時獲取具有一定的局限性。因而,如何把智能手機作為地震監測器,實現地震速報,提高用戶獲取信息的時效性成為重要的研究方向。
基于Android 的地震速報軟件利用手機傳感器監測周圍環境的震動,并實時為用戶提供地震警報,尤其適用于夜間熟睡的用戶。它也為用戶提供中國地震信息網官方發布的地震信息,可分別按時間和震級順序排列,并且它為用戶圖文并茂地提供地震常識和避震指導。此外它還可以獲取用戶的GPS地理位置信息,并給指定聯系人發送求救短信或平安短信。這可能會在一定程度上減少地震帶來的損失。
1軟件的總體設計
該軟件在Eclipse環境下開發,所使用的語言是Java,使用的開發工具有Android SDK、JDK和ADT。
Eclipse是著名的跨平臺的自由集成開發環境,Eclipse可以安裝不同的插件,使它能夠支持不同的計算機語言[1]。Android SDK是軟件開發者為了方便使用而建立的用于為特定軟件包、軟件框架、硬件平臺、操作系統等建立應用軟件的軟件開發工具的集合[2]。JDK是甲骨文公司下屬的太陽微系統公司針對Java開發人員發布的免費軟件開發工具包[3]。安裝在Eclipse中的ADT,為Android開發者提供開發工具的升級或者變更[4]。
該軟件主要分為四個模塊,各個模塊之間的關系如圖1所示。

圖1 軟件總體功能模塊圖
地震信息模塊實時為用戶提供中國地震信息網發布的地震信息;信息設置模塊讓用戶預設聯系人以及預編輯短信;地震監測模塊利用手機自帶的方向傳感器和加速度傳感器為用戶監測地震的發生;地震常識模塊提供圖文并茂的地震常識,為用戶提供避震指導。
2軟件的詳細設計過程
2.1地震信息模塊中實時抓取網頁信息的實現
地震信息模塊利用中國地震信息網的開放源代碼來實現從網頁抓取地震信息。本款軟件采用Java的一款HTML解析器jsoup來解析HTML的文本內容,使用DOM來查找和取出數據。
首先定義了一個Document對象來獲取地震信息臺網上的所有信息,將信息以哈希表這一數據結構存儲。然后用getElementsByClass()方法獲取包含實時地震信息的類。最后用getElementsByTag()方法獲取震級、時間、震中位置等信息。將以上操作在異步操作類AsyncTask中實現,用該類的doInBackground(Params…) 方法后臺獲取網頁信息,用onPostExecute(Result)方法返回得到的結果處理操作UI。
此外,當用戶點擊每條從網頁抓取的地震信息時,可顯示出用戶與震中之間的距離,并且通過該距離與地震震級大致判斷該地震是否給用戶帶來危險。已知地球上震中和手機用戶所處位置的經緯度,利用文獻[5]中的公式,計算得出兩地之間的距離。設地球的半徑為R,地球上兩地A、B。A地的經度和緯度分別為δ1、ε1;B地的經度和緯度分別為δ2、ε2。A和B兩地間的距離為S,計算公式如下:
S=Rarccos[cosε1cosε2cos(δ1-δ2)+sinε1sinε2]
(1)
2.2信息設置模塊中短信發送的實現
讀取通訊錄中的聯系人,需要獲得讀聯系人的權限,即
為了方便用戶,讓用戶不必每次使用軟件都要重新設置信息,需要對數據進行存儲。由于存儲的數據比較簡單,采用SharedPreference對數據進行保存。SharedPreference是以鍵值對的形式存儲數據,不需要使用數據庫[7]。
2.3地震監測模塊的設計
地震監測是本系統的主要功能,它主要通過調用方向傳感器和加速度傳感器實現地震監測功能,流程如圖2所示。

圖2 地震監測流程圖
(1) 當啟動地震監測模式時,通過調用方向傳感器來判定手機是否放平。

圖3 方向傳感器的坐標軸
Android手機的方向傳感器的坐標軸的定義為:X軸是沿著手機的短邊,Y軸是沿著手機的長邊,Z軸是指向屏幕正面之外的,即屏幕背面是Z的負值,如圖3所示。當設備運動或旋轉的時候,這些坐標軸是不會改變的,即它們是跟隨手機的轉動而轉動[8]。

證明過程如下:
A1x+B1y+C1z+D1=0
(2)
A1x+B2y+C2z+D2=0
(3)
為不失一般性,設式(2)為水平面的方程(其中A1=B1=D1=0,C1=1)。式(3)為手機平面的方程。因為手機平面法向量與坐標軸的夾角與手機繞著X坐標軸、Y坐標軸、Z坐標軸旋轉的角度α、β、γ互余,故手機平面的法向量為:
即n=(sinα,sinβ,sinγ)。由此得出手機平面方程為:
sinαx+sinβy+sinγz-p=0
(4)
其中,p為原點到手機平面的距離。
由于式(3)和式(4)都是手機平面方程,于是得出A2=sinα,B2=sinβ,C2=sinγ,D2=-p。
手機平面與水平面之間夾角的余弦值:
(5)
故手機與水平面的夾角:
(6)
在軟件設計中,當θ小于10°時,認為手機放平。
(2) 若手機放平,當地震真正發生時,通過調用加速度傳感器來獲得手機的水平加速度a。

(3) 由中國地震烈度表(GB/T 17742-2008)[9]可得出物體水平加速度和地震烈度的關系,如表1所示。

表1 物體水平加速度和地震震中烈度的關系
因此,可由加速度傳感器提供的手機分別沿X坐標軸的加速度ax,Y坐標軸的加速度ay計算得出手機的水平加速度a,再根據手機的水平加速度a按照表1得出震中烈度。
當震源深度在15~20千米時,地震烈度與震級的關系如表2所示[10]。

表2 震中烈度和震級的關系(震源深度在15~20千米情況)
假設用戶所處的位置為震中,根據表2的震中烈度,可以近似得出地震級數。而事實上用戶所處的位置不一定是震中,所以地震的實際震級可能大于手機測得的地震震級。軟件反饋得到的震級數只是提示用戶所處位置近似發生了某級的地震,以提醒用戶危險的發生并合理避險。
3真機測試
因為模擬器上沒有方向傳感器和加速度傳感器,所以必須在真機上進行測試。2014年11月2日在小米1S手機(Android 4.2)上測試了軟件各項功能,均達到了預期的目標。
圖4是主界面,主界面的上方是功能欄,有震級、時間、地震監測、地震常識四個按鈕。功能欄下方是是地震信息窗口,能顯示地震信息,地震信息默認是按地震發生時間排序,用戶也可點擊“震級”按鈕使地震按照地震震級大小進行排序。圖5是信息設置界面。圖6是地震常識界面。圖7是地震監測模式開啟后監測到地震發生時的界面。

圖4 主界面 圖5 信息設置界面

圖6 地震常識界面 圖7 監測到地震發生時界面
4結語
基于Android 的地震速報軟件不需要增加額外的硬件設備。當啟動地震監測模式時,通過調用手機自帶的傳感器來感知周圍環境的變化,計算出手機的水平加速度,根據此得出震中烈度,并轉化為可能對應的震級以提醒用戶危險的發生。同時當手機連接互聯網時,該軟件還能獲取國家地震臺網發布的最新地震信息。此外用戶平時可瀏覽地震常識,為其提供自救方法以減小災害的損失,也可以預編輯求救短信和平安短信,并添加緊急聯系人,可以實現遇到危險時快捷發送求救短信和平安短信的功能,具有很強的實用價值。
參考文獻
[1] 馬建設,趙雪江,蘇萍,等.基于Android系統的視頻播放器開發[J].計算機應用與軟件,2013,30(11):136-137,175.
[2] 唐敏.基于Android平臺的通訊幫手的設計與開發[J].計算機科學,2012,39(6):573-576.
[3] 李興華.名師講壇—Android開發實戰經典[M].北京:清華大學出版社,2012.
[4] 吳亞峰,索依娜.Android核心技術與實例詳解[M].北京:電子工業出版社,2010.
[5] 劉凡俊,李登有.球面的距離公式及其應用[J].數學教學研究,2013,32(3):39-43.
[6] 李剛.瘋狂Android講義[M].2版.北京:電子工業出版社,2013.
[7] 范亞瓊.短信報警與定位系統的研究與實現[D].北京交通大學,2008.
[8] 莊翠翠,李成榮,韋瑋,等.基于Android系統的多傳感器體感應用[J].計算機系統應用,2013,22(8):72-75.
[9] 中國地震信息網.中國地震烈度表(GB/T 17742-2008)[EB/OL].[2014-07-05].http://www.csi.ac.cn/publish/main/847/1114/index.html.
[10] 中國地震信息網.震級和震中烈度有何關系[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。國家自然科學基金項目(61303091);山西省自然科學基金項目(2014021022-2);山西大學第十二期本科生科研訓練項目(2014012237)。高嘉偉,講師,主研領域:機器學習和軟件設計。李娟,本科生。李幫輝,本科生。
中圖分類號TP3
文獻標識碼A
DOI:10.3969/j.issn.1000-386x.2016.05.053