相关标签

基于群智感知的校园信息系统研究与设计

发布时间:2019-12-04 16:39

  摘 要

  随着移动互联网的飞速发展,4G(The 4th Generation communication system)网络不断普及,为了进一步提高用户体验, 5G网络也逐渐面向社会群体并在部分地区进行试用。智能设备凭借着其便捷性、及时性、互动性等因素聚集了庞大的用户群体。因此,为了满足用户各方面需求,移动设备不断更新,突出表现在其强大的计算能力、性能和集成了数量众多、功能复杂的传感器等方面。传统传感网络通过部署大量无线传感器来进行数据收集任务,限制因素较多且不易于维护,群智感知技术应运而生。它充分使用了用户闲置的移动设备的感知能力,对其下发感知任务,高速网络的支持使得用户能够有意识或无意识的参与到任务中,并为专业人员提供所需数据,从而完成大规模、复杂的感知任务。

  本文意在开发一个基于Android平台的校园信息系统。通过应用群智感知技术,对校园不同地区不同地点进行噪声收集并上传服务器提供给用户进行阅览,使用户能寻找更加合适的地点来学习。同时,在系统中也将引入奖励机制,从而提高校园用户的参与度和积极性。

  本文根据群智感知技术和奖励机制,完成了包括客户端和服务器端的系统设计。在此基础上,对深层次的功能需求提出构想,并提出了相应的可行方案。

  关键词:群智感知;奖励机制;校园信息

  前 言

  时至今日,社交类应用五花八门,如很早就火热起来的传统社交应用QQ,方便快捷的微信应用,知识问答的知乎平台和逐渐没落的校园信息平台人人网。随着大学生数量的不断增加,庞大的人群数量已然让校园成为了一个社区。大学生活丰富多彩,信息量纷繁复杂,社区人群无法即时获取到自己所需要的信息数据。因此,针对个人的调查研究以及对大学生日常生活中问题的访问研究,提出了校园信息平台构建的设想。

  本文着重于对校园信息平台的分析,意在构建一个校园信息系统,并在其中引入群智感知技术,通过对Android应用开发技术的学习,开发了一款校园信息平台系统,着重对校园内外周边环境噪声监测、定位和分享进行实现,其中包括需求分析、功能设计、系统架构设计以及整体功能系统的实现。本文涉及的主要工作有:

  (1)研究校园中涉及到群智感知的方向,并结合奖励机制提高用户的参与度和积极性,来获取更多更广的即时信息。

  (2)学习Android平台开发技术,学习Tomcat服务器配置搭建。

  (3)对校园信息平台功能进行需求分析,功能设计,奖励机制算法设计。

  (4)对系统进行整体设计,分为客户端和服务器。

  (5)对系统功能模块进行实现。

  第一章 绪 论

  本章首先对课题进行分析和设想,了解其在国内外的发展现状,紧接着概述了本文的主要工作和设计思路,在本章的最后则介绍了论文的整体组织结构。

  1.1研究课题的提出

  时至今日,社交类应用五花八门,如很早就火热起来的传统社交应用QQ,精致便捷的微信应用,知识问答讨论的知乎平台和逐渐没落的校园信息平台人人网。随着大学生数量的不断增加,庞大的人群数量已然让校园成为了一个社区。大学生活丰富多彩,信息量纷繁复杂,社区人群无法即时获取到自己所需要的信息数据。因此,针对个人的调查研究以及对大学生日常生活中问题的访问研究,提出了校园信息平台构建的设想。

  1.2国内外研究现状

  互联网起源于美国,在此期间,互联网诞生了许多的奇思妙想。Facebook解决了社区群体间人与人直接的交流互动的问题;Twitter解决了信息实时传递分享等问题;Google解决了信息检索的问题;Youtube解决了视频分享等问题。但由于某些原因,国内的诸多用户无法正常的使用此类应用。为了满足庞大的用户群体需求,国内也逐渐出现了此类应用,如人人网、微博、百度、各类视频直播平台等,虽然在使用上没有了门槛的限制,但由于利益等关系,提供的信息也是鱼龙混杂,用户无法及时获取到自己想要的信息。

  创建于2014年的Facebook,最初只是为在校大学生提供信息交流、社交等服务,随后它不断完善,逐渐形成个性化和多元化的社交信息,在Facebook中,熟知的关系使得用户之间的交流更加的轻松愉悦,也更加的真实。随着其迅速发展并逐渐壮大,Facebook不在仅仅局限于在校园内的发展,成为了全球最大、最实用的交流社交平台。Facebook正是抓住了互联网社区化发展的趋势,从而获得了成功。

  1.3本文的主要工作

  本文的主要工作是设计一个基于Android的校园信息化平台,选用Android Studio作为系统的客户端开发工具。

  l 在进行系统开发前,本文首先进行相关技术研究和调研。

  (1)对Android移动开发技术的研究。简要概述Android移动应用开发的相关要点,包括Java开发语言和Xutils3开发框架。

  (2)研究群智感知技术。对群智感知技术的基础概念进行一定的了解,分析数据采集方式的异同点。

  (3)研究奖励机制,为了提高用户参与任务的积极性和参与度,设计出合理的奖励机制算法,将其运用到系统相关的任务中去,从而获取实时可靠的信息来提供给用户群体参考。

  l 需求分析和功能设计

  本项目在对应用进行开发之前,需要对应用的需求和功能模块进行设计,为了尝试将群智感知引入到校园信息生活中,本文首先分析了日常生活中设计到群智感知技术的同类应用,再结合自己的日常生活和咨询身边同学获取相关信息。对应用的功能进行设计并找寻功能实现的方法,最后,为了提供高用户群体的积极性和参与度,设计相关的奖励机制算法。

  l 系统结构设计

  为了提高应用开发的效率,以有限的时间,取得最大的进度,选取了Xutils3开源框架对客户端进行辅助开发,包括UI界面设计、网络交互设计,同时对系统的架构进行设计。

  l 系统功能实现

  本次应用选用Android Studio开发平台进行客户端应用开发,包括UI界面设计、网络请求响应和数据传输、JSON序列化传输、活动逻辑设计和实现。服务器端则是通过Tomcat在本地搭建服务器,服务器数据库则是使用本地的MySQL关系型数据库。考虑到移动用户的用户群体,本服务器通过Ngrok进行反向代理,将本地Web应用暴露在公网上,供其他用户共同体验并协助调试。

  1.4本文组织结构

  本文共分为六个章节,安排如下:

  第一章:绪论。本章首先解释提出课题的依据,简单介绍了相关技术的发展现状。最后说明了本文的的主要工作和设计思路并分章节介绍了本文的组织结构。

  第二章:相关技术和研究工作。本章首先简单概述了Android开发,包括Android的平台架构、Android的优势、Android开源框架xUtils3以及Android开发模式。然后阐述了群智感知技术基本概念、数据采集方式,最后阐述了引入奖励机制的原因和必要性。

  第三章:需求分析与功能设计。需求分析主要包括用户群体分析和应用范围分析,设计应用的主要功能模块,包括系统概述、功能模块和主体业务功能实现。最后进行了奖励机制模型设计。

  第四章:系统研究设计。提出了基于Android平台的校园信息系统设计方案,包括客户端和服务器端设计,接着介绍了用于服务器端的Ngrok内网映射技术,并简单阐述了客户端和服务器端交互模式。

  第五章:系统实现。介绍了基于Android平台的校园信息系统主要功能模块的实现方法和过程,服务器端的核心API接口实现方法,最后考虑到移动用户群体,通过Ngrok内网映射将Web服务器部署在外网上供用户访问。

  第六章:总结与展望。对全文内容进行了总结同时对未来创新改进工作进行了设想,提出创新点和改进方法。

  第二章 相关技术和研究工作

  本章简述了Android开发,包括Android开发平台架构、优势所在、xUtils3开发框架和开发模式。接着详细介绍了群智感知技术,描述了其数据采集方式的异同点,最后解释了引入奖励机制的必要性。

  2.1 Android移动应用开发

  2.1.1 Android应用开发概述

  Android最早是由Andy Rubin开发的,主要用于支持手机的操作系统,在2005年8月被Google收购,2年后,Google联合84家公司组件了手机联盟,将Android系统进行了改良,从而有了真正意义上的Android操作系统[1]。首部Android智能手机于2010年10月发布,其后Android操作系统沿用到了平板电脑以及其他领域上Android的市场占有率很快跃居全球首位[2]。

  2.1.1.1Android平台架构

  Android平台是由4个部分组成,分别是Linux内核层、Android运行时库和其他库、应用框架层和应用程序层。

  (1)Linux内核层:Android的核心系统服务是基于Linux 2.6内核的,添加了一个名为Goldfish的虚拟CPU和Android所需的特定驱动代码。该层提供了安全机制、存储器管理、进程管理、网络堆栈和驱动模块。它使用的是YAFFS2(Yet Another Flash File System)文件系统[2]。YAFFS2是一种开源的,专为NAND Flash所设计,具有很好移植性,能在多种系统上运行的文件系统[3]。

  (2)Android运行时库和其他库:前者包含了一组核心库和Dalvik虚拟机,同时它还拥有大量库类支持,且大部分为开源代码,如Android系统采用的嵌入式数据库SQlite等[3]。Dalvik是谷歌公司自己设计用于Android平台的虚拟机,但是Dalvik不流畅的运行效率一直为用户所诟病,在其后便出现了ART(Android Runtime)。

  (3)应用框架层:在该层中,开发人员拥有访问核心应用所使用的所有API框架的权限。Android应用框架的架构设计简化了组件的重用性,所以任何应用都可以发布他们的组件,在保证安全的情况下,这些组件也可以被直接使用。

  (4)应用程序层:Android的应用程序通常是以Java程序编写的,同时还包括了存储在res目录中的各种资源文件。该层提供相应的API供开发者实现应用开发。

  2.1.1.2Android的优势

  Android做的最成功的一点,就是凭借着其高度的开放性,吸引了大量的开发者[4]。开源的代码库、无须授权、免费开发软件、社区第三方资源共享等,为开发者提供巨大的帮助。越来越多的开发者愿意在Android平台是进行开发学习。Google的日益强大也使得Android收集可以无缝结合Google提出的相关服务,如地图、邮件等,同时Android也可以通过第三方平台与其他应用相结合。由于Android的这些优点,出现了很多为用户量身打造的的产品。

  2.1.2 Xutils3开发框架

  xUtils是基于Afinal开发的功能较为完善的一个Android开发框架,在2017间发布了xUtils3.0最新版本,不仅在原基础上添加了新功能,还提高了框架的性能。xUtils支持超大文件(超过2G)上传,提供了丰富的http请求协议,更加灵活的ORM(Object Relational Mapping)以及更多的事件注解支持。xUtils是最低兼容Android 4.0 版本(api level 14)。

  虽然xUtils3包含了大量功能,但依然很轻量级(246K),且特性强大,使用方便。

  2.1.3 Android应用开发模式

  现如今,安卓开发已经发展日趋稳定完善,产生了3种主要开发模式,第一种是基于客户/服务器(C/S)架构的原生开发模式(Native App),面向于高性能、快速响应类的终端应用。第二种是基于浏览器/服务器(B/S)架构的Web应用开发模式,综合两种模式的混合开发模式[5]。三种开发模式特点如图2.1所示:

  图2.1 三种开发模式特点

  2.2群智感知技术

  2.2.1群智感知基本概念

  群智感知技术是指通过(人所携带的)各种移动终端设备对环境进行感知和数据收集,由于节点的移动性和社会性等特性,它解决了传统传感网络节点覆盖不足、成本代价大、缺乏可扩展性等问题,并且提高了感知数据的实时性和可靠性[6]。移动用户通过移动设备有意识或者无意识的参与到感知任务中来,完成规模庞大内容复杂的任务[7]。

  群智感知技术使得收集数据的不再必须是专业的技术人员,将收集数据的任务分配给社会上的普通个体中,以个人为中心,实现个体与群体的双赢[8]。

  2.2.2群智感知数据采集

  群智感知技术的感知数据由用户参与,在感知层进行收集[9]。服务器产生感知任务,将其分发给用户,用户有意识或无意识的进行感知数据的收集。因此,感知数据的采集方式也分为两种,即参与式感知和机会感知[8]。

  在参与式感知中,由于用户是主动参与数据收集任务的,数据的精度相对较高,但是由于用户的主观意识干扰,对数据的精度存在一定的干扰因素。又由于用户的活动时间的不确定性,用户无法将任意时刻符合要求的感知数据进行采集,导致数据采集的实时性不高,如在道路监控应用中,用户感知到道路拥堵信息,当用户将道路拥堵信息进行收集上报时,用户已经离开了该段路段,因此导致了时间空间信息上的不准确,更重要的是,用户在路况信息复杂的情况下,无法实时不停的上传数据,也导致了感知结果的不确定性[8]。

  而在机会感知的方式中,用户是直接或间接的参与到数据感知任务中来[10],用户的干扰性较小。筛选感知数据的成本降低,对应的也带来了一些问题。由于不是用户主动参与进行数据收集,导致采集到的数据受到应用环境和感知算法的约束。因此感知数据采集的难度相对比参与式感知难度高,群智感知数据还有可能泄露用户的隐私和敏感信息,因此需要设计一个合理的隐私保护机制用来保护用户隐私的同时进行数据采集[11]。

  本次设计中,用户是通过参与式感知方式主动参与到任务中来,用户的主观性影响较大,因此会引入奖励机制的概念来降低此类影响。

  2.3奖励机制

  本文中主要采取的感知方式是参与式感知方式,因此用户的个人意愿起到了至关重要的作用。在群智感知中奖励机制的作用是在系统平台管理下希望有更多具有移动设备的用户参与到感知任务中来,提供可靠实时的感知数据[12]。

  群智感知数据采集受到参与者数量的限制,主要存在两个原因:

  (1)参与者希望能在为服务器提供感知数据的同时能够获取一定的报酬,而不是无偿无条件的情况下参与到任务中来。因为感知数据的同时对消耗设备电量、计算资源、数据流量以及用户自己本身的时间。若没有报酬,用户难以保持积极的心态持续参与到任务中。

  (2)用户在为服务器提供感知数据的同时可能会暴露自己的部分隐私信息如数据文本、图像、音频、位置信息等,这也是用户在考虑是否参加感知任务的一大限制因素。

  因此,设计合理的奖励机制是激励用户参与感知任务提供可靠数据的重要技术手段。

  2.4本章小结

  本章介绍了Android移动应用开发,群智感知技术以及其奖励机制。

  在本章的第一节中,着重分析了Android平台的架构特点以及Android开发的优势所在之处。紧接着介绍本文中将设计到的xUtils3开发框架,展示了其强大的功能和特性。最后介绍了Android开发的三种应用开发模式,本文中则是采用的原生开发模式。

  第二节介绍了群智感知技术的基本概念,着重分析了群智感知技术的数据采集方式,分为参与式感知和机会感知两种,并介绍了他们的不同之处和优劣势。

  第三节阐释了奖励机制的作用,分析了2个主要的限制因素,强调引入奖励机制的必要性。

  第三章 需求分析与功能设计

  为了完成设计,除了需要相关的技术支持,还要在校园信息平台中引入群智感知技术和相关的激励机制,为校园用户提供较好的功能体验。

  3.1系统应用分析

  3.1.1用户群体分析

  本文中所要开发的应用主要针对群体是在校大学生,结合2018年极光大数据关于2018年4月大学生群体app行为研究报告得出的数据看到,大学生的主要追求还是不断学习,汲取知识。从极光大数据大学生人群社交风格TGI如图3.1所示[14]:

  图 3.1 大学生人群社交风格TGI(极光大数据提供数据)

  在校大学生对知识的追求最为突出,但在校园社区方面的活跃度也相对靠前。

  另外,通过同学之间的问卷调查,可以简单总结出在校大学生的一些特点:

  1、渴望在校期间能够不断提高自己、学习更多的知识。

  2、社交圈较窄,很少参加社交活动。

  3、拥有较多可自由支配的空闲时间,部分人无法合理支配。

  4、在校大学生普遍对移动设备存在依赖性,“手机不离手”成为普遍现象。

  3.1.2应用范围分析

  本文中设计的校园应用是针对校园环境噪声监测,首先由于校园内作为学习场所,噪声现象并不明显。通过本人亲身经历,对周边环境进行了解和对同学进行咨询发现,部分本该用来安静学习的场所由于各种因素导致环境声音较为嘈杂,反而并不适合用来学习或进行其他活动。本应用更倾向于室内噪声环境监测,由于受条件等因素制约,简化为对整体校园及周边环境噪声监测,上传显示噪声分布。

  3.2功能设计

  3.2.1系统概述

  本系统利用庞大的校园用户群体,收集大学校园内的有关信息,为大学生用户群体提供真实可靠的即时信息,同时引入群智感知的概念,通过奖励机制激发用户积极性,使其能为学生用户群体带来便利的同时也让用户能够为他们提供帮助,成为受其欢迎的校园移动应用平台。

  3.2.2功能模块

  本系统有热点信息、辅助功能、个人信息3个主要功能模块,其逻辑结构如下图3.2所示:

  图 3.2 功能模块概览图

  3.2.3主体业务和功能实现

  3.2.3.1注册/登陆

  社区类应用是为用户提供信息咨询、功能服务的平台,每一位用户都拥有自己的专属账户用来保存自己的信息和发布信息。用户对个人隐私的重视度极高,所以对拥有个人专属账户是应用的必要之处。

  详细功能:

  (1)注册功能:用户在使用App前,首先要注册个人专属的账户,以供后续应用的登陆等操作。

  (2)登陆功能:用户在已经拥有个人账户时,通过登陆功能登陆到App应用主界面,使用其中的各项功能。

  (3)找回密码功能:日常生活中,用户拥有各种各样的账户,忘记密码的情况在所难免,所以提供了密码找回功能,根据个人独有的手机号码进行密码找回功能。

  3.2.3.2辅助功能

  该模块用于存放应用中的所有功能性模块,用于为用户日常生活中提供方便快捷的用户服务,同时用户也可以主动向服务器提供自己所收集到的信息,实现资源共享。

  详细功能:

  (1)周边环境噪声查看:在百度地图上显示当前服务器上所收集到的所有环境数据噪声,为用户提供预览参考作用。

  (2)噪声监测定位功能:通过自身的移动设备对自身周边环境进行噪声监测,查看噪声分贝值,将数据传输到服务器以供其他用户进行浏览。

  3.2.3.3我的信息

  我的信息模块为用户提供个人信息的管理。

  3.3奖励机制模型设计

  本文中通过用户主动参与方式来进行数据收集,引入合理的奖励机制模型来提高用户参与任务的积极性,在目前看来,对参与用户直接进行奖励是主要的激励方法 [12]。

  本文中的用户行为主要是用户主动参与噪声数据收集。由于收集方式是通过手机声音传感器进行收集和算法数值转化,定位则是采取的GPS定位方式,所以在数据质量方面保证了数据的正确性,在代表性方面存在一定的偏差。而用户主动参与的积极性在任务收集方面起到决定性作用,所以设计用户积分的计算公式如下:

  其中Task表示用户采集数据的次数,UserRank表示用户的积分值,Math.rint则是进行四舍五入取整操作。为了鼓励用户更多的参与收集任务,所以规定用户首次参加任务基础分为5分,根据用户参与任务的次数,构造一个渐进递增函数。

  在上面的函数中,用户参与任务的次数越多,每次获得的积分也就越高,这样随着获得积分数的增加,用户参与任务的积极性也会提高。但积分的数值不会无限制的增长,考虑到任务参与的峰值,当用户参与任务达到一定的次数,单次获取的积分数量也将渐进为一个常量。

  在本文中同样考虑到积分的作用,如果只是单纯的进行积分奖励,而积分没有实质性的作用时,用户参与任务的积极性也会逐渐丧失。所以为了保持用户的积极性,本文在用户对服务器噪声数据每访问一次,则需要消耗5点积分值。当然,对新用户首次使用时,初次访问服务器数据是免费的。如果用户只是单纯的向服务器索取数据却不参与任务,当积分值减少到不足以访问服务器时,则无法再查看到服务器的噪声数据,这也是积分模型的合理之处。

  3.4本章小结

  本章主要工作如下:

  1、通过对用户群体、应用环境分析,总结出社区类用户的主要需求,将本文所要演示的校园信息平台定位于校园之中,意在为大学生用户群体提供安静的环境。

  2、进行应用的核心功能模块设计。

  3、设计奖励机制模型,提出积分模型UserRank,提出该模型的设计思路和设计方法。

  第四章 系统研究设计

  本文在第二章中着重对Android技术开发和群智感知技术进行了背景了解和相关的技术研究,第三章中则对系统进行了需求分析和相应的功能设计。在本章节中,则是对设计的总体设计方案进行阐述,包括客户端和服务器端的设计。

  4.1系统架构设计

  本文中将采用C/S架构[13]进行系统的设计,系统中的数据集中存储在服务器端,服务器采用MySQL数据库负责数据存取以及相应的业务处理工作,并为客户端提供对应的接口返回JSON数据。移动客户端实现系统的各个功能模块,包括用户交互UI设计,应用逻辑设计,访问服务器数据存取解析等操作,实现用户注册登陆、GPS定位以及周边环境噪声监测等功能,最后利用奖励机制提高用户主动参与活动的积极性。客户端利用http协议访问服务器。

  4.2移动客户端设计

  移动客户端是应用开发的关键部分,如何开发一款移动应用取决于使用的目标群体,我们需要站在用户的角度去考虑关注的要点。应用设计中,我们通常以高内聚低耦合作为划分模块的准则,低耦合使得代码在后期更易于修改和维护,高内聚则意在模块之间关系要清晰明了,这使得代码在运行时更加安全。另外在完成模块设计和功能实现的同时,我们还要考虑良好的用户交互体验。移动客户端的核心架构图如图4.1所示:

  图4.1 移动客户端核心架构

  图4.1中,移动客户端被分成多个层次:用户交互层、应用层、数据存储层、本地数据持久层、网络交互层,每一层都有其本职工作并为上层提供服务。

  1、用户交互层:该层主要负责完成用户交互UI界面的设计,点击事件的接受和响应。

  2、应用层:该层涵盖了移动客户端的各个模块功能:

  (1)登陆\注册模块:主要负责用户的注册、登陆、密码找回等功能。

  (2)业务逻辑模块:负责完成移动客户端主要辅助功能的实现,包括百度地图API接口实现、定位功能、噪声监测和数值转换功能实现。

  (3)网络编程模块:由于本次设计使用了xUtils3开发框架,该开发框架的网络模块大大方便了在实际开发中的网络模块的开发。

  (4)传感器模块:主要负责处理移动设备传感器检测收集的感知数据,如GPS定位信息、噪声监测信息等。

  3、数据存取层:数据存取层主要负责对本地数据的存取,包括读取用户登陆、注册信息,对定位位置信息、噪声监测数值等进行存取操作。

  4、本地数据持久层:该层主要负责本地数据的持久化存储,分为硬盘持久化存储和内存持久化存储。

  5、网络交互层:该层负责完成移动客户端通过网络请求访问服务器端的API接口,接受和响应网络数据。对服务器响应的json数据通过Gson进行解析获得我们需要的数据。

  4.3服务器端设计

  4.3.1服务器端概要设计

  服务器端主要负责实现后台业务逻辑和系统的数据存储操作,并为客户端提供接口服务。服务器端核心架构图如图4.2所示 :

  图 4.2服务器端核心架构图

  如图4.2所示:服务器端分成了3个部分,业务逻辑层根据对应的业务请求进行服务器的访问,交互接口层则是对业务逻辑层分别进行封装后为客户端提供对应的API接口服务。

  业务逻辑层根据具体的业务模块分为:用户登陆\注册模块、定位信息存取模块、噪声监测值存取模块等服务器功能以及其与数据库的交互。

  4.3.2数据库设计

  本节简单介绍了服务器端数据库中重要的表结构

  (1)用户表loginuser

  字段类型说明

  Idint(10)用户标志,主键,自增

  user_loginnamevarchar(20)用户名

  user_nicknamevarchar(40)用户昵称

  user_pwdvarchar(20)用户密码

  user_avatarurlvarchar(40)用户头像url

  user_gendervarchar(20)用户性别

  user_telvarchar(40)用户联系方式

  user_participationdecimal(10)用户参与度

  user_rankint(20)用户分数值

  user_createtimevarchar(255)用户注册时间

  (2)噪声定位数值表positioninfo

  字段类型说明

  Idint(10)信息标识,主键,自增

  user_loginnamevarchar(20)用户名

  noise_valuevarchar(255)噪声值

  LatitudeDouble定位经度

  LongitudeDouble定位纬度

  4.3.3 Ngrok内网映射

  一款应用的各类数据是存储在公共服务器上,为了给任意用户提供数据存取服务,服务器需要对外开放给用户进行访问,所以在这里使用到了Ngrok内网映射服务。

  Ngrok是当下非常流行的一项反向代理服务,用于进行内网穿透,通过在公共的端点和本地运行的Web服务器之间建立一个安全的通道。这样我们就可以将本地的Web服务器部署在外网上供所有用户进行使用和调试等操作,本服务支持80端口以及自定义tcp端口转发等。

  4.4客户端与服务器端交互设计

  本章的前三节中介绍了本系统的整体架构,并对客户端和服务器端进行了详细设计。客户端方面进行了详细设计,包括UI设计和交互页面设计等。

  客户端访问服务器是通过网络请求模块进行连接,本次设计中使用了xUtils3开发框架,大大方便了在应用设计中网络模块的开发。

  客户端通过xUtils3集成的http网络传输协议,主要是以get的方式为主。客户端根据对应的业务需求,利用http协议发送Resquest请求给后台服务器,服务器接收到请求后处理业务,同时根据请求的要求返回一个JSON格式的响应数据给客户端,客户端接收到这个响应数据后,通过GSON工具对JSON数据进行解析成为可识别的数据格式,并反馈给用户。

  4.5本章小结

  本章的主要工作为:

  1、考虑采用C/S架构对系统进行整体的架构设计。

  2、完成客户端架构设计和客户端交互界面的设计。

  3、完成服务器端架构设计,设计服务器端数据库,将服务器部署在公网上供用户使用。

  4、采用http网络传输协议实现客户端与服务器端的交互。

  第五章 系统实现

  本章在完成前文所述功能设计的基础上,完成了模块功能的具体实现,包括客户端的核心功能实现、服务器端核心API实现以及服务器架设方式的介绍。

  5.1客户端核心模块的实现

  5.1.1噪声监测定位服务

  移动客户端的噪声监测定位服务主要集中在百度地图上进行实现,如图5.1、5.2分别是定位服务和噪声分布定位和监测图。

  图5.1 定位服务图 图5.2噪声分布定位和监测图

  为了实现如图5.1和5.2所示的信息,需要实现以下几点要求:

  1、在系统中使用百度地图SDK。

  (1)申请密钥

  如果想要使用百度地图SDK,先向百度官方申请开发者密钥。如图5.3所示:

  图5.3 百度地图密钥申请

  (2)下载相关SDK

  如图5.4所示,根据系统所需要使用到的功能选择所要下载的安装包。

  图5.4 百度地图开发资源

  (3)环境配置

  3、定位服务中,为了在地图上直观的显示出定位信息,需要在定位位置添加相应的覆盖物。ll用于存放自己的经纬度坐标用于添加覆盖物等操作。option对象是覆盖物选型对象,用于设置覆盖物的各种属性。在定位操作结束后,将isFirstLocate设置为false。

  4、本次设计中,噪声监测功能是通过手机的声音传感器来实现的,将麦克风收集到的周边声音通过对应的转化算法转化为分贝值,用于判定周围声音强度。AudioRecord类中通过方法getNoiseLevel()方法对声音进行了收集和数值转化,转化后的数值进行返回用于存取。

  5、为了给用户更直观的查看到周边环境的噪声强度,选择直接将服务器中的数据以定位标志的形式显示在百度地图上供用户进行预览,用户只需要点击覆盖物,即可显示点击位置的噪声值。

  (1)从服务器上获取所有已知噪声数值以及定位的数据,将其以覆盖物的形式显示在百度地图上。Marker作用是添加自定义标识,同时可以为marker添加点击事件。bundle.putSerializable()自定义bundle传递序列化对象数据,当噪声值传递给点击事件后弹出的布局中。

  5.1.2移动客户端网络编程

  本次设计中,客户端的网络编程是使用xUtils3开源框架来进行实现的。xUtils3中拥有HttpUtils网络模块,具有更全面的http请求协议支持,大致包括了GET请求、POST请求、如何使用其他请求方式、上传文件、下载文件、使用缓存等功能。下面是针对为用户提供服务器噪声定位数据,使用xUtils3框架实现的网络交互:

  1. private void getvalue(){

  2. RequestParams params = new RequestParams(

  3. "http://campus.free.ngrok.cc/Service/servlet/GetValue");

  4. x.http().get(params, new Callback.CacheCallback() {…}

  通过http网络请求,请求方式是为get方式,返回的数据json数据,由于服务器端返回的是jsonArray数据格式,所以定义VoiceBean对象类进行json数据的解析,解析方式则是通过Google提供的用于解析json的一个开源框架Gson。

  5.1.3移动客户端主界面逻辑

  移动客户端的主要功能界面是用FragmentTabHost实现的选项卡菜单界面,分别为Hotspot、Auxiliary和PersonalInfo3个选项界面。FragmentTabHost替代了TabHost的类,TabHost在4.3.0版本后被废弃了。

  (1)首先,我们在activity_homepage.xml布局文件中放置一个FragmentTabHost布局:

  1.

  2. android:id="@android:id/tabhost"

  3. android:layout_width="match_parent"

  4. android:layout_height="wrap_content"

  5.1.4移动客户端活动跳转

  在Android中进行页面跳转主要使用Intent实现活动的显示跳转,它不仅指明了当前组件想要执行的动作,还可以在不同组件之间进行数据传递。在本文中大部分的活动跳转都使用Intent进行,下面就是使用Intent进行活动跳转同时进行数据传递:

  5.2服务器端的实现

  5.2.1基本说明

  本文中,服务器是以自己的计算机作为服务器,数据库则是采用的MySQL关系型数据库,服务器是使用MyEclipse开发工具中集成的Tomcat搭建服务器,使用的是Java语言,用MyEclipse为客户端建立servlet。为了给更多的用户群体移动访问服务器,通过Ngrok反向代理服务进行内网穿透,将服务器部署在公网便于测试和使用。

  5.2.2服务器核心API接口

  5.2.2.1噪声定位显示

  用户想要直观的查看噪声定位分布以及噪声数值,需要访问服务器获取服务器上的所有数据,此时通过http请求访问服务器,服务器从数据库中获取到所有数据以后返回一个jsonarray数据给客户端。

  5.2.2.2用户登陆

  客户在使用客户端程序时,需要进行用户登陆操作,登陆时需要提供对应的用户名密码参数,服务器接收到参数后与数据库进行匹配操作,操作完成后返回json格式的响应数据,其中“flag”值为0时,密码正确,“flag”值为1时,密码错误,“flag”值为2时,用户不存在。

  5.3Ngrok内网穿透

  5.3.1基本说明

  Ngrok是当下非常流行的一项反向代理服务,用于进行内网穿透,通过在公共的端点和本地运行的Web服务器之间建立一个安全的通道。这样我们就可以将本地的Web服务器部署在外网上供所有用户进行使用和调试等操作,本服务支持80端口以及自定义tcp端口转发等。

  5.3.2使用方法

  (1)在ngrok官网申请一个账号,并登陆。

  (2)点击隧道管理,进行开通隧道。

  (3)购买免费版本的。

  (4)依次填入各项信息,注意本地端口要和tomcat的web项目的http访问端口对应,如图5.6。5.4本章小结

  本章介绍了移动客户端核心模块的具体实现方法和服务器搭建方式,简单介绍了服务器核心API的实现,最后讲解了ngrok的使用方式。

  第六章 总结和展望

  6.1本文总结

  本文在着手应用设计之前,做了充分的调查与研究。在对社区应用发展背景进行了解后,对群智感知技术、奖励机制以及Android开发技术进行了深入研究,从而完成了系统的设计。经过需求分析、功能设计以及架构设计后,实现了系统模块功能。

  本文首先介绍了Android移动应用开发特点,包括Android的4层平台架构、Android开发的优势。同时介绍了本文中涉及到的Android开源框架xUtils3,列举了它的主要功能与特性,简单分析了Android多种开发应用模式的之间的区别。此外,本文着重分析了群智感知技术的数据采集方式,比较了机会感知和参与式感知的不同之处,提出使用奖励机制来提高用户参与任务的积极性。

  然后,本文对系统应用进行了需求分析,包括用户群体和应用环境分析,并在此基础上完成了应用的主要功能设计。此外,还在设计中引入了奖励机制模型的设计,系统功能更加完善。

  紧接着,本文对系统做了较为详细的研究与设计,完成了系统的架构设计,包括客户端和服务器端的设计,同时还介绍了服务器端的Ngrok内网映射技术。对客户端和服务器端交互设计也做了简单的介绍。

  最后,本文详细地介绍了系统功能模块的实现方法,包括客户端主要功能的实现方法和前提要素、服务器端的搭建和API接口实现以及Ngrok内外映射的使用方法。从课题研究到系统设计再到模块实现,具有较强的创新与实践意义。

  6.2未来工作展望

  随着移动应用开发技术的飞速发展,用户的需求也逐渐变得多样化。移动应用也要在原有的基础上不断开拓创新,多次开发来满足广大用户的要求,在提供良好的用户体验前提下,提供更加智能、优质的服务。

  由于作者技术学识浅薄,本文仍然有许多的改进之处。例如本文原计划将噪声采集环境定于室内例如图书馆等地。由于技术的限制,将噪声采集范围定在了百度地图上的某一点,用户只能将自身所处的位置的噪声进行采集上传,由于环境是处在校园中,校园作为学习交流场所,本身不会存在大量的噪声因素,所以存在着上传数据差距不明显,不具代表性等因素。另外,本文虽然创新性的引入了奖励机制来提高用户积极性,但是并没有对奖励进行实质性的定义,即用户拥有这个奖励到底有何用处,用户又能从中获取何种收益。刘云浩教授提出,真正的群智感知技术是用户无意识的参与数据采集任务。本文中所涉及到的主要还是用户主动参与任务中来,由于数据采集方式的特点确保了数据的准确性,但用户的积极性在其中起到了决定性的因素。

  所以,在未来的工作中,如何让用户无意识的参与噪声收集活动中来,同时制定出完善的奖励机制来激励用户是一个重要改进点。另外,将数据采集范围收缩到更具有考察意义的环境中,让功能更具有实质性的意义也是本文的重要改进的地方。

毕业论文:http://www.3lunwen.com/jsj/dzjs/5421.html

上一篇:基于群智感知的城市路况信息采集系统研究

下一篇:没有了

     移动版:基于群智感知的校园信息系统研究与设计

本文标签:
最新论文