張楠 趙士達 李坤
摘 要:目前廣大民眾對地震科普知識的關注度極高,對于地震知識的獲取,網絡也成為了重要的防震減災知識獲取渠道?,F有的相關地震知識的安卓平臺軟件基本都是簡單的介紹一些地震知識,并且內容多來自網絡留言或跟帖,各式各樣種類繁多,內部不全面。本軟件能作為公共服務產品,方便天津市民通過網絡下載,獲取專業(yè)的防震與自救知識,進行天津市應急避難場所信息速查及定位,地震事件發(fā)生后呼叫12322進行電話及郵箱求救等功能。
關鍵詞:網絡 地震科普 防震 避難場所
中圖分類號:TP333 文獻標識碼:A 文章編號:1672-3791(2014)10(a)-0011-02
汶川、玉樹地震之后,廣大民眾對地震科普知識的關注度極高,隨著網絡的發(fā)展,越來越多的人工作、學習、業(yè)余生活都離不開網絡,然而對于地震知識的獲取,網絡也成為重要的防震減災知識獲取渠道。Android平臺在中國市場占有率極高,進行安卓平臺的地震科普知識軟件開發(fā)及推廣,能廣泛的宣傳地震知識。
Android平臺是一種以Linux為基礎的開放源碼操作系統(tǒng),主要使用于便攜設備。網絡上現有的相關地震知識的安卓平臺軟件,例如:“加強自我防護:地震應急防護手冊”;“地震科普百科”;“地震自救知識大全”等都是簡單的介紹了一些地震知識,并且內容多來自網絡留言或跟帖,各式各樣種類繁多,內部不全面。本軟件能作為公共服務產品,方便天津市民通過網絡下載,直接安裝至手機或平板電腦,獲取專業(yè)的防震與自救知識,進行天津市應急避難場所信息速查及定位,鏈接12322進行電話及郵箱求救等功能。
1 系統(tǒng)分析與總體設計
針對軟件需求,開發(fā)一套可以在安卓4.2以上系統(tǒng)基于Android平臺的地震防護手冊軟件開發(fā),包含:防震與自救知識,天津市應急避難場所信息速查與定位,12322電話呼叫及12322郵箱求助四大模塊。
本系統(tǒng)分為手機APP部分和后臺服務系統(tǒng)兩部分,手機應用部分完成與客戶的操作交互、數據查詢等功能,后臺服務系統(tǒng)通過手機APP響應用戶,完成業(yè)務操作。采用Android原生程序中的功能、browser配合B/S架構的程序共同搭建,其中Android應用負責啟動內嵌瀏覽器組件,該組件加載web程序主頁面從而實現數據的展現。
1.1 手機APP
手機APP基于Android的SDK4.2進行開發(fā),支持客戶通過手機觸摸、撥打電話、發(fā)送郵件等多種途徑,完成信息查詢及反饋。
避難場所查詢與定位功能:將應急避難場所的GPS信息存儲在數據庫中,通過手機GPS功能獲取到用戶的位置,使用LBS技術獲取到具體用戶最近的避難場所的位置,從而實現基于手機定位的避難場所的查詢。編寫安卓系統(tǒng)的原生應用程序,在應用程序中嵌入開源的地圖控件,如百度地圖,此類地圖軟件擁有開放的api接口,用于第三方應用的調用。
防震與自救知識采用JSP形式,形成web頁面便于瀏覽也便于后期對信息的添加與修改。
12322電話及郵箱求助開放權限調用Android原生程序中的功能。
界面顯示采用安卓程序嵌套一個webview空間用戶顯示后臺web程序。
1.2 后臺服務系統(tǒng)
后臺web程序采用MVC三層架構模式,分別為Model、View、Controller。其中Model主要用來編寫實體類對象,View為jsp顯示端,Controller為邏輯控制端。實現一種動態(tài)的程序設計,使后續(xù)對程序的修改和擴展簡化,并且使程序某一部分的重復利用成為可能。并且此模式通過對復雜度的簡化,使程序結構更加直觀。
1.3 數據建模部分
此系統(tǒng)是建立在Mysql的基礎上完成的數據建模,采用Mysql綠色版本簡單易用隨時搭建。數據庫表主要存儲應急避難場所地點的編號、名稱、面積、容納人口、經緯度、地址,便于后期對新地點的添加與修改。
2 系統(tǒng)功能設計與實現
2.1 GPS定位設計與實現
View為jsp顯示端,首頁顯示各項功能鏈接圖標及按照最近避難場所進行的排序。
手機端APK主要使用安卓手機的網絡定位功能,通過經緯度查詢數據庫中避難場所的經緯度,通過java算法排序查找到就近的避難場所。以下是算法代碼:private static final double EARTH_RADIUS=6378137;
private static double rad(double?d)
{
return d * Math.PI / 180.0;
}
public static int GetDistance(double lng1,double lat1,double lng2,double lat2){
double radLat1=rad(lat1);
double radLat2=rad(lat2);
double a=radLat1-radLat2;
double b=rad(lng1)-rad(lng2);
double s=2*Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2)
+Math.cos(radLat1)*Math.cos(radLat2)
*Math.pow(Math.sin(b/2),2)));
s=s*EARTH_RADIUS;
return(int)(Math.round(s* 10000)/10000);
}
public int compare(Object arg0,Object arg1) {
Integer dis1=Integer.valueOf(((Place)arg0).getDis());
Integer dis2=Integer.valueOf(((Place)arg1).getDis());
return?dis1.compareTo(dis2);
}
Place?comparator=new Place();
Collections.sort(plist,comparator);
2.2 郵件求救功能模塊設計與實現
郵件求救功能主要使用javax.mail.internet包實現,預設發(fā)送郵箱及接收郵箱,通過對手機郵箱的調用發(fā)送當前坐標至預設郵箱。發(fā)送內容為:“求救!我的位置在經度XX,緯度XX”。接收經緯度后工作人員可用專業(yè)地圖軟件進行位置查詢,定位求救人員位置。
2.3 查詢功能設計與實現
進入地圖頁面能進行精確或模糊查找,并能顯示查找地點或全部顯示附近所有地點。地圖通過百度API View控件定義顯示,界面中的底圖通過百度地圖SDK接口來調用百度地圖,云檢索返回的響應參數解析后在每個避難場所位置處添加標注點。
2.4 避難防護手冊設計與實現
避難防護手冊采用JSP網頁腳本,形成網頁模式,簡單易用,后續(xù)可方便從后臺添加新的內容,隨時更新。
2.5 12322呼叫設計與實現
手機端APP實現了打電話求救與咨詢的功能,一鍵呼叫12322地震服務熱線,主要代碼如下:
開放打電話權限:
Button btn_call=(Button)findViewById(R.id.btn_call);
btn_call.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//TODO Auto-generated method tub
//用intent啟動撥打電話
Intent intent=new Intent(Intent.ACTION_CALL,Uri.parse("tel:"
+number));//number是傳入的電話號碼
startActivity(intent);
}
});
2.6 服務器端
手機端android應用啟動內嵌瀏覽器組件加載web程序主頁面從而實現數據的展現,前后臺顯示內容相同。
2.7 位置信息存儲
搭建Mysql數據庫服務環(huán)境,創(chuàng)建位置數據表將避難場所位置信息保存在服務器端,通過SQL命令創(chuàng)建數據庫PLACE_T表如表1所示,主要存儲應急避難場所的位置信息。
3 結論
通過本軟件的開發(fā)與測試,本軟件能作為公共服務產品,能幫助天津市民獲取專業(yè)的防震與自救知識,便于天津市民速查及定位應急避難場所信息,能隨時撥打12322防震減災公益服務熱線或通過郵箱進行求救、咨詢、上報災情等功能。
參考文獻
[1] 趙士達,張楠,楊爽.基于云計算和Android的地震應急信息獲取系統(tǒng)[J].計算機應用,2013(3):298-300.
[2] 郭宏志.Android應用開發(fā)詳解[M].北京:電子工業(yè)出版社,2010.
[3] 百度開發(fā)者中心.云推送幫助文檔[EB/OL][2013-08-23].http://developer.baidu.com/wiki/index.php?title=docs/cplat/push.