基于Android平台的移动水质监测系统

2018-08-21 09:24杨旭东王欣悦马超治陈浩林杜晓晨
计算机时代 2018年6期
关键词:通信治理水质

杨旭东 王欣悦 马超治 陈浩林 杜晓晨

摘 要: 目前水质问题日益严重,对于水质的治理迫在眉睫。本系统基于Android平台,通过在选点地点由检测仪收集并处理数据,实现了对选定地点水质数据的实时分析与预测。在Android终端上查看,以帮助水质管理。

关键词: 水质; 监测; 分析; 通信; 治理

中图分类号:X84 文献标志码:A 文章编号:1006-8228(2018)06-38-04

Mobile water quality monitoring system based on Android platform

Yang Xudong, Wang Xinyue, Ma Caozhi, Chen Haolin, Du Xiaochen

(Department of computer science and technology, School of information engineering, Zhejiang agriculture and Forestry University, Linan, Zhejiang 311300, China)

Abstract: At present, the problem of water quality is becoming more and more serious, and the treatment of water quality is imminent. Based on the Android platform, the system realizes the real-time analysis and prediction of the water quality data in selected locations by collecting and processing data at the selected points. The water quality management can be aided by viewing an Android terminal.

Key words: water quality; monitor; analysis; communication; treatment

0 引言

根据刘宝玲[1]研究表明,随着化工企业迅速增加,对周边水环境安全造成严重威胁。我国的水质远远没有到达国家水质标准,多处地区水体发臭,污染源难寻。而焦金玲[2]研究发现,就连日常生活的饮用水水质检测也存在若干问题。因此我们必须对水质污染进行控制、治理,保护国民健康。

因此一款良好的水质检测的app,可以在很大程度上帮助我们来做好水质检测,提早预防,针对治理。

1 需求分析

水质情况日益严重,引起了社会的的强烈关注,因此水质管理系统在未来的应用潜力也十分巨大。一个基于安卓平台的水质监测系统可以方便、具体的显示某地的水质消息。

本app可以及时地提示定点的水质问题,做到实时监控,实时预警。通过观察水中的电导率,PH值,水中悬浮物等含量来判断数据是否超标,以及是否处于危险期。除此之外,数据可以远程自动传输、自动处理,可以解决现期的水质监测周期长,工作量大,不同地区数据传送速度慢等问题。

2 功能模块

⑴ 用户登录

用户通过主页drawerlayout侧滑菜单进入用户登录界面,登录后默认存储登录信息于本地,下次打开该app时自动登录。登录后即可查询水质信息,否则没有查询权限。

⑵ 设置

用户通过主页drawerlayout侧滑菜单进入设置。其中,可以退出用户登录,以及清除缓存。缓存包括用户的登录信息,以及查询过的储存在本地sqlite中的水质数据。

⑶ 签到

若用户已经登录过,则每次打开app自动签到。用户通过主页drawerlayout侧滑菜单进入签到界面,可以对以往的签到信息进行查看。

⑷ 数据展示

用户在查询界面输入监测点名称,然后进入数据展示界面。数据展示界面通过折现图生动的展示特定水质信息的变化,可以调节滚动选择器和进度条,多方位地观察数据信息。提供《地表水环境质量标准》表,便于用户对比。

⑸ 新闻动态和通知公告

用户通过底部菜单进入更多界面,点击按钮进入新闻动态和通知公告查看界面。用户可以通过该界面浏览后台发布的新闻动态和通知公告。

⑹ 拍照投诉

用户通过底部菜单进入更多界面,点击按钮进入拍照投诉界面。用户可以通过本地上传照片或者现场拍照,以及输入文字描述来反映某监测点的水质情况。

3 软件设计

软件体系結构是一切的基础所在,为了更好地开发以及提升软件系统的可维护性与拓展性,合理的逻辑设计势必不可缺的。在MVP模式[3]下,视图-控制-模型三层结构架交互,提升可复用性,扩展性,更方便单元测试。功能上逻辑清晰,层层递进,避免出错。App功能结构图如图1所示。

3.1 架构设计

本APP采用MVP模式架构。MVP模式全称:Model-View-Presenter,结构分为三部分,实体层的Model,视图层的View,以及Present。MVP模型如图2所示。

其中View层是程序的UI界面,是用户的输入数据以及向用户展现数据,接受用户的请求。

Presenter与Model层和View层交互,处理大多数业务逻辑,如处理从View层发来的用户的请求,分发给底层的Model层,或者处理从Model层发来的数据,转化成view层可以使用的形式,分发给view层。

而Model层就是从网络、本地数据库或者文件中获取、更新、保存数据,如从sqlite中获取满足查询需求的水质数据记录。

还有重要的javabean——实体类,用于保存实例数据,把业务逻辑抽象成接口。MVP模式把数据存储、业务逻辑和UI界面完全分割开,使代码更加简洁、方便单元测试、避免Activity的内存泄漏。

3.2 数据获取以及网络传输等

本项目中从水源监测点获取的数据直接传输到服务器端,并存入Litepal数据库中。Android手机客户端去请求PC服务端,将PC上MySQL中的数据在客户端后台任务中进行同步更新。

具体过程是通过OkHttp协议访问网络数据,向所需网址发送http请求,获取服务器返回的数据,解析json格式获取所需要的具体数据。为了使数据可以更快的调用,将数据解析放在后台AsyncTask中,执行完成后,通过return返回,后台任务执行完毕再通过onPostExecute函数返回,前台服务Service截取返回消息作出相应的UI操作。

简易过程如图3所示。

3.3 数据的存储及更新

3.3.1 数据获取

污水中污染物质种类繁多,影响十分严重,所以本系统采用主要采用STM32 单片机作为控制中枢,利用水质传感器采集水体中的溶解氧浓度,酸碱度,电导率,水浊度等水质参数,并通过GPRS 传输到云端,并存储在数据库中。系统直接可在网站直接查阅水体信息。

因为有了以上的技术支持,所以可以较好的反应水质污染的综合度数,形成水质监测系统,实时反应水质情况,获得分析数据,及时的发现水质是否被污染,做到每日定时发布通知。

3.3.2 数据库设计

在郭霖[4]与靳岩[5]的书中都介绍了LitePal。LitePal是一款开源的Android数据库框架,它采用了对象映射(ORM)模式,并将平时开发最常用到的一些数据库进行封装,使得不用编写SQL语句就可以完成各种建表和增删查改的操作。通过解析json获得的数据,需要存储到数据库当中,数据设计用到的主要数据有:测试地区、测试日期、Ph值、导电性、水温、氨氮、溶解含氧量、浊度、磷、分钟、小时。

数据库基本表见表1。

3.3.3 后台服务自动更新水质数据

服务(Service)是Android中实现程序后台运行的解决方案,适合执行不需要和用户进行交互而且还要求长期运行的任务,如下载、网络获取。在用户进行其他活动的时候,这个服务将一直运行在基于Android平台的即时通讯系统研究与实现后台,直到用户停止该服务或服务运行结束。

本项目中,为了实时更新达到预警预报,平均每隔十分钟存储一次数据,每一次启动app都会刷新数据库中数据,确保数据显示无误。

主要利用服务可脱离活动(Activity)运行于后台的特点,实现实时从服务器端数据库获取、更新水质信息。

3.4 UI设计

3.4.1 基于百度地图的定位服务

为方便用户更直观的查询不同地点的水质情况,采用基于位置的服务(Location Based Service)。通过使用百度定位SDK,可以轻松为应用程序实现智能、精准、高效的定位功能。百度地图Android定位SDK提供GPS、基站、WiFi等多种定位方式,适用于室内、室外多种定位场景,具有出色的定位性能:定位精度高、覆盖率广、网络定位请求流量小、定位速度快。

通过使用百度地图,地图中心定位移动到以浙江省杭州市临安区(该点为东湖监测点的位置:经度:119;纬度:30)东湖边为中心的区域,在地图上显示位于东湖监测点等多个监测地点的定位标记Mark,并设置点击响应触发。用户只需点击标记Mark便可跳转到响应监测点的数据查看页面,相比传统的SearchView入口輸入搜索信息进行搜索,这种方式理解和操作更加对用户友好。当然也提供了SearchView的方法给不习惯使用图形操作的用户,用户可以自行选择查找方式方式。

3.4.2 数据展示

为了容用户更直观的观察、分析水质监测的数据,引入开源项目MPAndroidChart[6]可视化图表。

本app的数据展示界面中,默认展示最近日期中24小时的水质数据信息,其中包含7个字段:ph值、导电性、水温、氨氮、溶解氧含量、浊度。

这7个字段的数据展示页面利用buttom+viewpage+fragment提供左右滑动和点击按钮快速切换。

每一个字段,如ph,在一天中的变化利用MPAndroidChart折线图来展示。点击折线图上的数据点则在下方显示改点准确的监测时间和数据。

为了让用户能更全面的观察想要了解的数据,在折线图的下方提供进度条,拖动进度条可以选择折线图显示横坐标的范围。横坐标显示范围数字越大,数据点就越密集;否则,数据点越稀疏。当横坐标显示范围小于24时,折线图画面可以通过手指左右滑动,调整视窗。

由于viewpage是折线图LineChart的父视图,又都包含对滑动监听,所以产生了滑动冲突,子视图和父视图都想对滑动动作进行响应,导致两者滑动效果非常卡顿。嵌套view左右滑动冲突情况如图4所示。

当触摸事件TouchEvent发生时,首先Activity将TouchEvent传递给最顶层的View,TouchEvent最先到达最顶层view的dispatchTouchEvent,然后由dispatchTouchEvent方法进行分发,如果dispatchTouchEvent返回true 消费事件,事件终结。如果dispatchTouchEvent返回false,则回传给父View的onTouchEvent事件处理。所以重写LineChart中的dispatchTouchEvent函数,消费事件,实现手指位于LineChart中时直接消费滑动事件,使LineChart最右滑动而上层的viewpager不滑动。而不在LineChart的范围内,viewpager的子视图中就消费viewpager的左右滑动事件。

仅仅是默认查询的最近的日期的24小时的水质数据,显然是远远不够的。以往传统的app中,选择很多项目时多使用多级RecyecleView结合界面切换或者Dialog来实现。为了简化操作和节约app的资源,本app在图表下方设置一个滚动选择器,用户可选择监测数据的日期,一旦滚动选择器停止滚动则在折线图中更新为当天的数据。

除此之外,该界面还显示《地表水环境质量标准》,方便用户进行数据的分类和对比。

4 结束语

实现水质数据化管理是目前保障水质安全的必然趋势,目前为止国家的水质问题还在逐步加深,这款水质监测管理软件,可以实时分析与预测,可以有效的进行水质监测、治理,达到数据查询、分析、预警、统计等功能,可以为国家水资源检测提供新的手段和平台。

本系统存在一定的局限性与不足有待改进。一是面向对象过于单一,本app更适用于水质管理部门的使用,对于广大群众而言不够灵活;二是还应尽可能多的使用多种研究方法,确保分析结果可靠性。

参考文献(References):

[1] 刘宝玲.水污染环境风险分区综合评价与信息化管理系统研

究[D].哈尔滨工业大学,2015.

[2] 焦金玲.饮用水水质检测若干问题分析[J].化工管理,2015.4

[3] 张正龙,陈永正.浅谈MVP设计模式[J].科学咨询:科技·管理,

2014

[4] 郭霖.第一行代码Android[M].人民邮电出版社,2016.

[5] 靳岩,姚尚朗.Android开发与入门[M].人民邮电出版社,

2009.

[6] AnalyzeSystem.MyAndroidChart源码[EB/OL]. http://

blog.csdn.net/analyzesystem/article/details/51323154,2016.8.12.

猜你喜欢
通信治理水质
水质抽检岂容造假
一月冬棚养虾常见水质浑浊,要如何解决?这9大原因及处理方法你要知晓
简述计算机通信网络安全与防护策略
Android环境下主UI线程与子线程通信机制研究
无线自组网在野战防空通信系统中的应用
治理背景下我国少数民族传统体育运动会的发展
浅析网络舆情治理
对数字微波通信技术的研究
水质总磷测定存在的问题初探
水质总氮测定方法改进探究