丁 旻,張 淼,吳安坤
(1.貴州省氣象災害防御技術中心,貴州 貴陽 550081;2.貴州省農村綜合經濟信息中心,貴州 貴陽 550081)
基于Android移動設備的雷電預警實時推送技術
丁 旻1,張 淼2,吳安坤1
(1.貴州省氣象災害防御技術中心,貴州 貴陽 550081;2.貴州省農村綜合經濟信息中心,貴州 貴陽 550081)
基于Android移動設備的雷電預警信息實時推送,不僅能滿足雷電預警信息發送的及時性而且可提高預警區域的精度。因此,開展推送技術的研究具有重要的實用意義和發展前景?;贏ndroid移動設備,利用GPS定位技術,對雷電預警信息、三維閃電監測數據進行采集,通過GPS位置數據與預警信息整合、數據格式轉換、服務器和客戶端XMPP協議配置以及數據初始化等過程,實現雷電預警信息的及時準確推送。用戶能夠及時獲取所在行政區雷電預警發布信息以及附近20 km內的雷電實時發生情況,提醒做好相應預警等級的雷電預防措施。
Android移動設備;實時推送;雷電預警;GPS定位技術;XMPP協議
基于移動設備的即時通訊技術,具備了很好的及時性和直觀性,現在已不再是被單純運用在簡單的對話通信服務中。在雷電災害防御服務中,將身邊的雷電預警和閃電監測實時信息結合GPS定位技術以即時通訊的方式直接發送到雷電預警區域范圍內的客戶端,雷電預警產品以一種郵件訂閱的方式推送在客戶端的信息欄顯示,當用戶所在行政區發布雷電預警信息以及附近20 km內發生雷電時,用戶可以隨時通過可視化的方式掌握雷電預警信息及閃電實時發生情況,以便及時做好相應的雷電防御措施,達到防災減災的目的。這種模式和技術是雷電災害公共服務功能的一個完善。因此,基于Android移動設備的雷電預警信息的及時推送技術具有很好的實用價值和發展前景。本文詳細介紹了圍繞該技術的研究過程。
本功能設計研究以C/S為整體結構體系,客戶端通過GPRS無線網絡用TCP協議連接到服務器,服務器采用開源的Openfire作為實時推送平臺,推送功能使用開放的XMPP即時通信協議。具體結構設計有如下幾個部分:
一是XMPP協議設計[1]。這是一個開放的且節約開發成本的推送信息協議,主要是實現各個服務器、客戶端間的連接。Smack是XMPP協議實現的關鍵,操作XMPP都是通過使用其提供的API來實現的。
二是服務器配置。本功能服務器(以下簡稱服務器)端采用Openfire作為服務器[2]。允許多個客戶端同時連接和登錄服務器。服務器對每個客戶端的連接進行認證,對認證通過的客戶端創建會話,所有客戶端與服務器端之間的通信都在該會話的上下文中進行。該服務器除連接客戶端還負責采集雷電監測實時數據、雷電預警信息以及數據集成處理。
三是客戶終端設計??蛻舳送ㄟ^GPRS無線網絡與Internet網絡建立連接,在設計中,把客戶端推送分為兩類內容:一類為雷電預警信息,服務器通過Internet網絡讀取雷電預警信息數據;另一類為臨近閃電監測實時信息,服務器直接讀取本地雷電服務器數據。服務器通過Message[3]的from參數來控制消息的來源。
具體功能設計如圖1。

圖1 功能設計結構圖Fig.1 The function design structure design
3.1 服務器功能設計實現
本功能服務器負責實時推送數據處理、閃電監測實時數據格式處理和雷電預警信息讀取,通過采用XMPP協議,安裝OpenFire實現實時推送功能。閃電監測服務器收集和存儲全省閃電監測數據。兩臺服務器同屬一個內網段,因此本功能服務器使用Java自帶的JDBC數據庫[4]程序直接遠程登錄閃電監測服務器,獲取閃電監測實時數據。
在獲取閃電監測數據和客戶端GPS位置數據后,將這兩類數據按技術要求集成存儲,是實現推送功能的關鍵。臨近閃電監測實時信息推送,利用GPS技術[5]推送客戶端附近20 km以內的閃電實時情況,通過程序遍歷每條閃電數據的經緯度,獲取閃電發生的位置數據集后,分別與GPS定位數據的經緯度進行比較。本功能分別按閃電發生位置距離客戶端GPS定位1、3、5、10和20 km進行分類,并將分類數據提交給功能服務器進行分類處理、存儲。雷電預警信息推送直接通過客戶端GPS定位精確自動讀取所在行政區域氣象臺發布的雷電預警信息,并利用XMPP協議中的監聽程序及時推送(技術內容在XMPP協議中詳述)。整個過程通過輸出程序system.out.println("時間:"+location.getTime());system.out.println("經度:"+location.getLongitude());system.out.println("緯度:"+location. Latitude ())輸出位置數據經緯度,在接入氣象數據API的過程中,將位置數據初始化為該經緯度,功能實現見圖2。
3.2 XMPP協議實現
XMPP協議是連接服務器和客戶端的紐帶,二者在該協議上分別配置,并完成數據和功能的交互。服務器配置采用了基于XMPP的OpenFire,其由Java編程語言開發[2];客戶端配置使用Smack客戶端庫。實現功能設計關鍵在于服務器數據流處理,XMPP協議采用XML數據流格式[3],每個XML流有3個基本單元:

圖2 雷電預警和附近雷電信息即時推送功能Fig.2 Lightning warning and the nearby thunder lightning information instant pushed
3.3 客戶端功能設計實現
客戶端通過TCP連接連接到服務器,并根據XMPP協議配置獲得由服務器所提供的全部功能,即客戶端只用接收消息,而所有相關操作都由服務器處理。在XMPP協議中有一個用java開發客戶端庫Smack,該庫提供了兩種不同的連接方式[1-3]:socket和httpclient。本文僅選取socket作為客戶端連接服務器的方式來描述。首先,通過socket中的connection 函數與服務器進行連接connection= new XMPPConnection(),在XMPPConnection構造函數里面主要配置IP地址和端口。同時,注冊一個監聽connection.addPacketListener(packetListener, packetFilter); connection.connect(),通過初始化連接,即可建立socket對象。然后,建立PacketReader對象packetReader = new PacketReader(this);,PacketReader主要負責消息的處理和通知。接著調用resetParser() 方法,為parser設置輸入源,該輸入源即為服務器上的閃電監測實時數據和雷電預警信息。最后,調用startup啟動線程,循環監聽parser,如果功能服務器推送信息,監聽程序接收到消息后會調用parseMessage()方法。該方法主要處理message的消息,通過該方法分析message消息并返回packet包。返回的包將調用processPacket方法,通過processPacket方法本功能服務器發出的信息會被傳遞給所有注冊了PacketListener的監聽(即與本功能服務器建立socket連接)的客戶端。為滿足用戶自主選擇需求,在調用startup的過程中應用程序調用開關[1]、[7-8],分別控制對閃電監測實時數據和雷電預警信息的監聽。用戶開啟開關,則線程啟動,監聽程序運行,信息功能立即被推送;當用戶關閉開關,則線程不被啟動,監聽程序不運行,信息將不會被推送,操作界面見圖3。

圖3 雷電信息即時推送設置功能Fig.3 The function of lightning information push setting
本文以Android移動客戶端為基礎,描述了通過XMPP協議實現及時推送用戶周邊的閃電監測實時信息和雷電預警信息所采取的技術方法及過程。在技術研究和功能實現過程中,以簡潔實用的方法和符合用戶體驗為前提進行開發,滿足了臨近雷電預警服務向移動客戶端發展的需求,是對氣象公共服務能力的完善,有助于用戶及時接收雷電預警信息,了解閃電實時發生情況,以便及時做好相應的雷電防御措施,減少雷電導致的人員和財產損失。
[1] 莫非特(Jack Moffitt), XMPP高級編程:使用Java Script和jquery[M].北京:清華大學出版社, 2011.
[2] 何以亮.openfire教程網[OL]. http://myopenfire.com/.2015.
[3] 崔同亮.通過XMPP協議實現即時通訊介紹[J].開源中國社區,2014.
[4] Cay S.Horstmann(美).Java 核心技術[M].北京:機械工業出版社,2014.
[5] 李明峰,馮寶紅,劉三枝. GPS定位技術及其應用[M].北京:國防工業出版社,2006.
[6] 林念萍,鄭海祥,朱少玲,等.閃電定位資料在防雷設計中的應用研究[J].建筑電氣,2014.
[7] 崔棟梁,馮亞,于萬榮.氣象服務產品自動處理平臺[J].計算機系統應用,2015,24(2):240-243.
The real-time push technology of the lightning early warningbased on the Android mobile equipment
DING Min1,ZHANG Miao2,WU Ankun1
(1.Meteorological Disasters Defense Technology Center of Guizhou Province, Guiyang 550081, China;2.Rural Comprehensive Economic Information Center of Guizhou Province , Guiyang 550081, China)
The thunder precaution information real-time push movement based on the Android mobility device can not only satisfy the timeliness of the thunder precaution information, but also improve the accuracy of the precaution area. Therefore, the research of carrying out the push technology has the significant practical meanings and developmental visions. The thunder precaution information and three-dimensional lightning monitoring data are to be gathered based on Android mobility device and by utilising GPS location technology. The timely and accurate push of the thunder precaution information will be realized through the process of the integration of GPS location data and precaution information,the transformation of the data format, the allocation of the sever and XMPP agreement of the customer end. The users are able to obtain the thunder precaution release information within the district and the thunder real-time occurrence situation within nearby 20 km. The thunder precaution measures of the corresponding precaution levels can be reminded to do better.
Android mobility device; the real-time push; the thunder precaution; the push technology; GPS location technology; XMPP agreement
1003-6598(2017)01-0078-03
2016-09-08
丁旻(1984—),男,副高,主要從事氣象災害防御工作,E-mail:272339087@qq.com。
貴州省氣象局攻關小組:防雷減公共氣象服務APP。
TN926
B