APP下载

基于Android设施农业气象服务APP的研究与实现

2020-06-16郭昌松陈家金杨月文

计算机技术与发展 2020年6期
关键词:服务端气象预警

郭昌松,陈家金*,陈 淼,杨月文

(1.福建省气象服务中心,福建 福州 350001;2.福建省气象台,福建 福州 350001)

0 引 言

设施农业是指在人工创造的环境下进行生产的农业,包括温室和塑料大棚种植、工厂化禽畜养殖业、工厂化水产养殖三大方面,是现代农业的集中体现[1],在该文中的设施农业主要是指日光温室大棚种植。冬季一般是设施农业进行反季节种植的主要时段,在该季节主要的气象灾害是寒潮、大风、低温等,对设施农业生产有着较大的影响。当这些气象灾害发生时,如果不能及时采取有效的措施,将会对设施作业内的产量和品质产生较大的影响,因此,准确及时提供设施农业的气象服务变得极其重要。

目前,国内外针对设施农业气象服务技术的研究有很多,孙治贵等运用移动互联网、物联网等技术,通过多重因素关联规则学习方法,构建了设施农业气象灾害预警和生产管理智能服务专家知识规则,建立了设施农业气象灾害检测预警和作物生长适宜性环境大数据中心,结合智能网格气象预报预警平台,实现了设施农业气象灾害预警的推送服务[2]。郑九峰等使用基于XMPP协议的Android开源框架将农业墒情预警信息自动发送到Android手机终端上,同时也支持在Web页面上手动编辑推送预警信息[3]。韩吉等通过将分层次的气象传感器采集的气象监测信息传输到服务器数据库中,使用实时通信技术和Web服务技术,在安卓智能手机上显示气象信息等[4]。姚强等开发了基于安卓终端的农业气象客户端,实现了数据监测和数据统计等功能[5]。徐正华等研发了基于Android的温室监控APP,可以在APP上查看监测数据,并通过对温度和其他环境因子远程调控温室设备,实现网络化和集约化的远程管理,实现远程浇灌,远程通风,构建适宜作物生长的良好生态环境[6-7]。臧贺藏等在Android系统上实现了作物生长过程中关键环境因子、作物长势以及视频图像采集和展示,用户可以24h全天候不断的监控,实时了解作物生长及环境信息[8]。黄雪倩等实现了基于Android的海洋生态环境数据展示APP,使用多媒体技术实现了水下视频的直播和点播,以图文的形式展示了水文数据,并推送预警信息给用户[9]。文中提出了一种基于Android的设施农业气象监测、预报、预警、服务为一体的福建省设施农业气象服务解决方案,研究和开发了基于Android的设施农业气象服务APP,该APP已经应用到福建省设施农业基地用户,用户可以随时随地查看设施农业气象服务信息。

1 整体架构

基于Android的设施农业气象服务系统由数据采集服务、服务端和基于Android的手机APP三部分组成(如图1所示)。数据采集服务负责数据的采集、解析和入库,数据采集服务的数据来源于两部分,一部分来源于移动式小气候监测设备提供的设施农业大棚内的环境监测实时数据[10],包括大棚内的空气温度、湿度、气压、二氧化碳浓度、光照强度、土壤温度、土壤湿度等气象要素,这些气象要素提供棚内预警服务;另一部分来源于福建省气象局业务系统提供的实况、预报、预警和农业服务信息。服务端负责数据的封装,为APP提供数据请求接口,影响客户端的请求,对数据进行处理。Android手机APP向用户展示监测数据、预报预警信息和气象服务产品。

系统采用C/S和B/S相结合的方式,在数据采集服务使用C/S模式,把气象内网的气象服务信息和棚内监控数据采集到数据库中,服务端与APP之间采用B/S模式,农业用户可以使用手机APP查看监测数据和气象服务信息。

图1 系统整体架构

2 系统功能

基于Android的设施农业气象服务APP由基地信息、实时监测、预报预警、农气服务四个模块组成,每个模块下有对应若干的子模块(如图2所示)。

图2 设施农业服务APP的基本功能

基地信息模块包括展示基地的基本信息和农业灾情上报两个子模块,基地的基本信息包括大棚的数量、面积、位置,作物种植情况等;农业灾情上报实现农业气象灾害灾情的快速上报,为开展灾后救援提供支撑。实时监测模块包括展示棚内的气象监测数据、展示棚外的自动站实况信息、设置棚内监测要素的阈值三个子模块,棚内的监测数据每10分钟更新一次,以表盘的形式展示棚内的实况数据,以折线图和表的形式展示最近24小时正点的监测数据;设施农业棚外的自动站实况信息是距离该基地最近的自动站实况信息(温、湿、压、风),表现形式与棚内观测要素的形式相同;设置棚内观测要素的阈值是指农户根据作物生长的经验值修改监测要素的默认阈值,并根据该阈值判断气象要素是否超过作物生长的适宜条件。预报预警模块包括展示棚外未来七天预报、展示棚内未来三天要素预报和展示气象预警信息三个子模块,棚内三天要素预报主要是针对温度、湿度两个气象要素进行预报,以文字的形式展示在APP上;棚外的七天预报是根据精细化网格预报和基地的经纬度提取对应的网格预报数据,以图形的方式展示未来七天预报;气象预警信息有台风、暴雨、寒潮、大风等灾害性天气预警信息,APP接收服务端推送的气象预警信息,并以弹窗和列表的形式显示。农气服务模块包括展示农业气象旬报、月报和展示农用气象预报预警信息两个模块,农用气象旬报主要是回顾上旬的天气对农业的影响,并根据本旬的天气预测做出对农业生产的建议;农业气象预报预警信息主要是在有灾害性天气的时候发布灾害性天气对农业生产的影响及其建议,该模块都是以列表的形式展示。

3 开发环境

基于Android的设施农业气象服务APP以Android Studio作为开发平台,采集服务和服务端采用MyEclipse集成开发环境,使用SpringBoot框架,采集服务和服务端使用同一个Oracle数据库系统。Android Studio是谷歌推出的Android集成开发工具,相比Eclipse ADT开发环境,具有响应速度快、UI更漂亮,强大的UI编辑功能的优点[11]。MyEclipse是一款功能强大的企业级集成开发环境,主要用于Java、JaveEE的开发。SpringBoot基本上是Spring框架的扩展,取消了Spring应用程序所需要的XML配置,开发更快,更加高效。数据库服务器使用两节点的Oracle RAC集群高可用解决方案,其中一个节点出现故障不影响数据库正常对外提供服务,具有双机并行、高可用、负载均衡、故障转移、高吞吐量等功能,以使Oracle数据库系统达到最大的可用性和可靠性。

4 APP实现的关键技术

在基于Android设施农业服务APP的研发过程中主要涉及到如何获取数据、如何存储数据和如何展示数据三个方面的问题,对应涉及到数据获取、数据存储、数据展示和预警信息推送四个方面的关键技术。

4.1 数据获取方式

基于Android的设施农业服务APP与服务端通信采用http协议,使用Android网络框架OKhttp[12]完成http协议的相关操作,使用JSON(JavaScript object notation)数据交换格式进行数据交换,使用HTTP协议的POST方法[13]向服务端发送请求数据包,接收、解析、存储、展示返回的数据包。

为了方便解析和存储数据包,定义了数据请求包和数据应答包的规则,数据请求包的格式为:客户端信息+头部+包体;应答包格式为:头部+包体。数据请求包如下所示:{"s":{"p":"1234"},"h":{"pt":"login","ud":"api2.0"},"b":{"interface":{"parameter":"1069"}}},请求数据包的使用说明,“s”代表客户端信息,其中“p”代表移动设备唯一标识;“h”代表头部信息,“pt”代表用户登陆状态,“ud”代表api识别码;“b”代表包体信息,“interface”代表接口名称,“parameter”代表该接口所需要的参数,不同的业务数据对应不同的接口信息和不同的参数列表,一个包体可以包括多个请求的接口信息。

应答数据包体如下所示:{"h":{"is":0,"error":""}, "b":{" interface ":{"data": {"wind":"289", "sys_time":"1417138466500","week":"周五"},"key":"1058"}}},应答数据包请求说明,“h”头部信息中的“is”代表业务数据是否请求成功,如果返回0代表数据返回成功,如果返回-1代表返回失败,不需要解析数据包;“error”是当返回失败的时候,代表返回的错误提示信息。“b”代表包体信息,“interface”代表接口名称,“data”代表该请求接口所返回的数据,返回的数据多是键值对的方式;一个包体中可以包括多个接口返回的数据。

OKhttp是Android处理网络请求的轻量级网络框架,支持允许所有访问同一主机的请求共享一个socket,数据加载速度更快;支持GZIP压缩,节省流量;使用简单,支持同步阻塞调用和带回调的异步调用。

为了避免网络请求耗时过多,影响该APP的响应速度,使用单例的设计模式,使用单独的一个线程完成数据的请求,将所有的请求包都添加到一个请求列表中,由这个线程完成数据的请求,将请求的数据保存在SharedPreferences和SQLite数据库中。

为了避免无效的重复的网络请求,每一个数据请求包都有一个时间戳,如果上一次请求与本次请求的时间间隔比较小,则从请求列表中移除本次数据包的请求,保证数据请求的有效性。

4.2 数据存储方式

Android提供了4种存储应用程序数据的方式,分别是使用SharedPreferences存储数据、文件存储数据、SQLite数据库存储数据、ContentProvider存储数据[14]。SharedPreferences适合保存少量的数据,并且数据的格式是字符串和基本类型的数值,在XML文件存储的key-value键值对数据,通常是一些配置数据。文件存储数据是最基本的一种数据存储方式,不过使用起来比较麻烦,比如,存储是变量数据的话,就要读取文件数据,辨认是什么类型变量。SQLite是一款轻量级的、跨平台的数据库,占用内存少,支持基本的SQL语法,通常用于保存用户数据。ContentProvider是专门用于不同应用间数据交换和共享的组件,ContentProvider以URI的形式对外提供数据,允许其他应用访问和修改数据。

在基于Android的设施农业服务APP中主要使用SharedPreferences、SQLite数据库两种数据存储方式。根据请求数据包的不同,在程序中使用一个标识来区分数据的存储方式,SharedPreferences用来保存本系统中的一些配置,比如温度或者湿度的阈值;SQLite用来保存一些比较复杂的数据,比如七天预报数据等。

数据存储起到承上启下的作用,从网络上获取到的数据,先保存在SQLite或者SharedPreferences中,用户界面获取数据都先从SQLite或者SharedPreferences中获取,如果不存在或者已经过期,就将数据请求操作加入到一个数据请求表中,由网络数据请求线程集中处理。

4.3 数据展示方式

Android使用XML来描述用户界面,将用户界面和程序逻辑分开,两者互不影响。Android组件分为布局和控件,布局是让控件按一定的次序排列好的组件,本身不提供内容;控件是显示内容的组件,比如显示一张图片,按钮等。在Android中有五种布局方式,分别是FrameLayout(框架布局)、LinearLayout(线性布局)、AbsoluteLayout(绝对布局)、RelativeLayout(相对布局)、TableLayout(表格布局)[15]。

该系统采用了Activity+Fragment的模式搭建框架,Activity作为四大组件之一,提供了与用户交流的界面,每一个Activity都会获得一个用于绘制其用户界面的窗口,Fragment解决了不同屏幕分辨率的动态设计,Fragment拥有自己布局,Fragment与Activity是多对多的关系,多个Activity中可以使用同一个Fragment,同时一个Activity可以包括多个不同的Fragment,但是Fragment必须依赖Activity生存。在预报预警功能界面中使用多个Fragment,一个Fragment实现棚内气象预报功能模块,一个Fragment实现棚外七天预报功能模块,一个Fragment实现24小时格点逐时预报,各个Fragment之间相互独立,互不影响(如图3所示)。

在系统中使用SlidingMenu和achartengine两个开源软件,SlidingMenu完成侧滑菜单栏功能,实现配置菜单的左右滑出,achartengine是一个强大的Android图表库,可以用来画折线图、平滑折线图、饼图、直方图等,使用achartengine的折线图和饼图功能完成监测数据的展示(如图4所示)。

4.4 预警信息的推送

气象灾害预警信息具有不定时性,只有在有灾害性天气(台风、暴雨等)的时候,才有气象灾害预警信息,如何使预警信息快速到达用户,最好的实现方式就是推送方式,产生灾害预警信息以后以弹窗的形式及时推送到用户APP上。

图3 预报预警模块

图4 监测数据的展示

Android实现推送的方式有很多种,根据系统对推送服务的性能要求和实现难易程度,选择使用第三方的数据推送服务平台——腾讯的信鸽推送服务,该服务集成比较方便并且功能强大,支持Android系统和IOS系统。

信鸽提供两种通知方式,一种是通知栏消息,另一种是应用内消息。通知栏消息是由操作系统展现在通栏上的消息,该种方式实现比较简单,只要注册成功就可以完成通知的下发。应用内消息直接头传给Android终端的消息,不会主动在通知栏上显示,需要用户接收消息后APP自行处理,实现比较复杂,但灵活性比较强,可以自定义消息的格式和展示等,通过两种方式的比较,选择使用应用内消息。

信鸽推送服务的集成比较方便,在服务端只需要加入信鸽服务端的jar包,并调用信鸽服务短的接口就能完成预警信息的发送。在手机APP中加入信鸽客户端的jar包;由于使用应用内消息,所以要编写一个继承信鸽服务的XGPushBaseReceiver类,在该类中实现预警信息的接收、解析、存储等处理,并以弹窗的形式展示预警信息。

5 结束语

文中设计实现的基于Android的实施农业服务APP为农业用户提供了丰富的农业气象服务信息,包括大棚内外的天气实况信息、大棚内外的预报信息和农业气象灾害预警预报信息,使用文本文字、图片、图表等形式展现设施农业气象服务信息。设施农业用户可以通过APP随时随地查看设施农业气象服务信息,为农业生产提供气象服务支持。

该系统已经在福建省多个设施农业基地得到应用,得到了设施农业用户的肯定,在转变农业生产方式方面发挥了重要作用。

猜你喜欢

服务端气象预警
气象树
《中国农业气象》征订启事
预警型智能包装在食品安全中的应用和设计
超级秀场 大风预警
中国气象“风云”
大国气象
多人联机对战游戏的设计与实现
基于三层结构下机房管理系统的实现分析
基于三层结构下机房管理系统的实现分析
预警个啥