况源,周小明,梁富强,张波,李云杰
(四川省宜宾市气象局,四川宜宾644000)
基于Android系统的手机县级气象服务系统的设计与实现
况源,周小明,梁富强,张波,李云杰
(四川省宜宾市气象局,四川宜宾644000)
为了适应新时期气象服务的现代化建设需要和提高气象服务的综合能力,气象部门结合实际需求和自身优势,开发了一款基于Android系统的手机县级气象服务系统。主要从技术手段、功能设计、总体结构和主要功能模块的实现等方面作简要介绍。该系统具有灾害预警、重要天气、以及短中长期天气预报、监测站点最新实况的查看、数据统计、数据检索等功能。使用该系统,气象部门能够及时、方便、快捷地提供气象服务,相关单位也能及时、自主、便捷地获取气象产品和数据资料。
Android;手机;气象服务系统;功能设计
随着经济社会的不断发展,自然灾害对经济发展和社会生活造成的损失在不断增大,预防和减轻自然灾害已成为摆在全社会面前的共同任务。手机气象服务以其及时、便捷、灵活的特点为用户获取各种气象信息提供了方便,在防灾减灾、气象预警、重大气象保障服务等方面发挥着不可或缺的作用[1]。同时,Android是一种基于Linux的自由及开放源代码的操作系统,在智能手机操作系统市场拥有巨大的占有率[2]。因此开发一款面向气象部门和相关单位的基于Android系统的手机县级气象服务系统,能够有效提高气象服务的社会效益和经济效益。
1.1 主要技术
开发Android软件,首先要搭建Android开发环境,具体搭建流程为依次安装JDK、Eclipse、Android SDK和ADT[3]。其中Eclipse是一个开放源代码、基于Java的可扩展开发平台,软件开发工作在其基础上进行。同时还使用到一些第三方开发包,如实现图表功能的AChartEn⁃gine⁃1.1.0.jar、地图服务和定位服务的BaiduMapApi_v3_ 0_0.jar、多页面滑动切换的Android⁃Support⁃v4.jar。
1.2 功能设计
目前市面上天气客户端种类繁多,但是它们的天气信息仅有最近几天天气预报和少量实况数据,且更新较迟缓。针对这一现状,气象部门自己开发了一款气象产品丰富、实况数据全面的手机客户端,这一研发成果具有重要意义。系统所有功能模块如图1所示,气象产品有灾害预警、重要天气消息推送、近6天图形化天气预报,短中期天气预报、旬天气预报、气候趋势预报;实况数据包括最新实况显示(以数据列表和地图标注两种方式显示)、前24小时气温和降雨序列、任意时段数据统计、任意时段和任意站点的逐时数据检索。
图1 功能模块图
1.3 总体结构
在软件开发设计中,应用最多的就是分层技术。软件分层采用分而治之的思想,将问题分解之后各个击破,实现“高内聚、低耦合”[4]。因此系统在结构上分为应用层、Web层、数据层和管理层4层结构,如图2所示。
图2 总体结构图
1.3.1 应用层
应用层是呈现给用户的功能界面,即手机客户端。因为气象数据的保密性,对社会公众仅提供预警预报服务,特殊用户需要授权后才能够查看实况数据。
1.3.2 Web层
因Android系统不能直接对远程数据库进行操作,所以需要一个中间件来存取数据[5]。应用层通过URL方式提交数据请求到Web层,Web层收到请求后从数据库中提取所需数据后生成并返回便于手机客户端解析的XML格式页面,这里使用Asp.net技术完成该功能。
1.3.3 数据层
数据层由分别存储气象产品、气象数据和软件管理3个数据库组成。为了保障数据库的安全性,数据库的服务器使用独立服务器,并设在气象内网中,Web层用内网IP访问数据库。
1.3.4 管理层
管理层负责管理数据层的数据库。其中后台管理软件可进行新版本发布、重要天气消息推送、授权管理、手机客户端安装信息查看等操作。
2.1 数据获取和显示
在Android应用程序中,如果UI线程处理占用时间过长(如网络获取数据、大量数据计算),就会出现ANR(应用程序无响应)异常[6]。因此,为了保证良好的用户体验,数据获取需要在多线程中进行。另外,由于Andorid规定只有UI线程才能更新用户界面[7],为此需要使用Thread+Handler来解决上述问题。在Thread中用HttpURLConnection类发送数据请求,线程请求到XML数据页面后,使用XMLPullParser类解析数据,再将数据封装到Message类中,最后用Handler.sendMessage(message)方法发送给Handler的回调方法handleMessage进行界面更新[8]。
2.2 权限管理
权限管理是通过“手机号+标识码”结合实现的。先要在后台管理软件新增授权用户后(手机号为必填项),用户才能在手机客户端的授权管理页面用手机号进行授权。授权的具体流程为先查询数据库中是否存在该手机号,若不存在则授权失败;如果存在,再查询是否存在对应标识码,有标识码表示该手机号已经授权过,不能重复授权,没有对应标识码则授权成功并生成惟一的标识码,生成的标识码同时保存在数据库和手机客户端中,如图3所示。
图3 授权流程图
另外若用户需要用已授权过的手机号重新授权,则要在后台管理软件中清除该手机号的标识码就可以再次用于授权。为了保证之前的授权因此而失效,在每次运行手机客户端时都要用手机客户端存储的标识码和数据库中的标识码进行比对,如果相同才视为有效的授权。
2.3 天气趋势图
天气预报趋势图为现今手机天气软件必不可少的功能界面,具有直观、漂亮的特点,如图4的第2页面所示。为提高代码的可复用性和可读性,将其封装成一个自定义控件WeatherTrendView,通过WeatherTrendView的setBitmap(List<Integer>topBmpList,List<Integer>lowBmpList)方法指定天气现象图标,setTemperature(List<Integer>topTemList,List<Integer>lowTemList)方法指定气温数据。控件的界面绘制在重写的onDraw(Canvas canvas)事件中实现,关键代码如下:
图4 手机客户端重要功能界面
2.4 地图和定位
地图和定位服务均基于百度地图Android SDK实现,百度地图Android SDK是一套基于Android 2.1及以上版本设备的免费的应用程序接口。通过调用地图SDK接口,可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图类应用程序,效果如图4的第5页面所示。地图上叠加监测站点是使用标注覆盖物Mark⁃erOptions和文字覆盖物TextOptions实现的,在初始化每个MarkerOptions时把监测数据初始化在title属性值中,在其点击事件中就可以通过marker.getTitle()获取并予以显示。定位功能用于地图服务时显示当前位置和获取用户安装手机客户端时的地理位置,百度地图Android SDK可利用设备当前的GPS信息(GPS定位),基站信息(基站定位)和WiFi信息(WiFi定位)完成定位,使定位更为精准、快速,且提供将当前所处地点的位置坐标转换为详细地址描述的信息[9]。
2.5 气温和降雨序列图
AChartEngine是为Android应用而设计的开源/免费的绘图工具库,可用于绘制折线图、区域图、散点图、时间图、柱状图、饼状图、环形图等多种图表[10]。系统用其绘制前24小时气温折线图和前24小时降雨量柱状图。因手机屏幕宽度不够完全显示24小时序列图,ACha⁃rtEngine支持左右滑动查看剩余部分。效果如图4的第4页面所示。
Android系统已基本实现天气预警、预报和实况数据的整合,为气象服务业务提供强有力的支撑,提高了气象服务能力。但随着社会发展对气象服务要求的不断提高,系统功能仍需继续努力改进和完善,不断提升综合气象服务能力,以适应社会与经济的发展对气象服务的需求。
[1]张延龙,杨昆,李炳文,等.基于3G手机的气象服务分析[J].现代电子技术,2011,34(18):24⁃25.
[2]刘峰,袁少雄,黄光庆,等.地质灾害Android终端应用系统及其数据库研究进展[J].地理空间信息,2013(6):51⁃53.
[3]沈爱涛,程涛.基于Android平台的应用系统开发环境研究[J].计算机光盘软件与应用,2013(7):247⁃248.
[4]袁鹰.基于分层技术的计算机软件开发分析[J].计算机光盘软件与应用,2014(1):314⁃315.
[5]李洋,殷云鹏,赵勇.基于Android的网络数据存储与访问[J].中国科技信息,2013(8):92⁃93.
[6]肖柏昀.Android应用程序中多线程应用的方法研究[J].计算机光盘软件与应用,2014(7):71⁃72.
[7]解志君.Android多线程与消息循环[J].电子世界,2013(19):87⁃88.
[8]李刚.疯狂Android讲义[M].北京:电子工业出版社,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—),男,四川宜宾人,助理工程师。主要从事气象应用与服务、气象软件和网站开发工作。
2014⁃10⁃17