彭新航,王开义,王晓锋,张水发
(1.黑龙江八一农垦大学信息技术学院,大庆163319;2.国家农业信息化工程技术研究中心)
2011年《农业部关于加快推进乡镇农产品质量安全监管公共服务机构建设的意见》中指出:乡镇农产品质量安全监管公共服务机构直接面对农产品生产经营者,在农产品生产源头把关和质量控制上具有十分重要的基础性地位和作用[1]。农产品生产源头即农资,是农业生产的基本要素。农资安全是决定农业经济能否持续稳定发展的关键因素之一,直接关系着农业增产、农民增收,并且对保障农村社会的稳定、维护国家粮食的安全都有重要意义[2-3]。近年来,我国不断强化农资市场监管力度并取得了一些积极进展。但是由于起步晚、基础弱,目前大多数乡镇仍处于“缺机构、缺人员、缺手段”的状况,严重制约了农产品质量安全监管工作的正常开展[4-5]。而且已有的农资安全监管系统大多仅仅起到信息集中、辅助决策的作用,对监管人员的现场执法几乎没有帮助,不具备实时性、执法便捷性等特点。
随着3G时代的到来,智能移动终端技术与移动互联网技术成为各领域应用热点。在交管执法领域,移动终端系统使交警执法过程更加快速、完整[6];在农产品配送过程,移动物联网可实现物流过程信息的快速采集与过程追溯。农资安全监管中大多采用传统的手工记录方式,待完成全部检查对象与必要项目后再统一进行汇总与上报,监管工作效率相对低下,针对这个问题,设计了一种基于智能移动终端的监管模型,以此为基础,综合采用Android技术、移动互联网技术、Web Service技术、QR二维码识别技术构建智能农资安全监管系统。
系统主要根据北京市某区农委、种植业服务中心、乡镇监管站所等政府部门对全区农资经营市场(包括农资生产与经营单位)进行综合安全监管的具体业务需求,研发基于Android智能移动终端的农资市场监管系统。该系统记录检查结果信息,并实现与中心服务器实时通讯连接。农资安全监管体系结构如图1所示。图中列出了区农委、乡镇监管站、农资经营单位、农民与系统的关系。农资安全监管员通过农资安全监管移动终端系统从服务器端下载监管任务,扫描张贴在经营店POS机上的QR二维码进入检查记录填写页面,记录检查问题,将检查结果上传至服务器完成相应监管任务,如图2所示。系统实现了监管人员在监管过程中利用Android智能移动终端通过移动互联网与监管服务器实时数据交互,建立移动办公平台,构建准确、实时、高效的农资管理应用网络体系,实现北京市某区各乡镇农办、农产品质量安全监管站所等基层单位对管辖范围内的农资市场进行属地化管理、现场检查、现场取证、检查结果上报与数据统计与分析等,从而规范农资安全监管工作流程,提高农资安全监管工作效率。
图1 北京市某区农资安全监管体系结构Fig.1 Architecture of agriculturalmaterial safety supervision in some district of Beijing
图2 农资安全监管业务流程图Fig.2 Flowchart of the agriculturalmaterial safety supervision
农资安全监管系统主体采用J2EE企业级规范的分层架构设计[7],由数据层、服务层和展现层构建系统的主体模型[8],如图3所示。
图3 农资安全监管系统总体架构Fig.2 The overall architecture of agriculturalmaterial safety supervision system
数据层提供系统所需要的所有数据,包括基础数据信息、监管任务数据和执法检查数据。其中基础数据、监管任务数据是通过农资监管服务器数据库的数据开放端口或数据映射接口获得的,执法检查数据为监管员录入数据。所有数据都存储在本地SQLite数据库中,并且为方便在开发阶段的调用与考虑日后数据库接口的扩展性,系统采用目前在Android开发上应用十分广泛的Ormlite对象关系映射框架对数据库操作进行进一步封装。这些支持农资安全监管的数据,与服务层和展现层共同组成基于Android智能移动终端的农资安全监管系统的3层架构,建立清晰的逻辑层级关系。
服务层(业务层)提供服务或功能,为从用户界面接收的业务请求提供支持、受理和反馈。系统的服务层采用MVC框架模式,在集成移动终端、移动互联网、Web Service技术的基础上,通过基础数据服务、监管任务服务、执法检查服务,实现农资安全监管员对农资经营单位的便捷、高效的农资安全监管,并通过对执法检查数据的统计分析,辅助农资安全监管员的监管工作,进一步优化农资安全监管模式。展现层主要是客户端展示,为用户提供操作接口。农资安全监管员可以通过系统查询基础数据、下载监管任务并且完成执法检查记录的填写与上报,也可以对执法检查记录进行统计与分析。
2.2.1 农资监管任务管理模块
根据区农委制定的农资安全监管任务,设计日常巡检和专项整治两种任务管理模块,农资安全监管人员可以通过移动终端即时下载相应监管任务,同时可查看未完成任务清单,实时掌握监管任务的总体完成情况。
2.2.2 检查与取证管理模块
农资安全监管人员根据由区农委制定的日常巡检与专项整治任务,在规定的时间范围内对农资生产与经营单位进行检查,通过移动终端系统记录检查结果,必要时还可拍照取证,最终形成完整的检查记录。采用二维码技术唯一标识农资经营单位,安全监管员必须扫描农资经营店POS机上的二维码方可对其进行检查,从而实现安全监管员现场督察工作的考勤记录,保障监管行为的可信、真实。
2.2.3 检查记录管理模块
农资安全监管人员可查看已上报和未上报的全部检查记录,并可对未上报检查记录进行再次确认后,通过GPRS或3G无线网络实时上报至区农委以完成检查任务。同时农资安全监管员也可按照时间、经营单位对检查记录进行管理。
2.2.4 数据统计与分析模块
系统实现了监管数据按不同年份、不同农资种类的实时统计、比较与分析,同时提供可视化的统计曲线与图表。统计数据(或图表)可以清晰的反映出全年或一段时间的农资监管与执法情况,为农资安全监管员未来的监管工作提供全面、科学的依据。
由于Android智能移动终端的硬件条件限制,计算速度比PC机慢,且通过移动互联网络访问数据,速度较慢,传输不稳定。同时,经营单位基本信息、监管员基本信息、日常巡检项目之类的基本信息变化较少,如果每次从服务器下载此类数据,则会造成数据重复性下载,从而造成系统响应变慢。而且,农资经营单位可能地处偏僻,移动互联网络信号薄弱或不可用。因此,为保证系统响应速度和常态离线操作,系统将重复性数据一次下载到Android手机的SQLite数据库中。监管员使用终端系统时将直接调用本地的数据,当服务器端数据有更新时,客户端将更新数据下载到本地数据库,待完成检查记录时将结果上传至服务器系统。而移动终端与服务器系统两者数据库结构可能不同,因此就存在异构数据库的数据同步问题。系统中采用Web Service进行数据同步[9],Web Service技术的基础是XML,它使Web Service能够无歧义且快速有效地传送数据,是一种公用可移植的标准方法。更新时移动终端系统首先判断服务器端是否有更新,若有则将数据同步到移动终端数据库,如果没有则退出更新。但Google在Android中并没有提供调用Web Service的库,因此,为了实现在Android平台上访问Web Service的功能,需要借助第三方类库来实现。Android平台上访问Web Service需要使用的软件包是ksoap2-Andriod,ksoap2-Andriod是其在Android平台下的移植,它提供了一个高效的SOAP库,借助ksoap2我们就能够访问Web Service服务[10]。
由于Android设置了一个5秒的超时时间,一旦用户的事件由于主线程阻塞而超过5秒钟没有响应,Android会弹出一个应用程序没有响应的对话框Application Not Responding。而Web Service是通过网络进行服务请求,所以当网络延迟比较大或者服务端没有及时处理的时候,在Android平台上就会有很严重的问题,为了避免系统显示ANR给用户,我们需要为Web Service另开线程。虽然Android是单线程模型的,但Android提供了一个Message Queue(消息队列),线程间可以通过该Message Queue并结合Handler和Looper组件进行信息交换[11]。
农资安全监管过程中,若监管员需拍照取证,系统将打开照片拍摄窗口,并自动开启手机照相机功能。待用户拍摄完成后,系统将图像数据暂存为临时文件,然后连同先前录入的数据一起提交保存。但是高清的图片都比较大,而手机内存本来就有限,如果不进行处理,很容易引起内存溢出,所以在照相机返回照片时对其进行压缩处理,并且将处理完的Bitmap从内存中释放掉。
系统通过调用Web Service实现图片上传,而Web Service通信一般只能传递XML或JSON格式的字符串,所以,系统通过I/O流读取到要上传的图片,并用Base64编码成字节流的字符串,然后再通过调用Web Service把该字符串作为参数传到服务器端,服务端解码该字符串,最后将图片保存到相应的路径下。
二维码是用某种特定的几何图形按一定规律在平面(二维方向)上分布的条、空相间的图形来记录数据符号信息,具有超高速识读、全方位识读、信息容量大等优点,其应用也日益广泛。我们主要通过图像的采集设备,得到含有二维码的图像,此后经过对二维码的定位、分割和解码三个步骤实现二维码的识别。
目前几乎所有智能手机都配备了几百万像素的摄像头,甚至大多数智能手机还配备了前后两个摄像头,其拍照速度和清晰度几乎可以与数码相机相媲美。因此完全可以通过摄像头来扫描二维码,并对其进行处理[12]。系统中使用摄像头扫描二维码主要是通过对摄像头的调用,启用多线程,对摄像头进行快速的回调应用,当一次回调的图像没有识别出来就进行下一次的回调,直到识别出二维码为止[13]。同时由于二维码的大小不同,显示的模糊程度不同等等原因,会使摄像头不能很好的采集图像,在这里要使摄像头能够进行自动对焦,从而更快的实现二维码的识别。当识别完成以后就对用户进行提醒,使手机进行震动和播放声音,播放完成显示识别出来的结果。
为简化开发人员开发手机二维码应用,Google提供了一个开源的条码生成和扫描库ZXing,它不但支持众多的条码格式,而且有各种语言的实现版本,它 支持 的 语言 包 括:Java、C++、C#、Objective-C、ActionScript以及Ruby。由于Zxing项目里的Android实现太过复杂、多余东西太多,所以系统中将对ZXing源码进行简化。
系统应用覆盖了北京市某区9个乡镇的200家以上农资经营店,培训了该区农委、种植业服务中心、植保站、种子站、土肥站等部门的监管人员20名以上;培训了该区所有乡镇的农产品质量安全监管员(约20名);培训了每个示范农资经营单位的销售人员至少1名。该系统的使用案例如图4所示。测试中制定了3次专项整治任务和日常巡检任务,对所有乡镇的农资经营店进行监管,并对检查结果进行统计验证。
图4 基于智能移动终端的农资安全监管系统应用实例Fig.4 Example of agricultural material safety supervision system based on intelligent mobile terminal
主要针对检查任务的下载、检查记录的上传、记录数据的统计分析以及系统响应速度等方面进行系统性能测试。以北京市某区某镇为例,该镇共有12家农资生产与经营单位,2名农资安全监管员。1台装有农资安全监管系统的移动终端从服务器端下载了12条经营单位信息、2条监管员信息、10条农药检查项目、4条肥料检查项目、9条种子检查项目以及3条专项整治任务信息,完成相应任务后共生成12条日常巡检记录和36条专项整治记录,将记录上传至服务器,运行结果与预期相同,测试系统运行准确。并且从用户开始选择功能后到该窗口完全显示时间小于2秒,用户体验良好。
通过在北京市某区安装使用农资安全监管服务器系统、智能移动终端的农资安全监管系统和经营单位使用POS机与未使用系统之前进行对比测试,其比较结果如表1所示。
表1 使用系统对比测试结果Table1 Test result of comparison with using the system
由以上测试可以看出,基于智能移动终端的农资安全监管系统能实现监管过程中检查任务的实时下载与检查记录的实时上报,并为上级监管部门提供执法证据的功能;并且实现了检查记录的统计与分析,为监管员制定科学监管决策提供依据。通过使用该系统,提高了农资安全监管员工作效率和快速反应能力。
(1)使用QR二维码唯一标识农资经营单位,实现了对农资安全监管员的考勤记录,保障了监管行为的可信、真实。
(2)在分析了农资安全监管过程的基础上,设计与开发了农资安全监管系统,实现了日常巡检、专项整治、待查预警、统计分析等功能。
(3)创新集成应用移动互联网技术、Android技术、Web Service技术,实现监管人员在监管执法过程中与监管服务器实时数据交互,建立移动办公平台,提高监管工作效率。
(4)通过在北京市某区的应用表明,使用该系统可规范农资安全监管,提高监管工作的准确度和快速反应能力,完善了农资安全监管体系,实现了农资安全监管各个流程环节信息化的完全覆盖与无缝衔接。
(5)农资安全监管系统成功实施后,可继续在种植、养殖和农产品流通领域拓展实施,最终构建完整的乡镇农产品质量安全监管公共服务机构与体系。
[1]中华人民共和国农业部.农业部关于加快推进乡镇农产品质量安全监管公共服务机构建设的意见[EB/OL].[2011-08-02].http://www.moa.gov.cn/zwllm/zxfb/201108/t20110802_2101241.htm l.
[2]徐杰,张俊,谭华,等.基于B/S架构的农资可信流通监管系统的设计与实现[J].安徽农业科学,2010,38(16):8814-8817.
[3]蒋栋华.加强农资监管促进农业发展[J].上海农业科技,2008(4):6-8.
[4]王芳,王双进,李红梅,等.中国农资流通市场现状·问题及对策研究[J].安徽农业科学,2008,36(8):3403-3404.
[5]郭志明.基于B/S架构的农资市场监管服务体系的构建与应用[D].天津:天津大学,2011.
[6]纪志强,闫茂德,贺昱曜.公安无线移动警务交通管理系统的设计与实现[J].计算机应用与软件,2007(11):114-116.
[7]李小平,肖岳峰,宿元,等.基于J2EE多层架构的Web开发框架研究[J].计算机应用研究,2008,25(5):1429-1431.
[8]刘勇,朱景福.学科建设信息管理系统的设计与实现[J].黑龙江八一农垦大学学报,2013,25(3):88-91.
[9]覃章荣,张军洲,诸葛隽.基于Web Service的异构数据库同步系统设计与实现[J].计算机技术与发展,2009,19(12):221:224.
[10]Paul POCATILU.Developing Mobile Learning Applications for Android usingWeb Services[J].Informatics Economic,2010,14(3):106-115.
[11]李刚.疯狂Android讲义[M].北京:电子工业出版社,2011.
[12]EOhbuchi,H Hanaizum,L A Hock.Barcode readers using the camera device in mobile phones[J].International Conference on Cyberworlds,2004(9):260-265.
[13]徐玲,蒋欣志,张杰.手机二维码识别系统的设计与实现[J].计算机应用,2012,32(5):1474-1476.