毕业设计(论文)-基于Android系统的智能安防系统.doc_第1页
毕业设计(论文)-基于Android系统的智能安防系统.doc_第2页
毕业设计(论文)-基于Android系统的智能安防系统.doc_第3页
毕业设计(论文)-基于Android系统的智能安防系统.doc_第4页
毕业设计(论文)-基于Android系统的智能安防系统.doc_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南京铁道职业技术学院 毕 业 论 文 题 目: 基于 android 系统的智能安防 系统的设计与实现 作 者: 学 号: 二级学院: 软件与艺术学院 系 : 计算机 专 业: 软件技术(移动智能终端) 班 级: 软件技术(移动智能)1201 指导者: 评阅者: 2015 年 6 月 毕业设计(论文)中文摘要 智能安防系统 摘要:智能安防便是一物联网发展的一个产物。智能安防系统不仅可以对监控 现场进行不间断实时监视包括对人员进出情况的统计管理、设置是否布防,还 可通过各种存储媒体形式将监视所得内容以文档、视频等形式保存下来以备随 时查证,在小到家庭、超市、温室大棚大到工厂、宾馆、学校、医院、办公楼 等公共场所内建立起完善的安防系统,可以做到完善单位的现场管理、提高服 务行业的服务质量、加强安全保卫防范的力度,既防外盗又防内盗形成一定的 震慑力量,实现安防现代化管理,提升品牌形象,提高水平创造极其有利的条 件,由于治安防范措施不力而发生抢劫案件、伤及生命之事时有耳闻,除资产 受到损失外,还给社会造成不良影响,为有效保护资产和工作人员及客户的安 全,做到有效的安全防范。 关键词:智能设备 android 实时 远程控制 安防系统 第 1 页 共 2 页 目目 次次 1 引言.4 1.1 项目开发背景.4 1.2 项目开发的目的与意义.4 2 开发技术及运行环境.5 2.1 android 简介 .5 2.2 intellij idea 简介 .5 2.3 jdk 简介 .5 2.4 mysql 简介 .5 2.5 c/s 与 b/s 模式 .6 2.5.1 c/s 和 b/s 模式的比较分析 .6 2.5.3 b/s 模式的优势 .6 2.5.4 c/s 模式的优势 .6 3 需求分析.8 3.1 需求分析.8 3.1.1 基本功能需求.8 3.1.2 运行环境.8 3.2 可行性分析.8 3.2.1 经济能行性分析.9 3.2.2 技术能行性分析.9 3.2.3 操作能行性分析.9 3.3 功能分析.9 4 总体设计10 4.1 系统设计思想10 4.2 android 客户端总体架构设计 10 4.3 系统运转流程设计10 第 2 页 共 2 页 5 客户端系统功能详细设计12 5.1 设计模式12 5.2 进入程序12 5.3 登录界面13 5.4 程序主界面16 5.5 参数配置界面18 5.6 设备管理功能19 5.7 视频监控功能20 5.8 安保监测功能20 结论.26 致谢.27 参考文献.28 第 1 页 共 39 页 1 1 引言引言 1.11.1 项目开发背景项目开发背景 随着生活水平的提升,人们对于安保防范方面越来越重视,伴随着科技的 进步物联网技术的发展,同时智能设备的不断普及,以及人力安防成本逐渐变 高,促使智能安防系统诞生。 随着物联网技术的普及应用,安防从过去简单的人力安全防护向综合化体 系逐渐演变,安防技术涉及众多的领域,有社区、建筑、银行、邮局、道路、 车辆、警务等。尤其是对于一些重要场所,如:机场、水电气厂、桥梁大坝、 河道、地铁等场所,引入物联网安防监控后可以通过无线通信网络、跟踪定位 等技术建立全方位的立体防护系统。 智能安防便是一物联网发展的一个产物。智能安防系统不仅可以对监控现 场进行不间断实时监视包括对人员进出情况的统计管理、设置是否布防,还可 通过各种存储媒体形式将监视所得内容以文档、视频等形式保存下来以备随时 查证,在小到家庭、超市、温室大棚大到工厂、宾馆、学校、医院、办公楼等 公共场所内建立起完善的安防系统,可以做到完善单位的现场管理、提高服务 行业的服务质量、加强安全保卫防范的力度,既防外盗又防内盗形成一定的震 慑力量,实现安防现代化管理,提升品牌形象,提高水平创造极其有利的条件, 由于治安防范措施不力而发生抢劫案件、伤及生命之事时有耳闻,除资产受到 损失外,还给社会造成不良影响,为有效保护资产和工作人员及客户的安全, 做到有效的安全防范。 1.21.2 项目开发的目的与意义项目开发的目的与意义 系统研究了智能安防系统的概念、开发方法、运行模式以及体系结构,分 析了传统安防管理系统存在的问题,详细介绍了 android 开发技术,深入探讨 了基于 android 的智能安防系统工作原理,对适合系统设计的开发技术、开发 软件和数据库作了优选。综合运用 android 开发技术和数据库设计技术,针对 系统作了详细的需求分析,以开发出满足现代安防应有功能和性能的智能安防 系统。 第 2 页 共 39 页 智能化安防技术随着快速发展的科学技术进步,安防技术腾飞已迈入了一 个全新的阶段,智能化安防技术与计算机技术之间的界限正在慢慢的消失,没 有安防技术快速发展社会就会显得不够安宁,科学、经济的前进和发展就会受 到一定影响。 智能安防系统以维护所辖区域的安全和预防范事故发生为系统的目的,对 各种需要监控区域来说,智能安防系统的建立并完善可以有效的预防并解决各 种突发安全问题,防止各种犯罪行为的发生,如:非法入侵、财物盗窃。各种 以前发生的安全问题发现时已经为时已晚了,往往会对单位企业、家庭个人造 成无法挽回的经济损失甚者人员伤亡,而智能安防系统的原则是本着预防为主、 防治结合,不仅能够对各种事故的发生起到预防效果的同时还为一些犯罪事实 提供必要证据,存储各种资料供来证明。一旦一些重要监控的区域少了完善的 智能安防系统的监控,就无法对各种犯罪行为起到警示震慑作用,更是对一些 破坏行为无能为力,并且造成不必要损失,因此智能安防系统在需要监控的区 域必须完善,利用现有科技手段来解决安全问题变得越来越重要。 当然市面上此类产品也有一些,本文主要讨论的是安防系统整体方案及实 现思路等技术细节。 第 3 页 共 39 页 2 2 开发技术及运行环境开发技术及运行环境 2.12.1 androidandroid 简介简介 在如今的生活中 android 手机十分常见,cnet 报道,调研机构 strategy analytics 最新的第三季度调查显示 android 以全球 83%的占有率高居第一,而 ios 以 12%居于第二。android 的本义是“机器人”,由法国作家 auguste villiers de lisle-adam 于 1886 年发表的科幻小说未来夏娃中提到以 android 为名的机器人。同时是 google 公司于 2007 年 11 月 5 日发布的基于 linux 平台开发的开源手机操作系统,组成部分包括操作系统、应用软件、用 户界面和中间件。 android 的机器人 logo 是在 2010 年由 ascender 公司设计的,android 并 非 google 公司开发的,2005 年 google 公司收购开发 android 的幕后公司 android 有限公司。当时该公司是一家成立只有 22 个月的创业公司。2008 年 10 月开源(apache 开源许可协议)。android 运行并非实在 java 虚拟机中而 是运行在名为 dalvik 的虚拟机中。由于开发源代码导致 android 阵营碎片化严 重,导致原生 android 被改成各种定制版本。相比于 ios 坚守的高端市场, android 设备的体验稍有不足,但是 android 的贡献是不能否认的,推动设备 智能化进程,促进了智能科技产品普及。在 2012 年科技博客网站 businessinsider 评选的十款最重要电子产品中,iphone 和 android 操作系统 等榜上有名。 2.22.2 intellijintellij ideaidea 简介简介 本程序是用的 idea 开发的。idea 全称 intellij idea,是由 jetbrains 公司开发的 java 语言开发集成环境, intellij idea 被公认为业界最好的 java 开发工具之一,突出表现在代码智能 提示、类的重构、j2ee 支持、ant、junit、版本控制器的整合、代码审查、 创新的 gui 设计等方面的功能空前强大开创编程工具的诸多先河。jetbrains 公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称。这里提到 第 4 页 共 39 页 eclipse,其庞大的体系就注定了插件管理比较松散,因此开发者必须要忍受一 些不稳定。intellij 相比 eclipse 的开源,idea 是统一管理公司开发,基本所 有的插件都在管理范围之内,整体质量更好控制,所以使用 idea 可以极大提高 开发效率。 2.32.3 jdkjdk 简介简介 jdk(java development kit)是 sun microsystems 针对 java 开发员的产品。 自从 java 推出以来,jdk 已经成为使用最广泛的 java sdk(software development kit)。jdk 是整个 java 的核心,包括了 java 运行环境(java runtime envirnment)和 java 工具和 java 基础的类库(rt.jar)。不论什么 java 应用服务器实质都是内置了某个版本的 jdk。最主流的 jdk 是 sun 公司发 布的 jdk。从 jdk 6.0 开始,其运行效率得到了非常大的提高,尤其是在桌面 应用方面。jdk 本身使用了 java 语言编写,在我们下载的安装包里,有一个 src.zip,里面就是 jdk 的源代码。版本 se(j2se),standard edition,标准版, 是我们通常用的一个版本,从 jdk 5.0 开始,改名为 java se。 2.42.4 mysqlmysql 简介简介 mysql 是一款由瑞典 mysql ab 公司开发的开源关系型数据库管理系统,后来为 oracle 公司所有。目前 mysql 应用广泛,在 internet 上的中小型网站中随处 可见。mysql 作为网站数据库优点颇多:速度快、体积小、成本低,源码开放, 众多中小型网站为了节省网站总体成本选择 mysql。mysql 是目前最好的关系 数据库管理系统应用软件之一尤其表现在在 web 应用方面。mysql 使用 c 和 c+语言编写,测试了众多编译器以保证其源代码高度可移植。mysql 支持绝 大多数操作系统,并提供了包括 c、c+、python、java 在内的多种语言的接口。 mysql 可以充分利用 cpu 的资源,支持多线程执行。优化算法,高效的查询 第 5 页 共 39 页 既能够作为服务器应用程序,也能作为软件的库嵌入。而且连接途径众多,还 提供用于管理 gui 工具,可以处理拥有上千万条记录的大型数据库。因此,我 们在项目的后台会用到 mysql 来作为系统的数据库 。 2.52.5 c/sc/s 与与 b/sb/s 模式模式 2.5.1 c/s 和 b/s 模式的比较分析 先介绍这两种常见的开发模式: (1) c/s 开发模式主要由客户应用程序和服务器端程序两部分组成。客 户应用程序(client)是整个系统中用户接触的部分,用来完成与服务器交互 的个人端,实现客户要求的所有功能。服务器程序(server)负责管理系统资源 并分配各种任务,可以适当分担客户端计算任务,实现各种功能的逻辑部分, 返回相应的数据来完成客户端的请求实现交互,如连接数据库,管理数据,实 现多个客户端对一个服务的相应,合理分配资源,保证效率实现最优结果。 (2) b/s 开发模式是一种以 web 技术为基础,新型的管理信息系统。主要 使用通用浏览器(browser)和服务器(server)进行各种交互实现 c/s 模式的 大部分功能,把 c/s 模式中的服务器程序分为一个数据服务器与多个应用服务 器。只需要在服务器端实现所有功能的编写,整个程序发布之后,客户可以通 过在各种浏览器中输入指定的域名便可实现所有的功能。 2.5.2 b/s 与 c/s 的联系 c/s 与 b/s 的关系与管理需求是紧密联系的,c/s 开发模式能够实现一些复杂的 功能,高强度的运算可通过客户端实现,节省服务端的资源,但是开周期长, 一般用在大型的系统上。而 b/s 优点客户端零维护,开发周期短,适合小型项 目的实现。 2.5.3 b/s 模式的优势 b/s 模式简化了客户端。无需像 c/s 模式在客户机上安装客户端应用程序, 只要有连接网络浏览器便可以实现所有功能。这样可以节省客户机大量资源, 而且不用安装。同时简化了系统开发周期和客户单的维护。开发人员只需把所 第 6 页 共 39 页 有的功能在 web 服务器上写好实现,只需要添加权限管理便能完成等级不同功 能不同。相比 c/s 模式,b/s 模式在维护时灵活性更大,若功能需要改变时, 它只需对 web 服务器上的功能程序进行修改发布即可完成维护,而不用再为客 户应用程序升级。 2.5.4 c/s 模式的优势 c/s 模式最大的优点是交互性强。在 c/s 模式中,客户端需要安装完整的应 用程序,在处理程序出错时的提示、连网帮助等方面都有这强大能力,同时在 程序的各个功能间实现无缝的自由切换,节省加载数据的时间、对网络带宽要 求较低节省网络资源。b/s 对脚本语言有一定的交互能力,但与 c/s 模式开发 的客户端的规模无论是扩展性还是效率性都是无法相提并论的。 而且,使用 c/s 的模式开发能够是数据的传输更加安全。这是因为 c/s 是 匹配的端到端的通信模式还能够在保证效率的情况下实现各种加密操作。c/s 模式适用于各种网络环境下包括局域网、安全要求较高的网络通信。再说到, 响应速度,同样的带宽 c/s 可以做到更多的操作。对于界面要求比较高的用户, 可以自行定制界面,满足个性化需求。由于可以充分利用客户端资源,继而可 以实现复杂的业务流程,例如大型的游戏,复杂的管理系统都是通过 c/s 模式 实现。 为了既有 b/s 模式的便捷性同时又有 c/s 模式的稳定高效性相结合,因此, 本系统用 b/s 和 c/s 相结合的开发模式,但由于本课题主要讨论 android 端的 技术,所以,b/s 模式在本课题不做介绍。 第 7 页 共 39 页 3 3 需求分析需求分析 3.13.1 需求分析需求分析 需求分析,顾名思义就是指对于即将开发的软件进行详细的分析,分析透 彻软件的要求,包括各种需要,要得到的结果。可以这么说,在软件开发过程 中的需求分析就是确定要计算机需要完成什么任务,要做到什么功能。因此需 求分析是做软件系统之前必须完成的一个环节。 在软件工程中,需求分析指的是在建立一个新的或改变一个现存的系统时 描写新系统的目的、范围、定义和功能时所要做的所有的分析工作。需求分析 是软件开发中的一个必要环节。在需求分析中,软件工程师和系统分析人员确 定顾客的种种需求。只有在确定了这些需求后,他们才能够分析和寻求新系统 的设计思路、以及遇到问题的解决方法。需求分析阶段的任务就是确定软件系 统所有功能。 在软件工程的历史中,很长时间里开发人员一直认为需求分析是整个软件 工程中最简单的一个环节。但在近十年内,越来越多的开发人员认识到,需求 分析是整个软件开发过程中最关键的一个部分。假如在需求分析时分析者们未 能全面地认识到客户需要的话,那么无论是开发过程中还是最后的开发出来的 软件都不能满足顾客的需要,或者软件项目无法在规定的时间里完成开发。 3.1.1 基本功能需求 通过调查,要求系统需要有以下功能: 由于操作人员即用户计算机知识普遍较差,要求有良好的界面; 由于 android 设备尺寸大小不一,在设计之初就要考虑到兼容; 本系统为安防系统,要求高稳定性 可以控制是否布防; 方便的用户了解安防现场,支持视频、图片查看; 用户可以查询安防记录。 3.1.2 运行环境 本系统的软硬件环境如下: 1.程序运行硬件环境 第 8 页 共 39 页 1)android 2.3 以上 2)运行内存:512m 以上 2.开发环境 1)windows 7 2)core i3 , amd a4 以上 3)8g 内存以上 4)jdk 7.0 5)intellij idea 6)android-sdk 2.3 及以上 3.23.2 可行性分析可行性分析 可行性分析是通过对软件项目的主要内容和各种条件的分析确定,如市场 资源、供应需求、软件规模、网络环境影响、开发资金筹措、具备的盈利能力 等,从技术、经济、工程等实际的方面进行调查研究、分析比较,并且对软件 项目建成以后可能取得的功能成就、经济效益及社会环境影响进行分析和评估, 最后提出该项目是否值得投资,如何进行规划的建议,为项目的最终决策提供 可靠支持的一种综合性的全方面分析方法。可行性分析应具有预见性、公正性、 可靠性、科学性的特点。 .1 经济能行性分析经济能行性分析 虽然智能安防系统相对于其他应用系统来说,规模比较小,难度也不大, 但是开发一套新的系统依然是个复杂的工作,需要投入很多人力和物力,在开 发过程中会花费开发人员大量的精力和时间,在测试过程中也会出现各种 bug 错误,开发人员还要花费大量时间和精力来修改调整代码。各种机构如家庭、 小区、学校可能会花费一定的金钱来购买智能安防系统。但是,本系统可以大 大提高安防效率,同时可以节省大量的人力成本以节省资金,减少安防人员的 负担。因此,从长远角度来看,对安防智能系统的投资还是有经济能行性的。 3.2.2 技术能行性分析 第 9 页 共 39 页 智能安防系统在开发 andriod 端的过程中,大部分是采用了 java 语言作为 开发主要语言。java 语言最主要的特点就是采用面向对象的编程思想,当我们 在程序中想要实现某个具体的功能时,只要根据需要写出类和方法用对象来传 递参数、值等。java 不像 c 语言那样是一种面向过程的语言,没有 c 语言中复 杂指针,因此,android 开发相对 c 语言来说要简单许多。android 虽然版本众 多,但是,google 官方提供了许多版本兼容包,因此可以运行在众多 android 设备上。所以,智能安防系统在技术上也是可行的。 3.2.3 操作能行性分析 智能安防系统采用 java 语言,在 jdk 以及 android-sdk 的环境下进行开发。 开发工具主要使用了 intellij idea,工具可以提供很多提示,在开发过程可 以给开发人员带来不少方便。并且,本系统采用 mvc 模式来开发的,它的界面 实用,容易理解,用户的可以很快学会使用。所以,智能安防系统在操作上也 是可行的。 从以上三个可行性方面,可以很容易看出,智能安防系统作为一个提高安 防效率的系统,在经济方面、技术方面以及操作方面都是可行的。 3.3.3 3 功能分析功能分析 该系统主要有以下功能: android 客户端: (1) 实时显示当前温度,湿度数据; (2) 管理控制电器; (3) 查看网络监控器视频信息; (4) 查看管理门禁记录及闯入红外门窗报警器时. 第 10 页 共 39 页 4 4 总体设计总体设计 4.14.1 系统设计思想系统设计思想 安防系统设计的指导思想是围绕安防开展的,要做到:可靠、独立、安全, 同时要兼顾各个方面:兼容、可扩展、标准化以及经济性等。最后,还要考虑 软件的用户友好程度:易操作,实用性。 (1)可靠性 安防系统的可靠性是首要的。在智能安防监控系统设计、调试、安装等环 节都将严格检查,反复测试以保证系统的可靠性。 (2)安全性 安防监控系统的程序要有防反编译能力。 (3)兼容性 程序在开发过程中要添加向下兼容包,保证在各个版本都可以流畅运行。 同时考虑到将来向程勋添加工的扩展兼容性。 (4)易操作性及实用性 系统的操作简单、快捷、环节少,系统具有友好界面,方便使用。 系统有容错操作能力,使得在程序在各种环境、误操作下,可以正常运 行,不引起系统的崩溃。 4 4.2.2 a androidndroid客户端客户端总体架构设计总体架构设计 android 客户端是采用经典的 mvc 模式来设计的。将个各类按功能不同放在 不同的包内,从而使代码逻辑清晰,便于编程人员对程序的编写、调试和后期 维护。android 端主要负责的是查看功能,因此客户端主要围绕的是展示功能, 主要用到 textview、listview、imageview 来展示来自服务端返回的数据库信 息。当然和服务器交互同样也是重要的,比如要查询某天的门禁记录要查看某 条记录下的照片,是需要往服务端发送数据,这样服务端才能根据检索信息来 返回指定的信息。在该项目移植了网络 ip 摄像机提供的部分代码以实现监控功 能,引入了所需的.so 文件当然,涉及到 jni 相关的知识不在本课题讨论范围 内。同时该工程用到了 android 四大组件 activity、service、contentprovider、boardcast 中的两个,activity 和 service,activity 用来显示其他小的组件,展示信息给用户,接受用户的操 作,完成人机交互。service 用来启动程序用的服务,在后台运行,完成一些 第 11 页 共 39 页 耗时而不需要操作的任务,如在成初始化时,启动 service 用以连接网络摄像 机,返回网络摄像机的状态,当有返回的信息时,提示用户摄像机的状态,完 成大量的有关网络摄像机操作:初始化、处理放回的视频流、操控网络摄像机 等。 4.4.3 3 系统运转流程设计系统运转流程设计 为了全面的分析和理解系统的运转流程,具体流程如下: 图 4.3.1 系统运转流程 业务流程图描述了一个完整的业务流程,它是一种物理模型。 本系统在数据采集时用到许多传感器,像温度传感器、湿度传感器及网络 摄像机等,硬件部分在本课题不做讨论。 首先介绍智能安防系统的 web 端管理系统,运行从用户的注册开始,注册 服务器端 web 端 android 客户端 用 户 管 理 门 禁 记 录 温 度 湿 度 门 禁 图 片 设 备 管 理 当 前 环 境 门 禁 管 理 查 看 监 控 设 备 管 理 登录 登录 第 12 页 共 39 页 完成后,服务器会向数据库中插入注册的用户信息,以后就可以用注册成功的 账号进入系统,用户输入用户名和密码,如果用户名或者密码输入不正确,系 统就会将输入框中的内容清空,并且提醒用户:“密码或用户名错误,请重新 输入!”,如果系统校验用户名和密码输入正确,用户就能成功登陆到系统。 进入系统主界面后,可以从菜单中选择门禁管理,用户管理和设备管理。在门 禁记录管理可查看门禁图片。在各个管理中的增删改查在此不做介绍。 接下是 android 客户端的运行流程,首先打开 app 进入登录界面,输入用 户名和密码,如果输入错误会有较详细的提示,并会清空密码。校验通过后, 进入主界面。在主界面可以看到当前的环境包括温度和湿度,还有布防状态, 顶部有刷新按钮,随时更新当前的状态,并能通过按钮来更改布防状态、在主 界面底部有三个选项,分别可进入设备管理界面、实时监控界面和门禁记录查 看界面。在设备管理界面可开关接入系统的设备,在本系统中是灯泡,别的家 电同样可以控制,这涉及到硬件部分。在实时监控界面可以看到网络摄像机拍 摄的实时监控视频,同时还可通过触摸屏幕操作摄像机镜头方向,视频质量, 调节焦距等。最后在门禁记录里可以查看到数据库中的记录,点击记录可以查 看图片,了解情况。 第 13 页 共 39 页 5 5 客户端系统功能客户端系统功能详细设计详细设计 5.5.1 1 设计模式设计模式 设计模式,mvc 模式: 将各个类以功能类别区分,分别放在不同的包内, 工程包含的包 package: (1) bean:存放不同对象的实体类; (2) constant:存放程序中用到的常量; (3) service:存放服务类; (4) test:测试用的包,项目完成后删除; (5) ui:存放与界面有关系的各个 activity; (6) util:存放完成各个具体功能的工具类; (7) vstc2.nativecaller: 网络摄像机移植代码包 5.5.2 2 进入程序进入程序 开始进入程序的界面: 主要完成的功能,初始化应用程序,启动 service 用以连接网络摄像机, 返回摄像机状态,用 splash 向用户展示程序 logo 或者一些广告、使用简介等 其他信息,部分代码实现如下: 重写继承的 activity 中 oncreate()方法,设置 布局文件,启动要用到的服务类 bridgeservice,同 时启动一个线程用来初始化移植到程序中的 nativecaller 类,在等待 3 秒钟后进入到主界面, 初始化 startactivity 等。 startacitvity.java: 第 14 页 共 39 页 public void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); getwindow().setflags(windowmanager.layoutparams.flag_fullscreen, windowmanager.layoutparams.flag_fullscreen); requestwindowfeature(window.feature_no_title); setcontentview(r.layout.start); /启动服务 intent intent = new intent(); intent.setclass(startactivity.this, bridgeservice.class); startservice(intent); /开启线程 new thread(new runnable() override public void run() try nativecaller.ppppinitialother(“.“); thread.sleep(3000); message msg = new message(); mhandler.sendmessage(msg); catch (exception e) e.printstacktrace(); ).start(); mhandler 处理器,处理前面发送来的 msg,就是信号,3 秒后执行,进入登 录界面 login.java: private handler mhandler = new handler() public void handlemessage(message msg) intent in = new intent(startactivity.this, login.class); startactivity(in); finish(); ; 第 15 页 共 39 页 启动线程连接网络摄像机的相关代码涉及到移植的 jni 代码,不在课题范围内, 不做讨论。 5.5.3 3 登录界面登录界面 在登录 login.java 类中, 完成验证用户功能,将 用户填写在 edittext 中账号、密码通过网络发送到服务 器端验证,返回结果并提示是否正确。 首先,初始化视图,将各个组件对应,给登录按钮 和复选框添加监听器。 login.java: private edittext edittext_acct,edittext_psw; private string user = null,password = null; private checkbox chb_isrememberme; private button loginbtn; private inputmethodmanager imm; private view loginloading; private viewswitcher mviewswitcher; private animationdrawable loadinganimation; override protected void oncreate(bundle savedinstancestate) / todo auto-generated method stub super.oncreate(savedinstancestate); setcontentview(r.layout.login); edittext_acct = (edittext)findviewbyid(r.id.login_account); edittext_psw = (edittext)findviewbyid(r.id.login_password); 第 16 页 共 39 页 chb_isrememberme = (checkbox)findviewbyid(r.id.login_checkbox_rememberme); loginbtn = (button)findviewbyid(r.id.login_btn_login); loginbtn.setonclicklistener(listener); loginloading = (view)findviewbyid(r.id.login_loading); mviewswitcher = (viewswitcher)findviewbyid(r.id.logindialog_view_switcher); 当用户点击登录按钮时会触发绑定的监听事件:验证用户所填的内容有没 有填写完整、是否符合规范,如果通过则来到下一步,提交数据验证用户和密 码在服务端是否正确。 login.java: user = edittext_acct.gettext().tostring(); password = edittext_psw.gettext().tostring(); boolean isrememberme = chb_isrememberme.ischecked(); /判断输入 if(stringutils.isempty(user) toast.maketext(login.this, getstring(r.string.msg_login_email_null); return; if(stringutils.isempty(password) toast.maketext(login.this, getstring(r.string.r.string.msg_login_pwd_null); return; loadinganimation = (animationdrawable)loginloading.getbackground(); loadinganimation.start(); mviewswitcher.shownext(); login(user, password, isrememberme); 第 17 页 共 39 页 进人 login()方法,发送数据到服务端数据,由于 android4.0 以后不允许 在主线程进行网络连接等一些耗时的操作,因此新开启一个线程访问网络。当 返回的结果是存在的,则创建一个 user 对象,在 handler 处理器里面判断, 执行跳转动作并提示结果。 final handler handler = new handler() public void handlemessage(message msg) if(msg.what = 1) user user = (user)msg.obj; if(user != null) /提示登录成功 toast(login.this, “登陆成功!“, 0).show(); intent intent = new intent(login.this, main.class); startactivity(intent); finish(); else if(msg.what = 0) toast.maketext(login.this, “密码或用户名错误!“, 0).show(); edittext_psw.settext(“); else if(msg.what = -1) log.e(tag, msg.obj.tostring(); ; new thread() public void run() message msg = new message(); boolean islogin = false; user user = null; try appcontext ac = new appcontext(); islogin = ac.loginverify(username, password); if(islogin) msg.what = 1;/成功 第 18 页 共 39 页 user.setaccount(username); user.setpsw(password); msg.obj = user; else msg.what = 0;/失败 catch(appexception e) log.e(tag, e.getmessage(); msg.what = -1; msg.obj = user; handler.sendmessage(msg); .start(); 其中访问网络用到的工具类,通过 get 方式连接。将参数通过拼接放在 url 后面,用 httpclient 来执行 httpget 方法,当返回码为 200 时表示请求成功, 取出返回实体里面的内容。 public static inputstream httpclientget(string url, string param) throws exception stringbuilder sb = new stringbuilder(url); httpclient httpclient = new defaulthttpclient(); httpget httpget = new httpget(sb.tostring(); httpget.addheader(“content-type“, “text/html“); / httpget.addheader(“charset“, http.utf_8); / httpresponse httpresponse = httpclient.execute(httpget); 第 19 页 共 39 页 int statuscode = httpresponse.getstatusline().getstatuscode(); if (statuscode = 200) return httpresponse.getentity().getcontent(); return null; 通过工具方法将 inputstream 转换 string 类型从而取出关键字封装成对象。 public static string inputstremtostring(inputstream is) try string respose = “; bytearrayoutputstream bos = new bytearrayoutputstream(); byte buffer = new byte1024; int len = 0; while (len = is.read(buffer) != -1) bos.write(buffer, 0, len); respose = bos.tostring(); bos.close(); is.close(); return respose; catch (ioexception e) e.printstacktrace(); return null; 第 20 页 共 39 页 当程序判断用户为服务器端合法用户,程序便会进入主界面。 5.5.4 4 程序主界面程序主界面 进入主界面,可以看到来自服务端的数据,当前 的温度和湿度以及未读的信息数目。首先初始化 activity,将各个组件初始化,并将需要的组件添加 监听。标题栏除了有标题外,还有设置菜单,可以 对涉及的网络参数进行设置,用来正确的连接网络。 中间是控制安防部分,可以查看当前布防状态,同 时可以选择布防还是撤防。底部是三个选项:设备 管理、视频监控、安保检测。初始化 activity,当用 户点击带有监听器的组件时,程序会将该组件传到 onclicklistener 的内部方法,这样可以根据该组件 的 id 来区分组件,不用每个组件都写一个监听事件, 简化代码,提升效率。 main.java: private void init() framelayout_device_btn = (framelayout) findviewbyid(r.id.device_btn); . btn_menu = (imageview) findviewbyid(r.id.menu); tv_canceldefence = (button) findviewbyid(r.id.tv_canceldefence); . listener = new view.onclicklistener() override public void onclick(view v) switch (v.getid() case r.id.video_btn: intent intenttovideo = new intent(main.this, playactivity.class); 第 21 页 共 39 页 startactivity(intenttovideo); break; case r.id.security_btn: intent intenttosecurity = new intent(main.this, securitydetect.class); intenttosecurity.putextra(“isauto“, “0“); startactivity(intenttosecurity); break; case r.id.tv_putdefence: udputils.setf(datagramsocket, “1“); break; . ; framelayout_device_btn.setonclicklistener(listener); . setting.setonclicklistener(listener); 在主界面,可以完成喝多操作,完成布防与撤防,并能看到当前布防状态。请 求服务端用到的 http 工具方法: public static inputstream httpclientget(context context, string url, string param) throws exception httpclient httpclient = new defaulthttpclient(); httpclient.getparams().setparameter(coreconnectionpnames.connection_t imeout, 5000); httpclient.getparams().setparameter(coreconnectionpnames.so_timeout, 5000); 第 22 页 共 39 页 httpget httpget = new httpget(url); httpget.addheader(“content-type“, “text/html“); httpresponse httpresponse = httpclient.execute(httpget); int statuscode = httpresponse.getstatusline().getstatuscode(); if (statuscode = 200) return httpresponse.getentity().getcontent(); return null; 当程序启动到主界面是会定时向服务端发送请求数据: 此处用到的常量类: contants.java: public class constants public static final string host_name = “12:8080/smartlabserver/“; public static final string search_score_by_name = host_name + “mainservlet?method=stateinfo“; . main.java: new thread() override public void run() 第 23 页 共 39 页 message msg = new message(); try string response = httputils.httpgetstring(main.this, constants.search_score_by_name, studentname); if (stringutils.isjsonempty(response) msg.what = 5; else msg.obj = response; catch (exception e) if (e instanceof malformedurlexception) msg.what = 1; else if (e instanceof sockettimeoutexception) msg.what = 2; else if (e instanceof ioexception) msg.what = 3; else msg.what = 4; mhandler.sendmessage(msg); .start(); 下面向服务器端发送命令式的格式: 1.温湿度,布防状态,未读数量 (查询类) 格式:t|ip|port 返回:t|温度;湿度;布防状态;未读数量 (0.未布防 1.布防中) 例子:t|28

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论