況源,周小明,梁富強,張波,李云杰
(四川省宜賓市氣象局,四川宜賓644000)
基于Android系統(tǒng)的手機縣級氣象服務系統(tǒng)的設計與實現(xiàn)
況源,周小明,梁富強,張波,李云杰
(四川省宜賓市氣象局,四川宜賓644000)
為了適應新時期氣象服務的現(xiàn)代化建設需要和提高氣象服務的綜合能力,氣象部門結合實際需求和自身優(yōu)勢,開發(fā)了一款基于Android系統(tǒng)的手機縣級氣象服務系統(tǒng)。主要從技術手段、功能設計、總體結構和主要功能模塊的實現(xiàn)等方面作簡要介紹。該系統(tǒng)具有災害預警、重要天氣、以及短中長期天氣預報、監(jiān)測站點最新實況的查看、數(shù)據(jù)統(tǒng)計、數(shù)據(jù)檢索等功能。使用該系統(tǒng),氣象部門能夠及時、方便、快捷地提供氣象服務,相關單位也能及時、自主、便捷地獲取氣象產(chǎn)品和數(shù)據(jù)資料。
Android;手機;氣象服務系統(tǒng);功能設計
隨著經(jīng)濟社會的不斷發(fā)展,自然災害對經(jīng)濟發(fā)展和社會生活造成的損失在不斷增大,預防和減輕自然災害已成為擺在全社會面前的共同任務。手機氣象服務以其及時、便捷、靈活的特點為用戶獲取各種氣象信息提供了方便,在防災減災、氣象預警、重大氣象保障服務等方面發(fā)揮著不可或缺的作用[1]。同時,Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),在智能手機操作系統(tǒng)市場擁有巨大的占有率[2]。因此開發(fā)一款面向氣象部門和相關單位的基于Android系統(tǒng)的手機縣級氣象服務系統(tǒng),能夠有效提高氣象服務的社會效益和經(jīng)濟效益。
1.1 主要技術
開發(fā)Android軟件,首先要搭建Android開發(fā)環(huán)境,具體搭建流程為依次安裝JDK、Eclipse、Android SDK和ADT[3]。其中Eclipse是一個開放源代碼、基于Java的可擴展開發(fā)平臺,軟件開發(fā)工作在其基礎上進行。同時還使用到一些第三方開發(fā)包,如實現(xiàn)圖表功能的AChartEn?gine?1.1.0.jar、地圖服務和定位服務的BaiduMapApi_v3_ 0_0.jar、多頁面滑動切換的Android?Support?v4.jar。
1.2 功能設計
目前市面上天氣客戶端種類繁多,但是它們的天氣信息僅有最近幾天天氣預報和少量實況數(shù)據(jù),且更新較遲緩。針對這一現(xiàn)狀,氣象部門自己開發(fā)了一款氣象產(chǎn)品豐富、實況數(shù)據(jù)全面的手機客戶端,這一研發(fā)成果具有重要意義。系統(tǒng)所有功能模塊如圖1所示,氣象產(chǎn)品有災害預警、重要天氣消息推送、近6天圖形化天氣預報,短中期天氣預報、旬天氣預報、氣候趨勢預報;實況數(shù)據(jù)包括最新實況顯示(以數(shù)據(jù)列表和地圖標注兩種方式顯示)、前24小時氣溫和降雨序列、任意時段數(shù)據(jù)統(tǒng)計、任意時段和任意站點的逐時數(shù)據(jù)檢索。
圖1 功能模塊圖
1.3 總體結構
在軟件開發(fā)設計中,應用最多的就是分層技術。軟件分層采用分而治之的思想,將問題分解之后各個擊破,實現(xiàn)“高內(nèi)聚、低耦合”[4]。因此系統(tǒng)在結構上分為應用層、Web層、數(shù)據(jù)層和管理層4層結構,如圖2所示。
圖2 總體結構圖
1.3.1 應用層
應用層是呈現(xiàn)給用戶的功能界面,即手機客戶端。因為氣象數(shù)據(jù)的保密性,對社會公眾僅提供預警預報服務,特殊用戶需要授權后才能夠查看實況數(shù)據(jù)。
1.3.2 Web層
因Android系統(tǒng)不能直接對遠程數(shù)據(jù)庫進行操作,所以需要一個中間件來存取數(shù)據(jù)[5]。應用層通過URL方式提交數(shù)據(jù)請求到Web層,Web層收到請求后從數(shù)據(jù)庫中提取所需數(shù)據(jù)后生成并返回便于手機客戶端解析的XML格式頁面,這里使用Asp.net技術完成該功能。
1.3.3 數(shù)據(jù)層
數(shù)據(jù)層由分別存儲氣象產(chǎn)品、氣象數(shù)據(jù)和軟件管理3個數(shù)據(jù)庫組成。為了保障數(shù)據(jù)庫的安全性,數(shù)據(jù)庫的服務器使用獨立服務器,并設在氣象內(nèi)網(wǎng)中,Web層用內(nèi)網(wǎng)IP訪問數(shù)據(jù)庫。
1.3.4 管理層
管理層負責管理數(shù)據(jù)層的數(shù)據(jù)庫。其中后臺管理軟件可進行新版本發(fā)布、重要天氣消息推送、授權管理、手機客戶端安裝信息查看等操作。
2.1 數(shù)據(jù)獲取和顯示
在Android應用程序中,如果UI線程處理占用時間過長(如網(wǎng)絡獲取數(shù)據(jù)、大量數(shù)據(jù)計算),就會出現(xiàn)ANR(應用程序無響應)異常[6]。因此,為了保證良好的用戶體驗,數(shù)據(jù)獲取需要在多線程中進行。另外,由于Andorid規(guī)定只有UI線程才能更新用戶界面[7],為此需要使用Thread+Handler來解決上述問題。在Thread中用HttpURLConnection類發(fā)送數(shù)據(jù)請求,線程請求到XML數(shù)據(jù)頁面后,使用XMLPullParser類解析數(shù)據(jù),再將數(shù)據(jù)封裝到Message類中,最后用Handler.sendMessage(message)方法發(fā)送給Handler的回調(diào)方法handleMessage進行界面更新[8]。
2.2 權限管理
權限管理是通過“手機號+標識碼”結合實現(xiàn)的。先要在后臺管理軟件新增授權用戶后(手機號為必填項),用戶才能在手機客戶端的授權管理頁面用手機號進行授權。授權的具體流程為先查詢數(shù)據(jù)庫中是否存在該手機號,若不存在則授權失敗;如果存在,再查詢是否存在對應標識碼,有標識碼表示該手機號已經(jīng)授權過,不能重復授權,沒有對應標識碼則授權成功并生成惟一的標識碼,生成的標識碼同時保存在數(shù)據(jù)庫和手機客戶端中,如圖3所示。
圖3 授權流程圖
另外若用戶需要用已授權過的手機號重新授權,則要在后臺管理軟件中清除該手機號的標識碼就可以再次用于授權。為了保證之前的授權因此而失效,在每次運行手機客戶端時都要用手機客戶端存儲的標識碼和數(shù)據(jù)庫中的標識碼進行比對,如果相同才視為有效的授權。
2.3 天氣趨勢圖
天氣預報趨勢圖為現(xiàn)今手機天氣軟件必不可少的功能界面,具有直觀、漂亮的特點,如圖4的第2頁面所示。為提高代碼的可復用性和可讀性,將其封裝成一個自定義控件WeatherTrendView,通過WeatherTrendView的setBitmap(List<Integer>topBmpList,List<Integer>lowBmpList)方法指定天氣現(xiàn)象圖標,setTemperature(List<Integer>topTemList,List<Integer>lowTemList)方法指定氣溫數(shù)據(jù)。控件的界面繪制在重寫的onDraw(Canvas canvas)事件中實現(xiàn),關鍵代碼如下:
圖4 手機客戶端重要功能界面
2.4 地圖和定位
地圖和定位服務均基于百度地圖Android SDK實現(xiàn),百度地圖Android SDK是一套基于Android 2.1及以上版本設備的免費的應用程序接口。通過調(diào)用地圖SDK接口,可以輕松訪問百度地圖服務和數(shù)據(jù),構建功能豐富、交互性強的地圖類應用程序,效果如圖4的第5頁面所示。地圖上疊加監(jiān)測站點是使用標注覆蓋物Mark?erOptions和文字覆蓋物TextOptions實現(xiàn)的,在初始化每個MarkerOptions時把監(jiān)測數(shù)據(jù)初始化在title屬性值中,在其點擊事件中就可以通過marker.getTitle()獲取并予以顯示。定位功能用于地圖服務時顯示當前位置和獲取用戶安裝手機客戶端時的地理位置,百度地圖Android SDK可利用設備當前的GPS信息(GPS定位),基站信息(基站定位)和WiFi信息(WiFi定位)完成定位,使定位更為精準、快速,且提供將當前所處地點的位置坐標轉換為詳細地址描述的信息[9]。
2.5 氣溫和降雨序列圖
AChartEngine是為Android應用而設計的開源/免費的繪圖工具庫,可用于繪制折線圖、區(qū)域圖、散點圖、時間圖、柱狀圖、餅狀圖、環(huán)形圖等多種圖表[10]。系統(tǒng)用其繪制前24小時氣溫折線圖和前24小時降雨量柱狀圖。因手機屏幕寬度不夠完全顯示24小時序列圖,ACha?rtEngine支持左右滑動查看剩余部分。效果如圖4的第4頁面所示。
Android系統(tǒng)已基本實現(xiàn)天氣預警、預報和實況數(shù)據(jù)的整合,為氣象服務業(yè)務提供強有力的支撐,提高了氣象服務能力。但隨著社會發(fā)展對氣象服務要求的不斷提高,系統(tǒng)功能仍需繼續(xù)努力改進和完善,不斷提升綜合氣象服務能力,以適應社會與經(jīng)濟的發(fā)展對氣象服務的需求。
[1]張延龍,楊昆,李炳文,等.基于3G手機的氣象服務分析[J].現(xiàn)代電子技術,2011,34(18):24?25.
[2]劉峰,袁少雄,黃光慶,等.地質災害Android終端應用系統(tǒng)及其數(shù)據(jù)庫研究進展[J].地理空間信息,2013(6):51?53.
[3]沈愛濤,程濤.基于Android平臺的應用系統(tǒng)開發(fā)環(huán)境研究[J].計算機光盤軟件與應用,2013(7):247?248.
[4]袁鷹.基于分層技術的計算機軟件開發(fā)分析[J].計算機光盤軟件與應用,2014(1):314?315.
[5]李洋,殷云鵬,趙勇.基于Android的網(wǎng)絡數(shù)據(jù)存儲與訪問[J].中國科技信息,2013(8):92?93.
[6]肖柏昀.Android應用程序中多線程應用的方法研究[J].計算機光盤軟件與應用,2014(7):71?72.
[7]解志君.Android多線程與消息循環(huán)[J].電子世界,2013(19):87?88.
[8]李剛.瘋狂Android講義[M].北京:電子工業(yè)出版社,2013.
[9]百度公司.Android SDK v3.0.0幫助文檔[EB/OL].(2014?06?05)[2014?09?15].http://developer.baidu.com/map/index.php?title= androidsdk.
[10]4ViewSoft公司.AChartEngine 1.1.0在線文檔[EB/OL].(2013?05?15)[2014?09?20].http://www.achartengine.org/content/demo. html.
Design and implementation of Android?based phone meteorological service system at county level
KUANG Yuan,ZHOU Xiao?ming,LIANG Fu?qiang,ZHANG Bo,LI Yun?jie
(Yibin Meteorological Bureau of Sichuan Province,Yibin 644000,China)
In order to meet the needs of the modernization construction of meteorological service in the new period and im?prove the meteorological service comprehensive ability,it is imperative for the meteorological department to develop an Android?based phone meteorological service system at county level in combination with actual needs and its own advantages.The methods to realize the technology means,function design,overall structure and main function modules are introduced briefly.System to realize The functions of disaster early warning display,important weather information,short?term,medium?term and long?term weather forecast,latest live situation check from monitoring site,data statistic and data retrieval have been implemented in the system.By using the system,the meteorological department can provide meteorological services in a timely manner,and the re?lated units can get the meteorological products and data in time.
Android;mobile phone;meteorological service system;function design
TN911?34
A
1004?373X(2015)07?0043?03
況源(1987—),男,四川宜賓人,助理工程師。主要從事氣象應用與服務、氣象軟件和網(wǎng)站開發(fā)工作。
2014?10?17