基于Android社区巡检系统APP的研究与实现

2021-07-06 02:10张艺帆林果园
计算机技术与发展 2021年6期
关键词:服务端后台设置

庄 富,张艺帆,林果园,3

(1.中国矿业大学 计算机科学与技术学院,江苏 徐州 221116;2.矿山数字化教育部工程研究中心,江苏 徐州 221116;3.南京大学软件新技术国家重点实验室,江苏 南京 210093)

0 引 言

社区治理是国家治理体系中的基础性工程,是国家治理体系中的关键一环[1]。近年来,国家提出“推进国家治理体系和治理能力现代化”的战略任务,这给社区治理提出了挑战。社区治理能力的高低关乎人民群众的生活水平与质量,关乎百姓的归属感和幸福感。

突如其来的新冠肺炎疫情席卷全球,全国上下投入到了疫情防控工作中,这无疑对社区治理能力是一次重大考验。互联网的出现已经彻彻底底改变了人们的日常生活。利用互联网,人们让生活变得更加美好。为此,根据社区治理的实际需求开发出适用于基层社区的“社区巡检系统”,将传统的社区安全巡逻结合互联网,实现突发事件信息的在线共享。不仅提高了突发事件信息的传播速度,还能最大程度给相关管理部门在采取措施时提供更多的选择,这一系统的应用具有深远的意义。

1 系统的整体框架设计

1.1 整体架构

基于Android的社区巡检系统由基于Android的手机APP、服务端和后台管理系统三部分组成(如图1所示)。Android手机APP负责社区治安数据、基础设施数据、消防安全数据、环境保护数据、文物保护数据和文化生活数据等的收集并实现对社区各类突发事件信息的巡查上报。服务端负责对APP传输来的数据进行封装,并对数据进行处理。后台管理系统则对系统进行权限、巡检人员和巡检人员上报的巡检信息等方面的管理。

图1 系统整体架构

系统采用C/S和B/S相结合的方式[2],服务端与APP之间采用C/S模式,巡检人员可以使用手机APP上传和查看突发事件信息。服务端与后台管理系统之间采用B/S模式,把服务端封装的数据显示在管理系统中。

1.2 APP端框架设计

基于Android的社区巡检系统APP以Android Studio作为开发平台。Android Studio是谷歌推出的Android集成开发工具,相比Eclipse ADT开发环境,具有响应速度快、UI更漂亮,强大的UI编辑功能的优点[3]。APP与服务端通信采用http协议,使用Android网络框架OkHttp[4]完成http协议的相关操作。OkHttp是目前安卓开发中最火热的轻量级框架,由于共享Socket,减少了对服务器的请求次数,通过连接池,减少请求延迟,提高请求的效率。

使用OkHttp进行网络请求的步骤分为以下四点[5]:(1)创建一个OkHttpClient实例;(2)创建一个Request实例。创建Request实例时,用户可以根据需要发起Post请求或者Get请求。Post或者Get请求是HTTP协议中向后台服务器发送数据的一种机制,是HTTP协议的一个组成部分;(3)使用OkHttpClient创建一个Call并执行,获取一个Response对象。可以根据同步或者异步需求,分别采用execute()方法或者enqueue()方法,实现不同的访问策略;(4)对Response进行相关操作。通过以上四个步骤,一个应用可以完成各种情况下的网络访问。

1.3 服务端框架设计

服务端采用IntelliJ IDEA集成开发环境和SSM[6](Spring+SpringMVC+MyBatis)框架集,数据库采用MySQL数据库系统。IntelliJ IDEA在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、创新的GUI设计等方面被公认为是最好的java开发工具[7]。

Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。SpringMVC在项目中拦截用户请求,它的核心Servlet即Dispatcher Servlet承担中介或是前台这样的职责,将用户请求通过Handler Mapping去匹配Controller,Controller就是具体对应请求所执行的操作。MyBatis是对JDBC的封装,通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的SQL语句映射。在每次与数据库交互时,通过SQLSessionFactory拿到一个SQLSession,再执行SQL命令[5]。

2 系统功能

基于Android的社区巡检系统APP由地图浏览、巡检上报、GPS、查看中心和设置中心五个模块组成,每个模块下有对应的若干子模块(如图2所示)。

图2 社区巡检系统APP的基本功能

地图浏览模块包括地图操作和图层控制两个子模块。地图操作是指对首页用户地图进行平移和缩放;图层控制是指对地图进行显隐控制。巡检上报模块包括表单采集、图片采集、视频采集和数据上报四个子模块。表单采集包括对事件类型信息的采集和事件描述信息的采集。事件类型预先定义了50种,由用户通过点击下拉列表进行选择。

事件描述由用户在文本框中手动添加,内容不超过100个汉字;图片采集和视频采集均可以通过摄像头进行新增也可以通过访问本地相册进行选择,图片数量不超过5张,视频数量为1个,视频大小不超过200 M,时长不超过1分钟;数据上报分为成功和失败两种情况,成功情况下事件的类型、描述和内容等信息会上传至服务器端,而失败情况下事件的信息会暂存到本地,待网络恢复后重新进行上传。GPS模块包括实时定位和巡检轨迹上报两个子模块。实时定位是指将巡检人员当前所在位置实时显示在用户地图中并每隔一定时间间隔刷新一次,该时间间隔由用户自己设置,默认值为30 s;巡检轨迹上报是指每隔一定时间间隔记录下巡检人员实时位置并上传服务器端,由后台管理系统画出巡检轨迹[8-11]。查看中心模块包括查看列表、查看详情和删除事件三个子模块。查看列表包括查看事件的时间、类型和经纬度等信息;查看详情包括查看事件的时间、类型、描述、经纬度和图片视频等信息;删除事件执行的是将已保存到本地的事件信息进行删除的操作。

设置中心包括设置用户昵称、设置服务器IP地址、设置定位时间间隔和设置照片质量四个子模块。设置用户昵称是巡检人员在系统中修改自己昵称的功能,昵称不作为巡检人员身份的标识,巡检人员可以多次修改自己的昵称;正确连入服务器是成功上传事件的前提,用户首先要确保手机与服务器处在同一局域网下,然后再设置服务器IP地址;设置定位时间间隔是对巡检人员进行实时定位以及巡检轨迹上报的关键,时间间隔由巡检人员自己设置,单位为“秒/s”,默认值为30 s;设置照片质量设置的是巡检人员在拍摄事件图片时图片的质量,质量分为高、中、低三个等级,默认值为高。

3 APP实现的关键技术

3.1 心跳周期检测机制

为了保证服务端与APP端的正常连接,使得服务端能够及时知道APP端何时掉线,该系统设计使用了Socket心跳周期检测机制(如图3所示)。

图3 Socket心跳周期检测机制

首先在服务端建立定时器并设置定时器的时间为60秒,定时发送心跳包给到APP端:timer=new Timer();Beat beat=new Beat(clients);timer. Schedule (beat, 1 000*60,beat.Interval);APP端收到心跳包后,立即发送心跳包给服务端,服务端收到APP端发来的心跳包后确认APP端的连接可用,不执行释放socket相关的操作。当服务端接收到APP端发送来的数据时,心跳丢失计数清零:beatMissNum=0;如果服务端没在规定的时间间隔即60秒内收到APP端响应的心跳包,服务端就认为APP端的连接不可用,执行释放socket相关的操作:Server Thread st=clients. Get(i); St.Close()。Socket心跳周期检测机制使得服务端能够准确地掌握APP端是否在线,保证了服务端和APP端的可靠连接。

3.2 视频数据的处理

为了更好地描述事件的内容信息,该系统支持巡检人员上传视频。视频可以通过使用摄像头重新拍摄也可以访问本地相册进行选择。视频时长为1分钟,大小不超过200 M。

首先在APP端创建视频上传类VideoUpload-Activity,在该类中预先定义视频路径private String path="",然后通过方法:.isCamera(true)判断是否点击了拍照按钮,如果点击了直接开始重新拍摄,如果没有点击则通过PictureMimeType.ofVideo()方法访问本地相册中的视频并过滤掉图片和音频文件。选择本地视频的时候要通过if (file.Length()>200*1 024*1 024) {"文件大于200 M";break;语句来进行视频文件大小的校验。视频选择完成后,通过VideoView.start()方法可以播放视频。

然后在服务端创建接口类uploadVideo,在接口类中通过file.isEmpty()判断文件是否为空,分别使用String fileName=file.getOriginalFilename(); String suffixName=fileName. Substring (fileName.lastIndexOf("."));String filePath="E:\study"来获取文件名、文件后缀名和设置文件存储路径。视频会在服务端以命名规则:SimpleDateFormat date Format=new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss”)重新命名。服务端会检测是否存在该视频目录:if (! dest. getParentFile().exists())。如果目录已存在,则通过dest. GetParentFile (). mkdirs ()新建文件夹。最后使用file.transferTo(dest)将视频文件保存到服务端。

3.3 图片和视频数据的混合传输

事件的内容包括图片和视频两类信息,图片和视频均可以通过摄像头重新拍摄或者访问本地相册进行选择。图片数量至多为5张,视频数量至多为1个。巡检人员根据实际需要进行上传。在APP端新建事件添加类AddEvent,在该类中定义方法addContent用来添加事件的内容信息。使用.open Gallery(PictureMimeType.ofAll())访问本地相册中的图片和视频信息。当选择的是图片信息时会使用语句:if (pathList.size() == 6) {Toast.makeText(AddEvent. This, "5张", Toast.LENGTH_SHORT).show();return;}来校验图片的数量。通过方法:. isCamera(true)判断是否点击了拍照按钮。图片和视频添加完毕后,视频显示的是缩略图样式,内容保存的是视频路径,然后循环上传:if (pathList.size()>1) {for (int i=0; i

3.4 传输过程中的断点续传

断点续传技术[12-14]指的是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为地划分为几个部分,每一个部分采用一个线程进行上传或下载,如果遇到网络故障,可以从已经上传或下载的部分开始继续上传下载未完成的部分,而不必从头开始上传下载。从而达到节省时间,提高速度的效果。

本系统使用OkHttp网络框架实现断点续传技术。在APP端创建进度下载Progress Downloader类,通过构造方法client=getProgressClient()实现在下载、暂停后的继续下载中复用同一个client对象。通过RandomAccessFile randomAccessFile=null方法来随机访问文件,指定断点续传的起始位置。创建进度响应ProgressResponseBody类来设置对外访问的进度监听。创建断点续传BreakpointContinuinglyActivity类,在该类中使用breakPoints=totalBytes来存储totalBytes即断点位置,并用方法progressBar.setMax((int)(ContentLength/1024))记录文件的总长度。ContentLength表示断点续传后剩余部分的长度。通过进度下载类Progress Downloader的复用client对象、进度响应类ProgressResponseBody的进度监听、BreakpointContinuinglyActivity类的记录断点位置和progressBar.setMax方法记录文件总长度,可以很好地实现传输过程中的断点续传功能。

4 APP的实用效果

4.1 事件信息的上传

APP首页会实时显示巡检员用户当前所在位置(如图4所示),并根据用户的设定,每隔一定时间间隔刷新一次(默认时间间隔为30秒)。巡检员用户点击首页中的“添加事件”按钮来进行事件的上传。添加事件时需要选择对应的“事件类型”、添加相应的“事件描述”和以拍照或录像的方式添加“事件内容”(如图5所示)。

图4 APP显示巡检员用户当前位置

图5 巡检员用户在APP中添加事件

事件添加完毕后,巡检员用户点击“发送事件”按钮。在APP端和服务器端正常连接的条件下,事件信息将会上传至服务器端并交由后台管理系统处理。后台管理系统在收到APP端巡检员用户上传的事件信息后,会在地图上显示该用户所在位置以及事件的信息。

事件信息包括用户姓名、手机号、具体时间、GPS坐标位置以及事件的图片或视频。

4.2 事件信息的管理

后台管理系统管理员根据事件处理权限将APP端巡检员用户上传的事件交由相关部门处理。相关部门在收到待交办事件信息后会在规定时间内做出反馈。APP端巡检员用户可以在APP端查看已经上传服务器并保存到本地的事件信息,并通过点击事件来查看事件的详情信息。详情信息中包括了事件的记录人、记录人手机号、发生时间、发生地点、事件类型、事件内容、事件的图片或视频以及事件的交办反馈进度。

4.3 巡检信息的管理

后台管理系统管理员可以实时查看当前正在巡检的人员数量和位置。对于每个巡检员用户,后台管理员还可以查看其巡检轨迹并回演该巡检用户在一段时间内的巡检轨迹。通过APP端事件信息的上传、服务器端事件信息的接收和后台管理系统对事件信息的处理并将处理结果反馈给APP端巡检员用户,社区的突发事件将形成闭环管理,从而提高社区管理工作的质量和效率。

4.4 数据的备份和恢复

后台管理系统管理员可以对任意时间段的巡检人员巡检路线以及发生的事件进行备份,同时可以导入备份文件,进行还原。

数据库备份时间段的起止时间由后台管理系统管理员根据需要选填,当数据库完成备份后,对应时间段的数据也将会被删除。

5 结束语

新冠肺炎疫情的防控经验告诉我们,信息是基层治理的基础,社区信息治理体系重构要以社区为重,树立数据服务生活、技术服务群众、安全服务发展的信息治理理念,取之于社区、用之于社区,通过社区内各个治理主体的协同参与和全环节的流程再造,构建基层社会治理体系中的信息治理共同体[15]。基于Android的社区巡检系统的设计与实现,进一步促进了社区信息治理体系的建设与发展。

通过巡检系统对社区的各项数据进行收集,实现社区的全面监测,大大降低了手工记录的工作量,提高了工作效率。该系统目前已成功应用于江苏省徐州市铜山区汉王镇的社区管理工作,取得了不错的效果,并且应用会越来越广泛。

猜你喜欢
服务端后台设置
变电站五防系统临时接地桩的设置
ControlUWP 让Windows 10的设置更方便
Wu Fenghua:Yueju Opera Artist
栏目设置一览表
后台暗恋
多人联机对战游戏的设计与实现
基于三层结构下机房管理系统的实现分析
基于三层结构下机房管理系统的实现分析
后台的风景