《基于android平台的远程视频监控报警系统研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
分类号:TP274单位代码:10183研究生学号:2013522021密级:公开吉林大学硕士学位论文(学术学位)基于Android平台的远程视频监控报警系统研究ResearchofRemotemonitoringAlarmsystembasedonAndroidPlatform作者姓名:刘楠专业:通信与信息系统研究方向:分布式智能信息处理指导教师:陈万忠教授培养单位:通信工程学院2016年6月 未经本论文作者的书面授权,依法收存和保管本论文书面版本、电子版本的任何单位和个人,均不得对本论文的全部或部分内容进行任何形式的复制、修改、发行、出租、改编等有碍作者著作权的商业性使用(但纯学术性使用不在此限)。否则,应承担侵权的法律责任。吉林大学硕±学位论文原创性声明?i本人郑重声明:所呈交学位论文,是本人在指导教师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体己经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体。,均已在文中明确方式标明本人完全意识到本声明的法律结果由本人承担。"睾学位论文作者签名;A曰期:0!p年月^曰含I《 --------------------------------基于Android平台的远程视频监控报警系统研究--------------------------------ResearchofRemotemonitoringAlarmsystembasedonAndroidPlatform作者姓名:刘楠专业名称:通信与信息系统指导教师:陈万忠教授学位类别:工学硕士答辩日期:2016年月日 摘要基于Android平台的远程视频监控报警系统研究随着人们生活水平的提高,人们的安防意识越来越强。视频监控系统作为安防系统的一个重要组成部分,在人们的日常生活中扮演的角色越来越重。视频监控系统最初主要应用在大型会场、大型超市、拥挤的马路等公共场所,近年来,家庭安防的概念越来越被人们所接受,家用视频监控系统发展十分的迅速。随着通信技术和信息处理技术的飞速发展,基于移动平台的远程视频监控系统的应用范围正在迅速扩展。由于Android系统在目前移动智能终端操作系统中的优势,本文主要是在Android平台进行了远程视频监控系统的开发,系统能够对远程网络摄像机进行视频实时播放,同时能对监控画面中的移动目标进行检测,发现运动目标后实施报警。本文主要完成了以下几个方面的工作:(1)监控数据传输协议的对比研究在系统开发过程中,首先应对相关的理论知识进行研究,选出适合系统开发的监控数据传输协议,满足系统画质清晰、画面流畅的要求。(2)移动检测算法的对比研究与改进系统对摄像头采集得到的图像进行移动检测处理,当发现有移动目标闯入时触发相应报警机制,Android平台客户端会根据程序预先设置向特定号码发送短消息或向特定邮箱发送邮件等报警功能。本文利用改进的背景差分法对摄像头所采集得到的视频信号进行运动检测。(3)远程监控数据的解析与播放在Android智能手机上完成了远程监控摄像头拍摄监控视频的实时解析和播放,画质清晰且播放流畅,具备良好的观看体验。(4)Android报警模块的设计与实现当系统检测到监控区域有运动物体时,客户端程序会触发相应的报警动作引起监控者的注意。报警功能的实现方式可由用户自己设定。关键词:远程监控,移动检测,邮件报警,Android平台I ABSTRACTResearchofRemotemonitoringAlarmsystembasedonAndroidPlatformWiththeimprovementofpeople'slivingstandards,people'ssecurityawarenessisgrowing.Videosurveillancesystemasanimportantpartofthesecuritysysteminpeople'sdailylivesbecomesmoreandmorepopular.Videosurveillancesystemwasoriginallymainlyusedinlargevenues,supermarkets,crowdedroadsandotherpublicplacesoverthepastyears.Withtheconceptofhomesecurityismoreandmoreacceptedbypeople,homevideosurveillancesystemisdevelopingveryrapidly.Withtherapiddevelopmentofcommunicationtechnologyandinformationprocessingtechnology,application-basedremotevideosurveillancesystemformobileplatformsisrapidlyexpanding.Asandroidsystemhavemanyadvantagesamongthecurrentmobileintelligentterminaloperatingsystem,wedeveloptheremotemonitoringalarmsystembasedonAndroidplatforminthispaper.Thesystemcanpalythemonitoringsceneintheremotenetworkcamera,atthesametime,thesystemhasmotiondetectionfunction..Thispapermainlycompletedtheworkofthefollowingaspects:(1)ComparativeStudyofmonitoringdatatransferprotocolInthesystemdevelopmentprocess,wefirstanalyzesomerelevanttheoreticalknowledgeandselectmonitoringdatatransmissionprotocoltomeetthesystemrequirement.(2)ComparativeStudyandImprovementofmotiondetectionalgorithmThesystemcantakemovedetectionwiththemonitorscreencapturedbythenetworkcamera.Ifthereisamovingtargetdetected,thesystemcansendashortmessagetothetelephonenumberpre-setorsendanemailtothepre-setmailbox.Weuseimprovedbackgroundsubtractionmethodtodetectthemovingtargetinthispaper.(3)AnalyticalandpalybakofremotemonitoringdataThesystemdevelopedinthispapercananalyzeandplaytheremotemonitoringdatainrealtime.Theclarityofthemonitoringpicturecanmeetusersdemand.PeopleIII usingthissystemcanhaveagoodviewingexperience.(4)DesignandimplementationofAndroidalarmmoduleThesystemhasmovedetectionfunction,ifamovingtargetisdetectedinthemonitoringscreen,thesystemdevelopedontheAndroidplatformwillsendashortmessageoremailtothepre-setnumber.Thealarmmodecanbesetbythesystemusersthemselves.Keywords:Remotemonitoring,MotionDetection,EmailAlert,AndroidPlatformIV 目录第1章绪论..................................................................................................11.1研究背景和意义...................................................................................11.2国内外研究现状和发展趋势..............................................................21.2.1国内外研究现状..........................................................................21.2.2视频监控系统发展趋势..............................................................31.2.3视频监控系统存在的问题..........................................................41.3主要内容和结构安排...........................................................................41.3.1本文主要工作内容......................................................................41.3.2本文结构安排...............................................................................6第2章系统关键技术研究与总体设计........................................................72.1Android系统简介.................................................................................72.1.1Android发展史............................................................................72.1.2Android系统架构........................................................................82.1.3Android四大组件......................................................................102.2流媒体传输协议.................................................................................122.2.1实时传输协议............................................................................122.2.2实时传输控制协议....................................................................132.3视频压缩技术.....................................................................................132.3.1H.264标准..................................................................................142.3.2MPEG-4标准.............................................................................142.4移动目标检测算法.............................................................................152.4.1光流法.........................................................................................162.4.2帧差法.........................................................................................162.4.3背景差法.....................................................................................162.5系统需求分析.....................................................................................172.5.1硬件需求分析与配置................................................................172.5.2系统软件功能需求分析............................................................18V 2.5.3系统软件性能需求分析............................................................182.6系统功能模块划分和总体设计........................................................192.6.1客户端功能模块设计................................................................202.6.2系统工作流程............................................................................212.6.3系统数据流向............................................................................222.7本章小结.............................................................................................23第3章基于Android平台的视频监控报警系统设计与实现.................253.1Android开发环境搭建......................................................................253.1.1相关软件的下载........................................................................253.1.2Android开发环境搭建..............................................................263.1.3配置AndroidSDK的环境变量...............................................273.2系统界面设计.....................................................................................283.2.1Android布局简介......................................................................283.2.2系统欢迎界面的设计与实现...................................................293.2.3系统主页面设计与实现............................................................293.2.4系统设置页面的设计与实现...................................................303.3远程监控数据解析.............................................................................313.3.1Android平台视频解析控件.....................................................313.3.2远程监控数据解析流程..........................................................323.4移动检测算法的实现........................................................................333.4.1Android+OpenCV开发环境搭建.............................................343.4.2移动检测算法的实施................................................................363.4.3移动检测算法分析....................................................................413.5报警功能的实现.................................................................................423.6本章小结.............................................................................................43第4章系统安装与测试...............................................................................454.1系统集成与发布.................................................................................454.2系统启动测试.....................................................................................464.2.1系统安装测试............................................................................46VI 4.2.2视频监控功能测试....................................................................484.2.3邮件报警功能测试....................................................................494.2.4短信报警功能测试....................................................................494.3系统测试结果分析.............................................................................504.4本章小结.............................................................................................51第5章总结与展望.......................................................................................535.1本文工作总结.....................................................................................535.2下一步工作展望.................................................................................54参考文献............................................................................................................55作者简介............................................................................................................59致谢................................................................................................................61VII 第1章绪论1.1研究背景和意义随着人们生活水平的提高,人们的安防意识越来越强。视频监控系统作为安防系统的一个重要组成部分,在人们的日常生活中扮演的角色越来越重。视频监控系统最初主要应用在大型会场、大型超市、拥挤的马路等公共场所,近年来,家庭安防的概念越来越被人们所接受,家用视频监控系统发展十分的迅速[1-2]。随着互联网技术和信息通信技术的发展,远程监控系统的应用得到极大普及。由于互联网、移动通信技术的发展,人们通过随身携带的智能手机、平板等设备可以随时查看远程被监控场景的状况。传统的视频监控系统一般采用固定摄像机对固定区域进行信号采集,然后通过Internet网络或者专用的视频传输线将监控画面传送到管理中心,由系统管理员或安防人员实时查看监控区域的场景。传统视频监控系统可分为模拟监控系统和数字监控系统,模拟监控系统中信号的传输采用专用视频线,缺点是传输距离有限,数字监控系统采用Internet网络传输监控数据,传输距离不受限制。远程视频监控系统大多属于数字监控系统。基于智能移动终端设备的远程视频监控系统可以通过用户随着携带的智能手机等设备实现对远程监控现场的实时掌控,观看远程监控视频的前提是智能终端设备必须以WIFI或3G/4G方式联网。基于移动终端的远程视频监控系统可以让用户在任何时候、任何地点对被监控区域进行实时画面监视,因此它极大地扩展了传统视频监控系统的应用范围,它的推广和使用在现实生活中具备重要的意义。目前,在智能移动终端领域主要采用的操作系统主要有Android、IOS和WindowsPhone,根据相关统计报告,在这三种操作系统中,Android系统的市场占有率最大,达到四分之三以上,并且该占用率仍在快速增长。Android系统为美国Google公司开发,由开发手机联盟组织负责维护和更新,目前已成为用户人数最多的智能手机操作系统,在智能手机操作系统领域占据无可替代的位置。Android智能手机操作系统为基于Linux内核的完全开放系统,其源码完全公开,任何组织和个人都可以对其进行完善和更新,在该平台上进行应用程序的开发不会受到版权纠纷的影响,这也成为Android操作系统上应用程序种类繁多的根本原因之一。Android智能操作系统具备开放的系统架构和统一的标准函数接口供1 程序开发者使用,因此受到大量程序开发者的喜爱。基于Android平台具备良好的用户基础和用户体验和上述诸多优势,因此本文所述的远程视频监控报警系统将在Android智能手机操作系统上开发。1.2国内外研究现状和发展趋势1.2.1国内外研究现状国外对视频监控系统的研究起步较早,截至到目前,已经取得了丰厚的研究成果。由于国外无线网络覆盖范围较广,且宽带费用较低,也为视频监控系统的迅速发展提供了条件[3-5]。国外比较著名的视频监控设备供应商主要有美国的AT&T,即美国电话电报公司,英国的BT等。美国AT&T的所开发的视频监控系统不仅仅只用在政府等企事业单位,在家庭安防领域也得到了广泛的应用。它所开发的视频监控系统支持远程报警功能,为使用者提供了极大的便利。英国电信公司利用自己公司的优势,为用户提供可用于远程视频监控的智能网关,同时也推出了自己公司的远程视频监控产品,在人们家庭生活、办公交通等领域均得到了广泛的应用和推广。除了这两家公司之外,与之类似的国外远程视频监控产品或方案提供商还有法国的电信公司的LiveZoom、日本的NTTdocomo等[6-8]。国内对视频监控系统的研究在国内还处于刚刚起步阶段,一些高校和相关研究单位正在积极开展这方面的研究工作,与西方发达国家相比,我国的视频监控系统仍比较落后,存在较大的成长空间。目前,国内这方面的研究工作主要涉及以下几个方面[9]:(1)基于GPRS网络的远程监控系统GPRS网络具有实时在线、使用便捷的特点,最初国内的很多研究者对基于GPRS网络的远程监控系统进行了深入的研究和探索。由于视频监控系统需要传输监控摄像头拍摄的监控画面,因此需要传输大量的数据,而GPRS网络是靠网络流量进行计费的,那么利用GPRS网络进行视频监控时,会产生大量的流量费用,从而使视频监控系统的整体使用成本增加。(2)基于CAN总线和Internet的监控系统利用CAN总线组成监控局域网,然后再整体接入Internet,将CAN总线和Internet二者结合起来形成远程视频监控系统能够解决基于GPRS网络的视频监控系统的经济费用高的问题。由于CAN总线组网具备网络稳定的特点,因此这种2 方式组成的监控系统具有较强的可靠性。但是由于CAN总线网络采用特定视频传输线进行数据的传输,因此其传输距离和布线范围容易受到环境的影响,在辐射严重、环境恶劣的区域使用效果较差。(3)基于ARM芯片的嵌入式监控系统嵌入式视频监控系统采用ARM、DSP芯片等微控制器作为视频信号采集的服务器,视频信号经过采集之后,经过适当的压缩、编码上传至视频服务中心,视频服务中心通过互联网与各个视频监控客户端相连,视频监控客户端通过网络调取服务中心的监控数据。这种方法由于借用了第三方芯片作为视频中转的平台,增加了视频监控系统的复杂度,由于各个厂家生产的芯片接口不一,因此降低了系统原有的兼容性。随着通信技术的发展,无线网络和3G/4G网络的覆盖范围越来越广,便携式智能设备越来越普及,远程视频监控系统正逐步向移动平台扩展。随着Android、IOS和WindowsPhone智能手机操作系统的推广,程序开发者轻而易举就可以在这些系统上进行应用软件的开发,视频监控系统正逐步向移动平台过渡,即基于便携式智能终端设备的远程视频监控系统的应用正逐步推广普及。目前,国内的三大运营商都推出了自己的视频监控品牌,如中国电信的“全球眼”、中国联通的“宽视界”等[10]。国内一些科技公司如海康威视、浙江大华科技等都进行了相关视频监控设备的研发,并取得了一定的进展,如华科自主开发的监控品牌“随身眼”,就是为家庭、商铺等生活场所特制的安防产品[11-12]。1.2.2视频监控系统发展趋势未来的视频监控系统的发展主要具备以下趋势[13]:(1)专业化:视频监控系统在各行各业中都有应用,不同专业对视频监控系统的参数如画面清晰度、传输速度和画面延时等要求不同,因此随着人们对不同行业特征研究的深入,未来的视频监控系统应向适应不同行业的专业化方向发展,尽量满足不同行业对监控系统的要求[14]。(2)模块化:随着人们对监控系统需求的提高,视频监控系统已不仅仅是单独的监控系统,应同时具备报警、高级管理等功能,因此这些额外的功能必须以模块化的形式存在,便于用户集成和扩展。(3)高清化:随着图像处理和网络通信技术的迅猛发展,以及人们生活水平的改善,其对视频监控系统画质的要求越来越高,未来视频监控系统应为使用者3 提供高清晰的监控画面,以改善人们的观看体验,即未来的视频监控系统必然会向高清化方向发展。1.2.3视频监控系统存在的问题视频监控系统发展迅速,目前广泛应用的为移动视频监控系统,这些系统大多基于网络摄像机,利用网络摄像机的自动报警功能实现系统的报警提示,该种方法具有使用便捷、操作简单的特点,但仅仅针对具备自动报警功能的网络摄像机才适用,对于不具备自动报警功能的低端网络摄像机,则无法完成系统的报警功能。基于此问题,本文重点开发一套基于Android平台的移动视频监控报警系统,与其它系统不同的是该系统的报警检测功能在客户端Android平台上实现,对不具备自动报警功能的低端网络摄像机仍然适用,因此大大扩展了移动视频监控报警系统的应用范围。1.3主要内容和结构安排1.3.1本文主要工作内容在本文中,主要完成了一套在Android智能手机操作系统上使用的远程视频监控报警系统,通过该系统,用户利用Android智能手机可以对远程监控画面进行实时监视和报警。安装该系统的Android智能手机通过WIFI网络或3G/4G移动网络对远程网络摄像机拍摄的视频进行远程监控,同时能够对监控画面进行运动检测,当发现有运动目标出现或物体闯入监控区域时,系统自动向预先设置好的手机或邮箱进行报警提醒,同时将监控画面传输至设置好的手机或邮箱中。本文主要完成了以下几个方面的工作:(1)监控数据传输协议的对比研究在系统开发过程中,首先应对相关的理论知识进行研究,从而选出适合系统开发的监控数据传输协议,以满足系统画质清晰、画面流畅的要求,满足用户对远程监控画面能够进行实时观看的要求。(2)移动检测算法的对比研究与改进系统对摄像头采集得到的图像进行移动检测处理,当发现有移动目标闯入时触发相应报警机制,Android平台客户端会根据程序预先设置选择终端响铃、向4 特定号码发送短消息或向特定邮箱发送邮件等报警功能。在视频监控系统中,监控摄像头与监控场景之间的相对位置有以下两种情况:一是二者之间无相对运动,二是二者之间存在相对运动,当监控摄像头与监控场景之间存在相对运动时,其运动目标检测相对复杂,本文仅讨论监控摄像头与监控场景之间无相对运动的情况[15]。当监控摄像头与监控场景之间无相对运动时,移动目标的检测算法通常有光流法、帧差法和背景差法。光流法是根据运动目标的速度场进行判断的,帧差法和背景差法是通过视频帧进行差分判断的。当监控场景中存在运动目标时,监控视频的当前帧和以前的帧图像之间就会有变化,对二者做差分,得出两帧之间的不同像素,然后将其与设定的阈值进行比较,从而得出监控场景中是否存在运动目标。帧差法和背景差法都是对视频帧进行做差,两者不同的是做差分的视频帧。帧差法每次都是将当前帧与上一视频帧进行差分,因此帧差法也称为相邻帧差法,而背景差法则是将当前帧与背景帧进行差分。相邻帧差法可以适应不同的动态环境,具有较好的稳定性,但是如果运动目标移动十分缓慢,即两相邻帧之间的变化很小,当其差分结果小于设定阈值时,就会产生误判[16]。背景差分法中当前帧不直接与上一视频帧做差分,而是每次均与设定的背景帧做差分,这种算法可以解决相邻帧差法的不足,但同时也存在缺陷,如背景的如何选择和更新等[17]。本文在经过对光流法、帧差法和背景差分法的对比分析后,最终采用帧差法进行运动目标的检测,即本文最终将采用帧差法对摄像头所采集得到的视频信号进行运动检测。(3)远程监控数据的解析与播放在Android智能手机上完成了远程监控摄像头拍摄监控视频的实时解析和播放,画质清晰且播放流畅,具备良好的观看体验。(4)Android报警模块的设计与实现当服务器端检测到监控区域有运动物体时,会向客户端Android系统智能手机发送报警信号,客户端程序接收到报警信号后,触发相应的报警动作引起监控者的注意。报警功能的实现方式可由用户自己设定,可以设置为手机响铃/震动、向指定号码发送短消息/打电话、向指定邮箱发送邮件等。报警模块的功能主要是给用户以提醒,在本文开发过程中,主要利用了Android系统的Thread类,在系统后台不间断地对接收到的监控画面进行移动目标检测,当检测到存在移动目标时,通过Intent启动相应的报警处置程序,即向5 特定邮箱发送邮件或向特定手机号码发送短信。1.3.2本文结构安排根据全文主要工作,本文将用五个章节进行系统的设计和开发,各个章节具体内容如下:第一章为全文的绪论部分,首先介绍了本文的研究背景和意义,主要包括视频监控系统的国内外现状、发展趋势和目前存在的问题等,然后对全文主要工作内容进行了简单概括。第二章首先对本文涉及的主要关键技术和概念进行了介绍和分析,主要包括Android系统的相关讲解、通信协议的分析、视频编码的介绍和对移动检测算法的研究等。然后分析了系统的总体需求,完成了系统的需求分析和总体方案设计,对系统的整个工作流程进行了简单描述。第三章为文章的具体实施环节,介绍了Android开发环境的搭建和基于Android平台的远程视频监控系统的具体设计和实现,主要包含远程监控数据的实时解析和播放、运动检测算法实现和报警模块的设计和开发。第四章为文章的集成测试环节,介绍了系统测试与软件打包及安装方法。第五章总结了本文所做的工作,并对下一步的计划做出了展望。6 第2章系统关键技术研究与总体设计2.1Android系统简介2.1.1Android发展史Android是一种以Linux为内核的移动终端智能操作系统,主要用于智能手机、平板电脑等便携式设备,其最初由Google公司负责开发,后来由开放手机联盟负责维护和更新。目前,在国内使用最广的智能手机操作系统主要有谷歌的Android、苹果的IOS和微软的WindowsPhone,与其它两种操作系统相比,Android最大的特点就是开源的[18]。美国人安迪.罗宾最先提出了Android的概念,Android起初的意思为机器人,后来被Google收购,从而建立开放手机联盟,共同维护这个开源的智能手机操作系统[19]。从2008年发布的第一版操作系统Android1.0开始,截止到目前,其已经占据了全球智能手机市场的3/4以上[20]。Android系统采用Linux为系统内核,利用Java语言在Eclipse集成环境中进行应用程序的开发,使用Google公司提供的统一API接口。与其它智能手机操作系统不同的是,Android系统具备以下几个独有的特点[21]:(1)开源性:Android系统是一个完全开放的系统,所有源码对外界是公开的,其最初的设计目的就是提供一个开放的统一的智能手机操作系统平台。在其上进行应用程序的开发和编写,完全不用申请开放版权问题,因此越来越多的硬件厂家加入到Android平台上来。(2)公平性:在Android系统上用户可以根据自己的喜好对所有应用程序进行卸载或删除,除了系统运行必备的关键模块外,所有应用程序之间是公平的,用户具备绝对的选择权。(3)互通性:由于Android系统的开发人员均利用了Google公司提供的统一API接口,因此各应用程序之间可以相互调用,程序开发人员可以根据自己的需要将系统代码加入到自己的应用程序中,从而完成各应用程序之间的相互关联互通。(4)方便性:Android系统为广大程序开发者提供了大量的应用程序模块库,7 如谷歌地图模块、图形界面处理模块等,开发者完全可以直接在这些模块上进行相关应用程序的开发。由于Android系统采用较为成熟的Java编程语言进行程序开发,因此便于开发者入门和掌握。(5)超大的市场应用人群:目前Android系统在智能手机、平台操作系统中的市场占有率已远远超过了75%[22],并仍呈现继续上升的趋势。2.1.2Android系统架构Android系统是一种以Linux为内核的智能手机操作系统,其不仅可以安装在智能手机上,也可以安装在平板电脑,GPS导航等便携式智能设备上。Android系统按封装程度的强弱从内至外大致可分为五个层次,最内层为Linux核心层,然后是应用程序框架层,接着是运行环境层和函数库层,最上面为用户最熟悉的应用程序层[23],其系统架构可用图2.1进行表示。图2.1Android系统整体架构图(1)应用程序层用户通过各种各样的应用来满足各种需求,应用层是用户最直观接触的层次,也是影响用户体验的重要环节。应用程序层的各个应用一般均由一个放置在系统主页面的图标,用户单击该图标时,就会启动相应的应用程序。(2)应用程序框架层应用程序框架层其实就是Android系统的API接口,开发者利用这些API接口便可以完成整个应用程序的开发。应用程序框架层主要包含以下几个部分:用户界面(ViewSystem):用户界面负责提供系统多样化的UI,用户界面一8 般由很多按钮、文本框、列表框等组成。活动管理器(ActivityManager):活动管理器负责管理应用程序的各个Activity的运行状态,同时用于保存各个Activity的回溯,当用户按下返回按钮时,应用程序会返回用户之前打开的该应用程序的上一个Activity,该功能的实现就是由活动管理器实现的。内容提供器(ContentProviders):内容提供器的主要功能是实现各应用程序之间数据的共享,各应用程序之间有时需要相互调用数据,而数据的共享功能正是由内容提供器完成的。资源管理器(ResourceManager):资源管理器用来管理系统资源信息,比如应用程序保存的字符串、应用程序背景图片、应用程序的页面显示信息等。信息管理器(NotificationManager):信息管理器主要负责在系统状态栏显示相关信息,包括天气信息、电池电量信息、短信提醒、电话提醒、便签提醒、闹钟状态等,主要是给用户通知或提醒。(3)运行环境层Android运行环境层可分成Android核心函数库与Dalvik虚拟机。Android核心函数库所提供的功能大部分与Sun公司的Java核心库函数功能相同。一般编写好的Java程序编译后会产生class文件(或称Bytecode),而且由JVM(JavaVirtualMachine)运行;但是Android不使用JVM,而改用Google自行研发的Dalvik虚拟机,所运行的文件则是dex文件(DalvikExecutable),而非class文件。在Dalvik虚拟机运行dex文件之前,必须使用Android开发工具(AndroidSDK)内的dx工具将class文件转成dex文件,然后交给Dalvik虚拟机运行,如图2.2所示。dex文件比class文件更精简、运行性能更佳,而且更省电,可以说是为了移动设备量身打造的[24]。由前述可知,开发者仍需要以Java程序语言编写Android应用程序,而最后dx工具会将java文件产生的class文件转成dex文件[25]。图2.2Android应用开发流程图(4)函数库层Android有一个内部函数库,此函数库主要以C/C++编写而成。Android应用9 程序开发人员并非直接使用此函数库,而是通过更上层的应用程序框架层来使用此函数库功能,所以有人称此类函数库为原生函数库(NativeLibraries)。此函数库依照功能又可细分成各种类型的函数库,以下列出比较重要的函数库[26]。MediaFramework(媒体函数库):此函数库让Android可以播放与录制许多常见的音频与视频文件,支持的文件类型包括MPEG4、H.264、MP3、AAC、AMR、JPG与PNG等[27]。SurfaceManager(外观管理函数库):管理图形界面的操作与2D、3D图层的显示。WebKit:Android内置的浏览器,其引擎就是WebKit,与Google的Chrome、Apple的Safari浏览器引擎相同。SGL:专门处理Android的2D图形。OpenGL|ES:适合嵌入式系统使用的3D图形函数库,此函数库实现OpenGLES1.0版以上的功能。如果Android手机本身有3D硬件加速器,程序会直接使用该硬件加速器,否则会使用软件加速功能[28]。SQLite:属轻量级但功能齐全的关系数据库引擎,方便让Android所有的应用程序访问数据。(5)Linux核心层Android系统的核心为Linux,具体版本为Linux2.6版本。Android系统所有的系统服务均是由其核心Linux为其提供的,因此可以说Linux是Android系统服务的最终提供者。Linux核心为Android系统提供的系统服务主要有安全性管理(Security)、内存管理(MemoryManagement)、进程管理(ProcessManagement)、网络栈(NetworkStack)、驱动模型(DriverModel)、电源管理(PowerManagement)等[29]。2.1.3Android四大组件在Android系统上进行应用程序的开发,离不开四个组件的使用,Android系统上运行的任何应用程序,均是由四大组件相互配合完成设计的功能的[30]。Android系统四大组件分别为Activity、Service、ContentProvider和BroadcastReceiver,下面将分别对每一个组件进行简要介绍。(1)Activity10 Activity一般均有相对应的布局文件,也就是说一般情况下,一个活动对应一个布局文件,而一个布局文件就是应用程序的一个屏幕画面,在Activity对应的布局文件中放入需要的控件,并设置相应的监听函数,当用户点击相应的控件时,触发相应的函数功能,从而完成应用程序与用户的交互。一个Activity对应一个屏幕,当屏幕需要切换时,Activity就会调用启动另外一个Activity,Activity之间的相互启动和调用是由Intent完成的,即Intent是Activity之间相互通信的信使。在用Intent启动另外一个Activity时,原始Activity会发出一个Intent,该Intent应包含相应的参数,分别为动作的类型和相对应的数据参数。通过Intent的传递,Andrid应用程序可以完成多个屏幕画面的切换和来回展示,同时也可以将需要的数据信息传递给另外的屏幕画面,如在一个用户界面中输入用户名称和密码,点击登陆后在下一个页面中显示出在第一个页面输入的用户名称及相关欢迎词等[31]。通过对AndroidManifest进行配置,可以设置Android应用程序默认启动Activity,应用程序启动后首先启动的Activity相对应的布局文件为该应用程序的首页面。(2)Service与Activity组件不同,Service是没有用户界面的组件,即它是在应用程序后台运行的,不接受用户的输入和操作,与用户无直接的交互,通常用来开发后台运行程序,比如Android系统的音乐播放器,当用户关闭音乐播放器该应用程序对应的主页面后,一般希望音乐还在后台继续播放,因为用户听音乐,无需一直盯着音乐播放器的页面,用户可以一般听音乐,一边玩别的应用程序,因此就可以在音乐播放器的Activity中设置一个相对应的Service,当用户打开音乐播放器时,该Activity启动响应的Service,当Activity退出后,Service仍在后台运行,音乐还在后台保持播放状态[32]。Service的生命周期比Activity长,Service不会自己启动,必须通过相对应的Activity启动它,Service的启动有两种,可以通过Context.startService()启动Service,也可以通过Context.bindService()来启动Service。前者为启动一个新的Service,其启动的Service会一直后台运行,直至该Service运行结束。后者为连接到一个Service,当该Service未运行时,其与前者的功能相同,当该Service已经在运行状态时,后者可以进行相关参数的传递,比如音乐播放的暂停、重复等。(3)ContentProviderAndroid系统各应用程序之间有时需要共享数据,比如编写短消息时需要添11 加手机联系人数据、微信添加好友时也需要读取手机联系人数据,为了实现该功能,Android系统为程序开发者提供了ContentProvider组件。ContentProvider与ContentResolver成对出现,ContentProvider负责共享应用程序的数据,ContentResolver负责读取或操作由ContentProvider提供的数据。该组件可以使Android系统的多个应用程序共享某些关键数据,为系统提供了一致的数据处理格式。(4)BroadcastReceiver在进行Android应用程序开发时,有些应用程序需要接受外部事件从而做出相应的响应,该功能的实现由Android系统的BroadcastReceiver来完成[33]。与Service相同,BroadcastReceiver也没有用户界面,但当它接受到外部事件,需要应用程序做出响应时,可以启动相应的Activity或Service。BroadcastReceiver还可以通过NotificationManager提醒用户,对用户发出提醒的方式有很多,如手机震动、响铃、闪灯等,程序开发者可以根据实际需要进行选择。BroadcastReceiver按发送形式的不同可分为普通BroadcastReceiver、有序BroadcastReceiver和异步BroadcastReceiver。有序BroadcastReceiver在发送过程中需要设置优先级,级别数值可以为-1000到1000之间的任意整数,级别越高,优先级越高,不同优先级的有序BroadcastReceiver,优先级高的接收到的最早,同级别有序BroadcastReceiver之间接收的先后顺序是随机的[34]。2.2流媒体传输协议传统方式下的音视频都是在下载完成之后才可以播放,流媒体技术的出现,很好的解决了这一弊端,使得用户可以在下载的同时进行播放,从而大大降低了用户的等待时间,极大地改善了用户体验[35]。由于流媒体技术的实时性较好,因此将它用在视频监控系统中是十分恰当的,也正因如此,流媒体技术在视频监控系统中已经得到了广泛的使用。2.2.1实时传输协议实时传输协议英文全称为Real-timeTransportProtocol,英文缩写为RTP,是应用在OSI七层网络模型中第七层应用层的网络协议。RTP协议的主要应用对象为多媒体数据流,其为多媒体数据流的网络传输制定了标准格式[36]。RTP协议本身并不能提供多媒体数据包的按时有效发送,在RTP数据包中含有数据的序列12 号,因此在发送过程中数据包并不能保证有序发送,也无法保证接收方有序接收,它允许接收方在接收到数据包后,按照数据包的序列号进行重新排序,从而保证多媒体数据流传输的可靠性和实时性。利用RTP协议进行多媒体数据传输时,发送端以固定的速率发送多媒体数据流,接收端以同样的速率接收多媒体数据流,从而实现音视频多媒体的实时播放,由于在播放过程中,并没有完成整个音视频文件的下载,因此在不向服务器重新发起请求时无法实现重复播放,而利用其它协议进行音视频播放时,由于在播放前,已经完成了整个文件的下载,所以可以实现音视频的重复播放。2.2.2实时传输控制协议实时传输控制协议英文全称为Real-timeTransportControlProtocol,英文缩写为RTCP,与RTP协议相同,也是应用在OSI七层网络模型中第七层应用层的网络协议[37]。RTCP与RTP协议相结合,共同传输多媒体数据包,在具体传输过程中,RTP负责具体数据流的传输,RTCP负责相关控制信息的传输,控制信息和多媒体数据一起打包发送。RTCP协议为RTP协议的有效传输提供保障和反馈信息,同时RTCP协议负责统计相关多媒体连接的信息。在实际使用过程中,RTCP和RTP协议往往是配套使用的,可以利用RTCP协议提升RTP协议的服务质量,RTCP不仅可以使用RTP协议来传输多媒体数据,还可以使用其它传输层的网络协议如TCP、UDP等进行多媒体数据的传递,因此它具备良好的可扩展性,是一种与http协议很相似的应用层网络协议。2.3视频压缩技术视频信息包含大量的视频图像信息,因此含有大量的视频数据,如果直接在网络上进行传输这么大的数据量,则会需要占用很大的网络带宽,通常情况下,视频信息在网络传输前一般都需要进行视频压缩处理。目前,国际标准组织制定了大量的关于视频压缩技术的标准,其中应用最广、编码效率较高、得到社会各界普遍认可的视频图像压缩标准主要有H..261、H.263、H.264标准和MPEG-1、MPEG-2、MPEG-4标准,其中H系列标准由国际电信联盟制定,MPEG系列标准由国际标准化组织制定。这两项标准的推出,极大地促进了视频编码技术的发展。目前,在视频监控领域,广泛采用的视频压缩编码大13 多采用MPEG-4或H.264标准,利用视频编码压缩技术,可以极大地缩小视频信息传递时所需的网络带宽,提高网络传输速率。2.3.1H.264标准H.264标准在编码结构上进行了层次划分,可分为视频编码层和网络信息提取层,视频编码层主要负责视频信息的编码,其主要功能是寻找合适的编码方式,获得最高的编码效率。网络信息提取层主要负责收集视频数据的网络信息,如编码头信息、编码端网络传输信息等,它将收集到的视频数据信息准确传递给相关传输层协议,使得视频编码信息得以高效保质的在网络中传输。与其它编码技术相比,H.264编码非常适合移动视频监控领域,其主要特点包含以下几个方面:(1)高压缩比:H.264编码技术可以获得较高的视频信息压缩比,从而极大地降低视频信息网络传输时所占用的带宽。(2)误码率低:利用H.264编码技术进行视频压缩,在网络传输时可以获得较低的网络传输误码率。(3)图像质量高:利用该压缩技术时可以获得较清晰的视频图像,同时该编码技术具备较强的网络适应能力,能够适应复杂网络环境下视频信息压缩编码和网络传输。为了适应不同应用场景的需要,H.264从视频分辨率和比特率方面进行了四个不同等级的划分,分别为基本等级、主要等级、扩展等级和高级等级,每种等级对应不同的应用场合,其视频分辨率也不同,从低到高分别为公用分辨率格式和高清数字电视分辨率格式。H.264压缩编码并不是十全十美的,其同样存在缺陷吗,由于它提供了高压缩率和清晰的图像,所以其对视频解码器的要求很高,一般配置较低的普通解码器无法满足该压缩编码的要求,只有在硬件设备能够实现H.264解码的前提下,才能很好的发挥出H.264压缩编码技术的优秀性能。2.3.2MPEG-4标准MPEG系列标准中的MPEG-1与MPEG-2均可以处理视频中的所有帧数据,MPEG系列标准中MPEG-4标准于1998年10月被提出以来,成为MPEG系列所有标准中应用最广的标准之一。它的出现,目的是为了与国际视频压缩编码接轨,目前已成为国际上视频压缩编码的通用标准之一[38]。MPEG-4与其它同系列标准14 相比,主要具备以下几个特性:(1)可以适应更低的比特率MEFG系列标准中MPEG-1和MPEG-2对编码比特率的要求较高,一般当编码比特率大于1Mbps时,应用MPEG-1和MPEG-2标准的效果较好。当编码比特率较低时,比如当比特率低于10kbps或更低时,MPEG-1和MPEG-2标准不能有效的进行视频压缩编码,从而无法发挥视频压缩编码应有的功效,而MPEG-4标准在较低的编码比特率下,仍能很好的进行视频压缩编码,因此MPEG-4对低比特率压缩编码具备很强的适应能力。(2)独特的编码方式与其它MPEG系列标准不同的是,MPEG-4标准将每个视频场景分成多个视频对象,支持对每个视频对象进行编码,而其它同系列编码标准则将编码场景作为一系列不同的矩形帧进行编码。MPSG-4编码标准支持面向对象的编码方式,对视频帧序列中的每一个视频对象进行单独编码。提高了编码场景的交互性,提高了系统的编码效率,为视频编码开拓了一个新的研究方向。(3)编码模式的提升MPEG-1标准由于没有引入“工具集”的概念,其编码的灵活性受到严重制约,MPEG-2标准在此基础上引入了“工具集”的相关概念,从而使得其编码灵活性得到大幅提高。MPEG-2标准下的工具集是基于相关配置的标准工具集,在MPEG-4标准中,对此“工具集”进行了扩展和优化,使得MPEG-4标准朝着更灵活的方向进步。2.4移动目标检测算法移动目标检测的目的是为了有效提取视频图像中的变化部分,其是智能图像处理的基本组成部分,是人工智能和机器视觉发展的基础[39]。在视频监控系统中进行移动目标检测是安防系统的一个重要特征,利用移动目标检测技术可以大大提高被监控区域的安全性,在被监控区域一旦出现移动目标,系统可以有选择地进行不同方式的报警,以提醒管理人及时查看,排除安全隐患。目前广泛采用的移动目标检测算法主要有光流法、背景差法和帧差法,本文中将对这三种方法分别作简单介绍,并进行对比分析,最后选定本文所采用的移动目标检测算法。15 2.4.1光流法光流法最初是由美国学者提出的,它通过被检测物体的像素点在运动时产生的速度场进行检测,该方法体现了物体的运动信息和形态特征,在摄像头运动时仍可检测出识别对象,缺点是算法耗时较长,在实时监控系统中实现较困难。2.4.2帧差法帧差法又称图像序列差分法,它利用相邻两帧之间的差来判断是否存在运动目标。该方法的最简单实现形式为对相邻的两帧图像进行差分,然后将所得到的结果与阈值函数进行对比,如果差分结果大于阈值函数,则二值差分图像值为1,否则为0,具体实现原理可用下式进行表示[40]:1iff(x,y,t)f(x,y,t)T12fd(x,y,t1,t2).........................(2.1)0其它其中阈值T为根据经验选定的固定值,当差分结果大于T时,认为存在移动目标,当差分结果小于T时,认为不存在运动目标。帧差法由于每次均取相邻的视频帧进行做差,因此在实际计算过程中该方法对光线变化的敏感性较低,不易受到气候条件变化的影响。计算过程比较简单,算法的整体耗时较短,有利于在便携式智能终端上实现,该方法存在的问题就是不能有效分割出运动目标,只能检测到目标移动。2.4.3背景差法视频监控系统中所采用摄像机大多为固定摄像机,背景较固定,非常适合采用背景差法进行运动目标的检测。背景差法的核心思想是将当前帧与背景帧进行差分,将差分结果与设定的阈值函数进行比较,若差分结果大于阈值函数,则判断存在运动物体,当差分结果小于阈值函数时,则认为不存在运动目标。背景差分法可以有效地分割出完成的运动目标,但其存在的问题就是对光纤变化的敏感性较高,光照的变化会影响识别结果的准确率,同时如何更新算法的背景帧也是一个值得深究的问题,该方法由于选定了固定帧作为背景帧,因此不适合用于监控摄像机与监控场景之间存在相对运动的情况[41]。该算法背景的选取通常有两种常见方式,一种为选择视频的第一帧作为背景图像,然后每一帧均与该帧做差并将差分结果与阈值函数对比,另一种为选择视频第一帧作为背景图,将当前帧与16 背景帧做差分,若差分结果大于阈值时,认为有运动目标,并将当前帧作为新的背景帧,即背景更新算法。2.5系统需求分析目前国内的视频监控系统种类繁多,但经过调查发现,市场主流的远程视频监控系统普遍存在以下问题[42-43]:(1)系统造价昂贵,大多针对企业用户,不适合个人用户使用。(2)基于Internet有线网络进行数据传输,使得用户能够使用的范围受到极大地限制。(3)扩展性差,系统大多基于自有平台,开放互联性差,用户无法根据实际需求进行个性化的定制。(4)大多远程视频监控系统均采用带有自动报警功能的网络摄像机,运动目标检测或入侵检测等算法的实现均在网络摄像机上完成,然后再向远程客户端进行报警提示。对于不具备自动报警功能的网络摄像机则无法实现报警功能。基于目前远程视频监控报警系统存在的上述问题,本文所述基于Android平台的远程视频监控报警系统的设计和开发致力于在Android智能手机上开发一种远程视频监控系统,利用该系统可以对远程的网络摄像机的监控画面进行实时播放,同时可以对非法入侵等移动目标闯入进行报警提醒,与目前远程视频监控报警系统所不同的是该系统的移动目标检测在Android平台上实现,而非在远程摄像机上进行检测。因此,该系统能使不具备报警功能的网络摄像机具备报警功能,从而大大提高了系统的实用性和经济性。2.5.1硬件需求分析与配置根据系统需求分析,远程摄像机一般均需要24小时不间断的进行视频监控,同时画面的清晰度也要有一定的保证。因此,本文所述基于Android平台的远程视频监控报警系统需要有一个良好的网络摄像机,该摄像机能够满足连续不间断的监控,同时画面清晰度可以满足要求,且该网络摄像机自身不具备自动报警功能,系统的报警功能是由Android平台实现的。远程摄像机确定完成之后,系统还需一个基于Android平台的智能手机,该手机可以进行3G/4G网络连接或WIFI连接,以实现监控数据的网络传输。本文所述基于Android平台的远程视频监控17 报警系统的总体架构图可用图2.3表示,本文最终选择普顺达公司生产的EasyNFS-613A-M136型号的网络摄像机进行视频信号采集,该网络摄像机自带服务端,能将采集得到的视频图像进行压缩后通过网络发送出去,采用基于Android系统的红米手机进行视频信号的接收、解析、播放及报警功能等[44]。图2.3系统整体架构图2.5.2系统软件功能需求分析经过上述分析,本文所述基于Android平台的远程视频监控报警系统应具备以下功能:(1)视频采集功能:系统能够利用远程网络摄像机进行视频数据的实时采集。(2)视频传输与显示功能:系统能够将远程网络摄像机拍摄到的监控画面传输到用户Android手机上,用户Android手机上能够实时显示远程网络摄像机传送过来的监控画面。(3)视频片段或图片保存功能:用户利用Android手机客户端应用程序可以对远程摄像机传送过来的监控画面有选择地进行视频片段或单帧图像的保存。(4)报警功能:当远程网络摄像机拍摄的画面中有移动目标出现或非法入侵时,用户Android客户端应用程序能够按照用户预先设置的报警模式进行报警提醒,报警模式主要包含手机震动响铃、向特定号码发送短消息、向特定号码拨打电话或向特定邮箱发送邮件等。(5)关闭远程视频监控:用户通过Android客户端应用程序可以向远程摄像机发送停止监控命令,从而实现远程视频监控系统的关闭。2.5.3系统软件性能需求分析本文所述基于Android平台的远程视频监控报警系统除应满足上述功能性需18 求外,还应满足下列性能需求[45]:(1)网络无限制性:用户利用Android手机既可以使用WIFI进行网络连接,同时也可以使用3G/4G网络进行网络连接,无论采用何种连接形式,系统监控画面的清晰度和流畅度都应满足用户要求,(2)画质要求:客户端Android手机应用程序在实时显示监控画面时,要求所接收到的视频画面清晰度最低应在480*320以上,以满足用户的观看体验和系统的实际功能需求。(3)实时性要求:用户无论采用何种方式联网,系统传输画面的延迟最大不得超过2秒,使系统监控画面的实时性得到切实保证。(4)Android平台的通用性:系统客户端应用程序应具备良好的兼容性,只要是Android平台的智能手机,均可安装该客户端应用程序。以保证当用户更换手机或手机丢失时,能够快速找到合适的手机安装此应用程序,从而最大限度的满足用户对远程被监控区域实时状况的掌握,保证远程监控端被监控区域内的安全。2.6系统功能模块划分和总体设计图2.4系统功能模块图整个监控报警系统可分为远程监控端和用户客户端两部分构成,本文中远程监控端利用清晰度满足要求的现成的网络摄像机,其将采集到的视频监控信号通过网络发送出去。用户客户端采用基于Android系统的智能手机,本文将重点介绍在该手机上完成用户客户端应用程序的开发和调试。客户端应用程序主要功能包含用户信息的保存、网络摄像机视频数据的接收与解析、运动目标的检测、非19 法闯入的报警功能等。具体实施过程中客户端应用程序可分为网络传输模块、图形界面模块、视频播放模块、移动检测模块、报警模块和用户信息缓存模块(如图2.4所示)。网络传输模块负责接收网络摄像机发送过来的实时数据,图形界面模块负责系统主界面的展示及系统参数的设置,视频播放模块负责实时播放网络摄像机发送过来的监控数据,移动检测模块负责实现运动目标的检测,报警模块负责当移动检测模块检测到有移动目标后应用程序报警功能的实现,用户信息的缓存模块主要用来临时保存用户所输入的身份信息、网络摄像机的网络参数信息等,使用户不必每次打开都需要重新进行参数设置。2.6.1客户端功能模块设计(1)网络传输模块网络传输模块主要负责与远程网络摄像机建立Socket网络连接,并实时接收远程网络摄像机发送过来的视频数据。网络传输模块运行流程如图2.5所示。图2.5网络传输模块流程图20 (2)图形界面模块图形界面模块又称用户界面,主要包含登陆界面、系统主界面和设置界面。登陆界面主要展示系统的欢迎页面、版本信息及开发者相关信息等,系统主页面主要负责接收到的监控数据的实时显示,设置页面主要负责系统报警方式的设置等。(3)视频播放模块视频播放模块负责Socket数据流的接收与实时解析,并将解析得到的监控画面在系统主界面上展示出来,该模块与图形界面模块相互配合,共同完成远程监控画面的实时播放。(4)移动检测模块移动检测模块在后台运行,负责对所接收到的视频进行移动目标检测,当发现有移动目标时,则启动系统报警模块,将报警信息发出,给用户以提醒。(5)报警模块报警模块仅在系统检测到运动目标时才被启动,其可以根据用户的需要提供多种报警方式,用户根据实际情况选择其中的一种或多种,极大地扩展了系统的应用范围和使用便捷性。(6)用户信息缓存模块用户信息缓存模块可以将用户首次输入的设置信息等以缓存的方式在本地存储起来,用户下次启动该应用程序时,无需重新输入,系统直接从缓存中将已输入信息调取出来作为用户的默认信息,当用户重新输入设置信息后,新的内容会覆盖旧的缓存信息。当用户将程序删除或清除缓存后,该部分内容自动清空,用户再打开此应用时,系统默认为应用程序为首次打开,需要重新输入相关参数。2.6.2系统工作流程基于Android平台的远程视频监控报警系统主要分为远程服务端和用户客户端两部分组成,远程服务端由网络摄像机组成,主要负责视频信息的采集、压缩和发送。用户客户端由基于Android平台的智能手机组成,客户端主要负责监控数据的接收、实时解析和播放、移动目标的检测和报警功能的实现等。用户客户端系统的大致工作流程示意图如图2.6表示。21 图2.6系统工作流程示意图2.6.3系统数据流向本文所述基于Android系统的远程视频监控报警系统的主要数据流向包含以下几个部分:(1)远程网络摄像机初始化,并进来视频信号的采集;(2)远程网络摄像机将采集得到的视频数据经过压缩编码后放入缓冲区内,并且创建Socket,用于接收客户端发起的Socket网络连接请求;(3)用户在客户端应用程序上的设置界面输入网络摄像机的IP地址和端口号,首次输入完成后将所输入的信息缓存在本地,下次打开此应用时无需重新输入;(4)用户通过发起连接的请求按钮,向已配置完成的网络摄像机发送Socket网络连接请求,(5)远程网络摄像机收到客户端应用程序发起的连接请求后,建立Socket连接,开始进行视频数据的发送;(6)客户端应用程序开始接收远程网络摄像机发送的视频数据,在后台实时解析并播放监控画面,同时移动检测算法开启,对所接收到的视频画面进行运动目标检测;(7)当客户端应用程序检测到有运动目标进入时,开启客户端应用程序的报警功能,将所检测到的几帧视频画面以邮件形式发送到指定的报警邮箱,同时对已设置好的手机号码进行振铃或短信提醒。综上所述,整个系统的数据流向可用图2.7进行表示。22 图2.7系统数据流向示意图2.7本章小结本章首先介绍了Android系统的相关概念,接着分析了常用的流媒体传输协议和视频压缩技术,然后对系统整体架构、工作流程和数据流向进行了详细分析,并从硬件需求、软件功能需求和软件性能需求方面对系统进行了需求分析,最后23 按照系统功能完成了对系统模块的细化和分步设计。24 第3章基于Android平台的视频监控报警系统设计与实现3.1Android开发环境搭建本文中对Android开发环境的搭建主要分三部分来介绍,分别为相关软件的下载、使用相关软件搭建环境和配置AndroidSDK的环境变量。3.1.1相关软件的下载Android应用程序的开发是利用Java开发语言在Eclipse集成环境下进行的,因此首先需要搭建Java语言环境,需要下载JDK和Eclipse,Java开发环境搭建完毕后,需要进行Android开发环境的配置,需要添加AndroidSDK和ADT插件。Android开发环境的搭建一共需要下载JDK、Eclipse、AndroidSDK和ADT插件,这几个工具包的常用下载地址在网上可以轻易找到,本文中所用工具包均在官网下载,这里不在给出具体下载地址。(1)JDK的下载与安装JDK的英文全称是JavaSEDevelopmentKit,也就是Java开发工具箱的英文翻译。本文下载的JDK版本为JDK1.7,下载到本地电脑后双击进行安装。JDK的安装过程比较简单,在安装的时候注意将JDK和JRE安装到同一个路径下即可。JDK安装完成之后,需要对系统变量进行配置,主要包含JAVA_HOME和Path两个变量,具体配置比较简单,本文不再阐述,配置完成后进入系统命令行,运行java-version,如果JDK安装完好且配置正确,系统命令行会出现如图3.1所示输出。图3.1JDK配置成功示意图(2)Eclipse的下载安装Eclipse为基于Java编程语言的集成开发环境,在Eclipse上可以完成Java应25 用程序的开发,由于Android系统应用程序的开发也是基于Java编程语言的,因此在Eclipse上也可以完成Android应用程序的开发和调试。Eclipse的下载安装比较简单,只需选择与操作系统相对应的版本下载解压缩即可,无需独立安装。(3)下载AndroidSDKAndroidSDK英文全称为AndroidSoftwareDevelopmentKit,即Android应用程序开发工具包,里面包含了开发Android应用程序所必须的API库,以及开发调试Android应用程序所必须的其它插件。AndroidSDK下载完成后为一个压缩包文件,只需将其关联到Eclipse开发环境中即可使用。(4)下载ADTADT的英文全称为AndroidDevelopmentTools,即Android开发工具。ADT是Android开发者为推广Android平台,鼓励程序员进行Android应用程序的开发而推出的免费开发工具。使用ADT,可以轻松实现Android应用程序的新建、调试和运行。ADT下载完成也是一个压缩包文件,解压即可使用,无需独立安装。3.1.2Android开发环境搭建(1)安装Android的SDK在上面的操作中,我们已经下载好了Android的SDK的压缩包,现在我们就要将这个android-sdk_r24.0.2-windows.zip压缩包解压缩,解压后得到一个【android-sdk-windows】文件夹,这样就算是完成了Android的SDK的安装工作,文件夹里面的内容如图3.2所示:图3.2AndroidSDK内容目录利用“SDKManager.exe”可以完成AndroidSDK的更新和下载。(2)安装ADT插件到Eclipse由于前面已经下载完成了ADT,这里直接离线安装。解压eclipse-jee-luna-SR2-win32-x86_32.zip压缩包,解压成功之后,得到一个eclipse26 文件夹,用鼠标双击eclipse.exe启动Eclipse,第一次启动Eclipse时需要设置Eclipse的workspace,即eclipse的工作目录。Eclipse启动完成后,点击[Help]菜单->[InstallNewSoftware…],点击ADD按钮,然后在选择已下载解压完成的ADT文件夹。安装完成后,重启Eclipse。Eclipse重启之后就会将同一路径下的AndroidSDK和ADT插件关联起来,如果Eclipse未找到相应的AndroidSDK文件夹,则会提醒我们手动选择本地的AndroidSDK文件。3.1.3配置AndroidSDK的环境变量配置AndroidSDK的环境变量不是搭建Android开发环境必须要做的工作,但是配置了之后就可以很方便在命令行窗口使用AndroidSDK安装目录下的platform-tools和tools目录中的工具。AndroidSDK的环境变量值为SDK安装目录下的platform-tools文件夹和tools文件夹子目录路径,如我的分别为:E:AndroidDevelopToolandroid-sdk-windowsplatform-tools、E:AndroidDevelopToolandroid-sdk-windowstools,在变量值中,两个路径用逗号隔开。图3.3Android开发环境配置成功示意图(1)添加环境变量:变量名:ANDROID_SDK_HOME变量值:E:AndroidDevelopToolandroid-sdk-windows(这个Android的SDK的安装目录)(2)在path中添加如下内容:%ANDROID_SDK_HOME%tools;%ANDROID_SDK_HOME%platform-tools27 配置完成后,单击开始菜单里的运行,然后输入android-h,出现如图3.3所示内容说明Android环境变量已经配置好了。3.2系统界面设计用户操作应用程序是通过系统界面的相应控件实现的,系统界面是应用程序展示给用户的交互窗口,系统界面设计的优劣对应用程序的用户体验度具有直接影响。通常情况下,Android应用程序开发公司在应用程序界面设计的过程中,均由专业美工收集素材,UI设计师完成界面设计。本文所述Android应用程序的界面设计并未涉及专业人士,均由作者本文独立完成。基于Android的远程视频监控报警系统的界面主要分为欢迎界面、主界面和设置界面,本文将在下面的篇幅中逐一介绍各个界面的设计。3.2.1Android布局简介Android系统界面设计过程中常用的布局方式有五种,分别为线性布局(LinearLayout)、帧布局(FrameLayout)、表格布局(TableLayout)、相对布局(RelativeLayout)和绝对布局(AbsoluteLayout)。(1)线性布局线性布局是Android所有布局方式中使用最广的,程序开发者可以根据应用程序的需要进行水平线性布局或垂直线性布局。水平线性布局和垂直线性布局的设置只需通过对“android:orientation”属性进行赋值即可,属性值可以等于vertical或horizontal。当应用程序不对“android:orientation”进行赋值时,系统默认应用程序是水平线性布局。(2)帧布局帧布局是从系统屏幕的左上角开始,在这种布局方式中,先放的控件放在最下面一层,后方的控件在上面一层,控件之间相互折叠覆盖,这种布局方式在具体实际开发中应用较少。(3)表格布局表格布局是除线性布局外使用较广的一种布局方式,它以列表的形式显示开发者放入的控件。在这种布局方式中,程序开发者可以根据需要添加不同的控件显示列和控件显示行。28 (4)相对布局相对布局是按照控件的相对位置关系进行布局的,除了页面的第一个控件,其它控件在摆放时均需选定参考控件,如放在参考控件的下方、上方等。(5)绝对布局在相对布局中,各控件之间的关系为参照对比关系,而在绝对布局中,每个控件的具体坐标是固定的。在应用程序开发过程中,由开发者指定各个控件的具体位置坐标,一旦确定,后期程序开发完成无法再进行修改。3.2.2系统欢迎界面的设计与实现欢迎界面又称闪屏界面,为用户打开应用程序时展示的第一个界面,好的欢迎界面可以给人耳目一新的感觉。欢迎界面通常由带有公司logo或名称的背景图片组成,其展示的时间在系统开发过程中可以认为指定,一旦程序开发完成,欢迎界面的展示时间便不可再进行更改。本文中欢迎界面采用一张色彩合适的背景图片加开发者信息作为欢迎界面,欢迎界面的显示时间设置为15秒,具体实现过程为首先新建一个SflashActivity继承自Actvity,在SflashActivity中设置函数checkNetAll用于检查用户手机的网络连接状态,如果用户手机没有有效的网络连接,则提醒用户开启网络连接后重试。与欢迎页面相对应的布局文件为R.layout.splash,具体代码如下所示,其中bg为预先设定的欢迎界面背景图片,保存在图像资源drawable文件夹下。
此文档下载收益归作者所有