基于Android手机的音视频监控软件的设计与实现毕设论文.doc_第1页
基于Android手机的音视频监控软件的设计与实现毕设论文.doc_第2页
基于Android手机的音视频监控软件的设计与实现毕设论文.doc_第3页
基于Android手机的音视频监控软件的设计与实现毕设论文.doc_第4页
基于Android手机的音视频监控软件的设计与实现毕设论文.doc_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

基于Android手机的音视频监控软件的设计与实现学 院计算机学院专 业计算机科学与技术(物联网工程) 摘要社会在发展,科技在发展,安全防范工作已经不仅仅是人类的工作。人类利用自己的聪明才智创造出各种协助安全防范工作的物品。其中,视频监控系统已是安防工作里不可缺少的一部分。现在,社会治安形势依然严峻,随处可见监控器的身影,如马路、学校等公共场所。然而,有些场合如私家车内,住宅内没有安装监控,而有时候又需要监控,此时,我们可以利用安卓手机来达到目的。如今安卓系统的手机越来越普遍且价格越来越低,在WiFi联网的条件下,可以在安卓手机上设计并实现简单的音视频软件监控软件,从而达到监控的目的。本次毕业设计是基于安卓手机的音视频监控软件的设计和实现。软件实现的主要功能包括:采用安卓多媒体技术实现语音及图像录制功能,语音及图像播放功能,播放控制拥有播放、暂停、快进、快退,可设计成定时录制功能,屏幕大小可以缩放,拖动进度条可以显示当前播放的时间和最大播放时间,最后利用UDP/IP编程实现对音频以及图像传输。本软件设计在安卓平台上进行的。操作系统、用户界面、应用程序是安卓系统的主要组成部分,其具备一些优良的特点即应用程序无界限、应用程序平等、开放性以及应用程序开发快速方便。安卓开发基于java技术,而Java语言为一种全功能平台编程语言,如今深受大家欢迎。安卓开发环境以Android SDK和Eclipse为核心。现在最流行的安卓开发模式是以java上主流的开发工具Eclipse作为基础通过集成ADT插件,来更好的支持安卓程序开发和调试工作。关键词:音视频监控软件;安卓;javaAbstract The society is developing, the science and technology is developing,work safety are much more than human.People use their wisdom to create the items of various kinds of assist security work. Among them, the video monitoring system has become an indispensable part of security work.Now, the social security situation is still grim, everywhere the figure of the monitor, such as the road, school and other public places.However, there are some occasions such as private car, the house is not installed to monitor, and sometimes need to monitor, at this point, we can use the android mobile phone to achieve a goal.Now Android mobile phones more and more popular and more and more low price, under the condition of WiFi network, can be designed and implemented on the android mobile phone simple audio and video software monitoring software, so as to achieve the purpose of monitoring.This graduation design is based on the android mobile phone audio and video monitoring software design and implementation. Software implementation of main functions include: voice and image recording function is realized by using the android multimedia technology, voice and image display functions,Playback control with play, pause, fast forward, rewind, design a timer recording function, the screen size can zoom, drag the progress can display the current playback time and maximum playing time. Finally, the UDP / IP programming voice and image transmission. The software design in the android platform. The android system is mainly composed of the operating system, user interface and applications. Its openness, equality of application, the application without boundaries, the characteristics of quick and convenient application development.Android development based on Java technology, and the Java language a fully functional platform programming language and popular with people . The Android development environment with the Android SDK and Eclipse as the core.Now the most popular android development mode is based on the Eclipse development tools as Java on the mainstream by integrating the ADT plugin, to better support the android program development and debugging.Keywords: audio and video monitoring software;android;Java目 录1绪论11.1 开发背景及目的11.2 开发工具简介21.3 相关技术知识21.3.1 开发语言21.3.2 开发数据库31.3.3 视频播放技术31.3.4 视频录制技术41.3.5 UDP/IP协议41.4 可行性分析51.4.1 技术可行性51.4.2 经济可行性51.4.3 操作可行性62 需求分析72.1 开发背景需求分析72.2 功能需求分析82.3 技术性能需求分析83 概要设计93.1 系统结构设计93.2 系统功能模块设计93.2.1 音视频监控录制模块103.2.2 文件查找模块103.2.3 监控音视频播放模块113.2.4 数据传输模块114 详细设计124.1 音视频监控录制模块124.1.1 音频录制134.1.2 视频录制134.1.3 定时音视频录制设置174.2 音视频播放模块214.2.1 进度条264.2.2 屏幕缩放284.3 数据存储模块294.4 数据传输模块325 系统的测试与结论355.1 整体用户界面测试355.2 音视频录制功能测试365.3 视频存储功能测试395.4 视频播放功能测试405.5 无线传输功能测试425.6 音视频监控软件测试结果445.7 音视频监控软件的展望44参考文献45致 谢4641绪论无论什么时代,治安问题都是人们不可逃避的问题,是人们关注的问题。而随着时代的发展,治安已经不仅仅只靠人的力量,科技的作用日益凸显,监控器成为协助人类治安管理必不可少的一件物品。现在,社会治安形势依然严峻,随处可见监控器的身影,如马路、学校、机场等公共场所。但是随着社会经济的发展,人们经济以及生活水平的提高,安全防范意识的逐渐增强,对家里以及私家车的监控的需求也迫切起来。此时,由于安卓手机的快速发展其价位越来越低廉,普遍受到人们的青睐。手机的功能也不仅仅只是接受短信以及打电话那么简单,如手机定位,网络社交、娱乐、导航等功能。因此,在需要临时监控的情况下,基于安卓系统我们可以安装简单的音视频监控软件,从而达到监控作用。倘若发生不法事件,通过查看监控视就能帮助警方破案,尽快找到真凶。同时通过无线传输,将监控音视频资料传输到工作人员的手机上,方便而迅速,使办案人员可以尽快了解案件情况,增快破案进度。可以说基于安卓手机的音视频监控软件对于我们的生活将起到非常重要的作用。1.1 开发背景及目的安全防范工作在任何时候都不容疏忽,安防工作做不好,不仅可能影响到财产安全,更甚者会影响到我们的生命安全,因此防范于未然是非常重要的。不过人们也深知安防的重要性,于是发明了一系列工具协助人类做好安防工作。其中,视频监控在安全方向有着非常重要的地位,它可以直观的采集信息,清楚真实还原发生过的场景,因为这样而应用于交通、民用安全等各个领域的情况非常普遍。对于普通家庭来说然而传统的视频监控系统存在一定的缺陷,安装监控器会破坏家庭装修,且个人空间被侵犯的感觉,再加上安装时间长,就普通家庭而言存在很多不便。再加上目标大,很容易让入侵者发现然后躲过监控,从而达不到监控目的。随着网络、计算机、手机开发技术发展,普通用户即使在私家车内或住宅内没有安装监控器,但需要临时监控,我们可以在安卓手机上安装音视频监控软件。在手机安装监控软件,价格低,而且可以放在隐蔽的角落不被发现,从而可以更好的监控。1.2 开发工具简介 此次软件设计采用的开发环境为安卓应用开发环境。对于某种开发平台或语言而言,其是否成功要看他是否可以提供优秀、高级、易用的开发环境。现在流行的安卓应用和开发与其开发体系是密不可分的。操作平台安卓开发体系支持windows、Mac Os X和Linux操作系统作为开发平台,从而为程序员和开发组织工作者提供了非常高的灵活性,让他们可以按照自己喜欢的工作方式去工作。编程语言和平台安卓开发基于java语言,而java是目前最流行的全功能跨平台编程语言,经过多年的发展,已经产生了众多的程序员,并且还保留了大量丰富的支持资源和文件。这为保证开发具有普遍性的特点提供重要基础。集成开发工具以开发工具Eclipse为基础是目前最流行的安卓开发模式,通过集成ADT插件来更好的支持安卓程序开发和调试工作。过去手机应用经常会有一些自己特别的地方以及晦涩难懂的地方,而这个集成的开发工具和流程可以屏蔽这些问题。1.3 相关技术知识本次软件开发所涉及相关技术知识主要包含开发语言的语言、数据库技术、视频播放技术、视频录制技术、UDP/IP技术五个方面。1.3.1 开发语言安卓操作系统是在Linux基础上开发的一个移动的操作系统,然而在Linux上编程的语言是C/C+,那么在安卓上使用的编程语言主要有两种方式:一是有基于ADK的Java编程,二是基于NDK的C编程。本次毕设软件设计是在安卓应用上的开发,几乎全都采取Java语言开发。 1.3.2 开发数据库在数据存储和处理这两个部分,安卓系统为开发者提供了一个集成了轻型的关系型数据库系统sqlite3。由于SQLite是最新版本及主流版本是3.7,所以通常称为SQLite3.由于他的库和执行文件非常精巧,使用C语言编写,运行资源占用高效,因此他可以在任意的软硬件执行和安装。它严格遵守ACID应用规范,并且为小型数据库管理系统,那么ACID又什么是呢?ACID即为(atomicity consistency isolation durability)原子性、一致性、独立性、持久性。而这四个特性又分别具有其意义如下:原子性:一个事务是可以包含很多的操作和步骤的,在所有事务里,他不会在某个中间环节结束。倘若一个事务在正在执行的过程中出现了不对的地方,他便会回到最初的状态。一致性:在事务执行后,在这个系统的信息一致的。隔离性:两个事务的执行是互不干扰的。持久性:在事务执行结束之后,对数据库做的一些更新和改变可以长期地保存在数据库当中,除此之外,而且还是完整无缺的。SQLite的设计目标是在嵌入式系统实现SQL语言、支持ACID、成为多平台的关系型数据库。它支持SQL语言并且只需要较少的内存就可以得到不错的性能。他基于SQLite语言,但又和普通的数据不同,SQLite没有独立的服务器进程他直接访问磁盘文件,在单一的数据库文件中实现了多个数据库、视图、索引和触发器。到目前为止,他是最好的选择之一在类似的产品中。1.3.3 视频播放技术 在安卓系统中,我们最常用的也是最简单的视频技术就是Mediaplayer接口,通过这个接口就可以去播放用户指定的音频以及视频文件了。Mediaplayer功能强大,此外,VidioView也能用来播放视频,VidioView类是对Mediaplayer类的封装,他能从不同来源读取图像,计算并且维护视频的画面尺度以使其适应无论是哪一个布局管理器,并给予如缩放、着色等显示选项。虽然VidioView比Mediaplayer简单易用,但是从应用程序开发角度讲,他的定制性差,明显不敌Mediaplayer。其实,Mediaplayer播放音频也是较为简单的,只是播放视频的时候要协同SurfaceView工作。1.3.4 视频录制技术在安卓系统中,我们通过调用MediaRcorder类来录制视频。安卓的MediaRcorder有两个记录功能,他们就是:Audio以及video。在安卓界面Music以及Video是调用MediaRecorder来实现的。MediaRecorder在底层是在OpenCore(PacketVideo)库的基础上实现的,如果想建立一个MediaRecorder程序,上层就应该要包括进程间的通讯等部分的内容,而要实现进程之间通讯,就不能忽视安卓基本库里面的Binder机制,他是进程间通讯的基础。一个MediaRecorder在运行的状态时,能大体分为Client以及Server这两个局部,它们运行在两个不一样的进程当中,互相之间通过运用Binder机制去实现IPC通讯。1.3.5 UDP/IP协议 安卓作为Linux和Java技术为基础的系统平台,对网络的支持力强大,在SDK中,完全实现了Java的相关网络应用类,其中,包括了可以基于socket技术的网络应用。Socket是一种抽象层对象,根据不同底层协议有很多不同类型的socket。流套接字使用TCP作为连接协议,他能给予一个值得信任的字节流传输,数据报套接字则使用UDP协议,可以给予一个尽力而为的数据报传输服务。UDP协议为user Dategram Protocol的英文缩写,翻译过来也就是用户数据包协议,为OSI也就是开放式系统互联参考模型中一种没有连接的传输层协议,而且位置处在IP协议上层。在不以按顺序到达为条件的传输中主要应用的是UDP协议,在应用层实现分组传输次序的检验和排列顺序。由于其不给予数据包分组、组装以及不可以对数据包进行排列顺序序的不足,换句话说,报文虽然被传送了,但是我们不知道所传送的报文是不是真的准确的到了目的地。所以,其传送服务简单且不可靠,也正因为这样,所以使用UDP协议其传输速率以及效率较高。它会把网络数据流量压缩成为数据包形式,而典型的数据包其实就是二进制的传输单位。UDP为那些必须要在计算机之间传送数据的应用提供支撑,这些应用主要有包含了客户/服务器模式的网络应用、网络视频会议系统等。1.4 可行性分析本段将对该软件的实际可行性做具体分析,即对软件的主要内容以及使用条件做出相应的分析。比如软件的安装条件,使用环境、开发环境、资金投入以及 软件从技术经济、操作方面进行研究和分析比较。调查研究所设计基于安卓的音视频监控软件是否有实用性,是否有存在的价值,该设计完成后能否给人们带来方便,能否让人们用于安全防范工作中,达到监控的目的。1.4.1 技术可行性本设计是基于安卓手机的软件设计,在智能手机终端这一方面,安卓操作系统在最近几年里备受关注,因为他的系统的开放性以及无偿性,使开发人员能随时地取到源码,这对于运行商以及开发人员来说相当重要。除此之外又有国际一线手机开发商的参与,使安卓操作系统发展更为迅速。本次设计主要经过调用安卓开发环境下MediaRecorder()类进行视频监控录制,再经过调用MediaPlayer()类来完成视频播放工作。视频播放期间同时完成播放、暂停、快进、快退、屏幕缩放等功能,其所录制的监控文件采用MPEG4格式。再根据视频传输特点即传输时延小、传输流量大、一定程度上可以允许传输出现错误以及数据丢失,而UDP协议又具有实时性、效率高的特点,所以我们能通过运用UDP/IP协议来达到监控所录制视频传输的目的。1.4.2 经济可行性视频监控器似乎已经变为我们生活的一部分,不管是走在道路,抑或是在一些商场中,你总会看到他的踪迹。如果在家安装一个视频监控器,你需要准备的物品有摄像机以及摄像机电源、摄像机路数、采集卡、硬盘、显示设备且还需要布线。经过查阅资料以及询问起码需要800多。但是对于普通的家庭用户来说,并不需要每天随时的监控,在家里安装监控器不仅破坏家庭环境,而且安装时间长,花费高。然而开源性的安卓平台打破了之前的操作系统要付出高额费用的模式,这样,就让智能手机的成本降低了很多。所以安卓环境移动的智能手机如今价格低廉,你只要花费200左右就可以买到一部安卓智能手机。除此之外你还需要一张SD卡存储录制的视频,经过调查只需要30元左右可以买到一张16G的SD卡,这样就可以满足监控需要了。如果想长期保存监控视频可以将监控录制的视频保存到电脑里,不过对于家庭监控来说,如果当时并无异样,当天监控视频也就无需保存了。再加上其具有开放源代码的特性,这就让手机具有更多个性化发展。在手机上安装一个视频监控软件就能达到监控特殊环境的目的,协助人们做好安全防范工作。所以从经济可行性方面来说,本设计是完全可行的。1.4.3 操作可行性本软件设计界面简单简洁,操作过程直观、自然、简单,只要通过触摸点击即可实现其功能,不需要安装其他的辅助设备,可以给用户 良好的用户体验。将安有音视频监控软件的安卓手机放置于需要监控的空间内,选择好监控角度,按照软件界面提示即可按照自己需求设置录像或定时录像,并且还能事后通过无线传输得到我们所需要的监控录像。所以,本软件设计在操作上是可行的。2 需求分析2.1 开发背景需求分析视频监控系统从产生发展至如今,实际上其时间并不长,差不多也就只有二十几年。其发展可以分为三个阶段:模拟视频监控系统、半数字视频监控系统、全数字网络视频监控系统1。模拟视频监控系统:这个系统依赖摄像机电缆、录像器和监视器等专用的设备,有多少个摄像机就会有多少个监视器,少技术含量。在视频监控技术的这一领域里,存在一个”一对一“的时间段,这个时间段就是闭路监控系统成长的最初级阶段。半数字视频监控系统:同样也叫做DVR监控系统,它完全跳出了第一阶段监控系统的框架而特立独行起来。他把居于主控端的全部设备集成为一件设备,并且以高性能的多媒体设备做为核心设备,结构则选择模块化式。并且他有非常友好的人机交互界面以及网络的多级分控作用。全数字网络视频监控系统:他主要是由网络摄像机以及其监控管理平台一起来构成的。网络摄像机他有自己特立的IP地址以及嵌入式操作系统,其很好地完成了真正的三网合一,三网指的是视频、音频、数据。全数字视频监控使跨区域监控成为可能,且图像非常清晰且可靠稳定。那么从图像存储检索方面来说的话,他又具有方便、容易、安全、能异地存储和多机备份的良好的特点1。视频监控系统正迈向前端一体化、视频数字化、监控网络化、系统集成化的道路并前进着2。安防工作不是只有在公共场合才有,现在人们生活节拍的日益加快,其个人对安全感的需求越来越强,所以人们对家庭监控以及安防的要求也变得日益成熟。手机视频监控系统操作不仅便捷,易于随身携带以及方便隐藏监控且价格低廉。可以说家庭监控市场的发展潜力是相当大的,特别3G技术的日益成熟的发展,对于普通家庭用户来说,手机音视频监控可以满足人们安全防范的需要。2.2 功能需求分析本次毕设是在安卓手机上实现音视频监控录制以及音视频传输的功能。所以首先该软件需要实现录制功能,并且将所录制的视频存储到存储器中。作为监控器录制了视频,自然要呈现出来,因此要实现音视频的播放。为了将视频更好呈现出来,播放控制必须设有一些基础的功能也就是播放、暂停、快进、快退这些功能。为了给用户在视觉上有更多的,丰富多彩的体验,设置屏幕背景可以改变并且其尺度能缩放。设置一进度条可显示当时的播放时间以及最大播放时间,这对于安全防范工作是非常主要的。最后,通过UDP/IP技术完成对监控所录制的音视频的传输功能。以一个手机作为服务端即数据导出端,另一端作为客户端即数据接收端,然后使用UDP协议实现对视频的传输。2.3 技术性能需求分析 本次毕业设计实现音视频监控功能,其是在基于安卓开发环境下开发,使用MediaRecord类,并通过调用安卓手机的摄像头实现摄像的功能,实现音视频的监控。手机要实现音视频监控的功能,其手机摄像分辨率在480P就可以达到标清的标准,鉴于家庭面积的以及私家车大小所以可以实现基本监控的功能。视频录制帧率为15每秒,可以使播放的监控视频流畅。将录制好的视频通过UDP/IP协议,可以实现对录制好的视频无线传输。根据查阅资料,目前WiFi最大网络吞吐量理论值可以达到802.11ax,1Gbit/s,所以,在WiFi联网条件下,传输一个监控视频所需的时间还是可观的。3 概要设计3.1 系统结构设计本次毕设所设计软件采用的是MVC构建模式,这是一种软件设计的典范。Model View Controller,也就是模型、视图、控制器的缩写,他组织代码的方法为业务逻辑、数据、界面显示分离这三种。把业务逻辑汇聚同一部件中,当要改进以及自定义定制界面及和用户交互的时候,我们没有必要再次编写业务逻辑。MVC在一个逻辑的图形化用户界面的结构里,MVC主要用来映射输入、输出功能以及处理,MVC也是因此发展起来的。MVC把应用程序的输入、处理和输出功能强行分散,因此就得到三个核心部件也就是模型、视图、控制器。模型是处理应用程序数据逻辑的地方,一般是用来在数据库中存取以及读取数据;视图是用来处理数据显示的部分,其一般根据模型的数据来创造;控制器处理用户交互部分,一般用来从在视图中读取出数据,控制用户输入,并且给模型发送数据。3.2 系统功能模块设计 本设计实现主要功能模块可分为四个模块,分别为音视频录制模块、文件查找监控视频播放模块、无线传输模块。其功能模块图如图3.1所示:图3.1系统主要功能结构图3.2.1 音视频监控录制模块音视频模块除了包含音视频录制外,还兼备定时录制的功能,你可以设定任一时间让其自动开始录制或是设置一个时间段开始录制,其具体功能流程图如图3.2所示:图3.2 音视频监控录制流程图3.2.2 文件查找模块录制得到相应的MP4文件,通过在“我的文件”里查找,浏览文件从SD卡文件中找到Recvideo文件,从而找到所监控的音视频文件。具体流程如图3.3:图3.3 文件查找功能流程图3.2.3 监控音视频播放模块 视频播放模块也就是实现监控软件对所录制的视频的播放,且播放控制可以实现播放、暂停、快退、快进的工作。视频播放的界面,拖动进度条可以看到当前播放时间以及播放最大时间,并且可以对屏幕进行缩放,具体功能流程图如图3.4所示:图3.4 播放模块流程图3.2.4 数据传输模块无线传输模块实现在基于安卓手机所监控音视频与手机之间的传输,服务端手机向客户端手机申请导出数据,等待客户端响应,直到传输完毕,则传输结束具体情况如图3.5所示:图3.5 数据传输流程4 详细设计 一个软件的要成功设计去完成他所要求的功能,是多个模块共同协作的结果,那么下面介绍本次软件设计的各个模块的详细设计。4.1 音视频监控录制模块本次软件设计实现音视频采集录制功能的需要使用MediaRecord类,他作为状态机运行,需要为他设置不一样的参数,比如说设备和格式,在设置好参数后,就可以利用他执行任何时长的视频采集录制,通过设置定时录制,可以使其自动在某个时间点录制,直到用户停止。MediaRecord类的常用方法如表4.1所示:表4.1 MediaRecord的常用方法方法方法描述setMaxDuration()设置最大持续时间setAudioSource()设置音频源setVideoSourse()设置视频源setoutputFormat()设置文件输出格式setAudioEncoder()设置音频解码格式setVideoEncoder()设置视频解码格式setVideoFrameRate()设置视频帧率setPreviewDisplay()设置预览setOutputFile()指定输出文件start()开始播放stop()停止播放release()释放MediaRecord对象reset()重置MediaRecord对象prepare()准备播放同步setMaxfileSize()设置文件同意的最大数据量setCamera()设置摄像机setvideoSize()设置视频分辨率大小setMaxAmplitude()获取最大幅度4.1.1 音频录制 其中安卓支持的录音媒体源包括:MIC:移动设备内置麦克风。VOICE_UPLINK:语音通话时向对方发送音频。VOICE_DOWNLINK:语音通话时接受来自对方的音频。VOICE_CALL语音通话时包括接受来自对方和发送给对方的音频VOICE_RECONGITION:语音识别状态时的麦克风(假如可以使用)CAMCORDER:摄像状态时的麦克风(假如可以使用) Android支持的录音文件输出格式包括:THREE_GPP:3GPP多媒体文件格式。MPEG_4:MPEG4 多媒体文件格式。AMR_NB:自适应多速率窄带编码格式,即未经过封装的AMR的裸码流格式。 安卓支持的音频解码格式包括:AMR_NB:自适应多速率窄带编码格式本设计音频的录制格式采用的就是AMR_NB格式。4.1.2 视频录制 安卓目前只支持的视频源为摄像头安卓支持的录像文件输出格式包括以下两种:THREE_GPP:3GPP多媒体文件格式。MPEG_4:MPEG4 多媒体文件格式。安卓支持的视频解码格式包括以下三种:H263:H.263视频解码。H264:H.264视频解码。MPEG_4_SP:MPEG4 Simple Profile视频解码。这次设计主要运用的视频录制格式为MPEG_4 多媒体文件格式,它主要用来存储数字音频以及数字视频。MPEG也就是Moving Pictures Experts Group翻译为中文就是动态图像专家组。他采取的是基于对象的编码思想,也就是编码时把同一个景象分开,从而使他变为几个在时间以及空间上存在一定联系的视频、音频对象。其各自编码之后,通过复用传输至接收端,之后又对各个不相同的对象分别解码,这样就可以组合成所需求的相应音视频。MPEG-4 引入了AV 对象,使得更多的交互操作成为可能,AV对象就为听觉、视觉、或是视听内容的体现单元。MPEG-4具备高效压缩性、交互性强、通用访问性的优点。解码格式即采用MPEG_4_SP:MPEG4 Simple Profile格式。 本程序设计中,实现了音视频的同时录制具体步骤如下:1、 创建MediaRecord对象以及用于视频预览的SurfaceView组件,具体代码如下:2、 初始化MediaRecorder ,主要设置一些参数,程序中我封装了init() 方法来完成参数的具体设置。具体代码实现如下:代码中,字符串fileName是用来保存监控录制的视频文件的路径,视频文件格式默认是 MP4格式,所有视频文件的路径保存在videoTempFiles这个集合容器中,视频名称使用集合大小命名:0.mp4,1.mp4.。 程序启动开始,在RecActivity类中的onCreate()方法中初始化视频文件的默认存储目录,手机内存中的RecVideo目录。初始化代码如下: generateParentFolder()方法主要创建保存所录制视频的RecVideo目录,具体实现如下:myreset()方法主要实现删除同名文件功能,具体实现如下: 3、初始化工作完成后,便可开始进行视频录制,程序中封装了start() 方法,实现开始录制视频;stop()方法,实现停止录制视频。开始录制视频代码实现如下:停止录制视频代码具体实现如下:其中isRecording是个Boolean类型变量,主要作为视频录制标志。若变量值是false的情况时,其就能开始录制视频,最后其值变成true;当值是true的情况时,就能终止视频录制,最后其值变成false。4、 视频录制由于需要调用系统摄像头完成录制拍摄,并且需要将已经录制好的视频予以保存,所以在程序清单AndroidManifest.xm配置文件里,应该需要给相关的文件读写以及运用Camera的权限。相关具体权限配置如下所示:4.1.3 定时音视频录制设置 在本次程序设计中,监控视频录制方式分为两种:一是通过设置时间段来实现定时录制视频的功能;另一种是通过设置具体时间点,时间一到视频便自动开始录制。两种方式的实现是独立开来的,在主界面中,点击音视频录制按钮进入设置界面,其中点击“设置”按钮,可以完成时间段的参数设置,时间段设置以秒,分钟和小时为单位,进度条最大值100,所以对应的时间段最大设置可以为100秒、100分钟和100小时,时间参数使用SharePreference保存下来。设定一个时间段去录制视频其具体实现步骤如下面所述 :(1)选择时间单位,这里使用Spinner下拉框组件,用户可以通过下拉框选择时、分或秒作为时间单位,需要将被选择单位的位置序号记录下来。0表示秒,1表示分钟,2表示小时。具体代码实现如下: 其中Time_Setings(.)方法实现秒,分和小时的时间换算,具体代码实现如下:返回的Alltime值即为拖动进度条的值得倍数,计算出总时间并保存。具体代码实现如下:(2) 时间段完成设置后,点击开始录制视频按钮,经过定制的时间段后自动停止录制并将录制的视频文件保存下来。程序中,使用Android定时器Timer类来完成计时功能,该类需要开辟一个新的线程来执行定时工作,程序中使用到了Handler来解决线程通信。具体核心代码实现如下: 计时时间结束后自动停止录制,此时需要通过Handler发送一个消息,具体代码实现如下: 定时器结束后,需在handleMessage(.)方法中做停止录制视频的处理,核心代码实现如下:方式二,进入音视频录制设置主界面,点击“设”按钮设定需要定制的具体时间通过使用AlarmManager类,该类主要是用来完成一个倒计时的功能,当用户设定的时间倒计时完成后会发送一条广播,在广播中便可以启动实现视频自动录制的类,从而实现自动录制视频功能,这个功能详细实现步骤如下所述:(1)时间点设置,程序中使用到了TimePicker控件来设定时间。具体代码实现如下: (2) 定义一个广播接收类AlarmReceiver用于对设定的时间完成响应,需要在配置清单文件AndroidManifest.xml里予以注册广播。代码实现如下:在AlarmReceiver类响应,启动自动录制视频分装类RecActivity,完成时间点设置自动录制视频功能。具体代码实现如下:4.2 音视频播放模块MediaPlayer 为安卓用于实现媒体播放行为的类,他功能全面,对音视频播放行为都提供了支持。在安卓界面,通过调用MediaPlayer类,使得music以及video这两个自带的应用程序得到实现。然而MediaPlayer在底层是在stagefright的库基础上实现的,在2.3版本以前则基于opencore上实现完成。要想创建一个MediaPlayer程序,上层还必需要包括进程之间的相关内容,这样进程之间的通信会采用Blinder机制,MediaPlayer程序整体框架结构如图4.1所示:图4.1 MediaPlayer 程序的整体框架结构整个MediaPlayer程序结构的核心位置在libmedia.so,libmedia.so为上层提供JIN调用的接口即MediaPlayer类。Libmedia_jni.so则通过调用MediaPlayer类提供他对java的类,实现了Android.media.MediaPlayer类。再者,libmedia.so作为Mdeia的客户端通过进程间通信和libmeidaplayerservice.so通信。Libmeidaplayerservice.so作为Media的服务器且通过调用stagefrig的awesomePlayer以及继承libmedia.so分别实现播放、服务器的功能。MediaPlayer是以状态机的形式实现音视频的回放功能,MediaPlayer的生命周期和状态转移的会有如下几种情况:1、 在构建MediaPlayer对象或是调用reset()类后,则其成为空闲状态。2、 在调用release()方法后,就处在结束状态,在MediaPlayer位于结束状态情况下,就不可以运用它了,所以,倘若MediaPlayer对象不再运用后,就要用release()方法释放他,从而使他处于结束的情况下,防止产生没有必要产生的错误。3、 在MediaPlayer对象被构建并且处于空闲的状态情况时,只要通过create()方法创建就可以使他处在准备状态下;4、 对于任一个MediaPlayer对象都要先在准备状态,在此之后才可以开始播放。5、 对于任一个MediaPlayer对象如果要播放都要调用start()方法,我们要知道当前是不是处于播放状态则调用isPlaying()方法来判断。6、 MediaPlayer对象正在播放的时候,用stop()方法停止播放的状态,在变成停止状态后,需要先调用pause()方法使其还原成准备状态再调用start()方法使他开始播放;我们能用Pause()方法暂停播放,MediaPlayer在暂停的状态后,倘若要还原到播放状态,只要直接调用start()方法就行;7、 播放是否要循环,通过对MediaPlaye对象设置setLooping(boolean)方法即可。MediaPlayer在安卓中完成媒体播放工作,运用MediaPlayer完成音频以及视频的播放的主要基本环节有:1)生成MediaPlayer对象,依照播放文件所位于的不一样的位置使用不一样的生成方式。 2)在得到MediaPlayer之后,可以依据当时不同的现实情况需要而去调用不同的方法,如start()、stop()、pause()等。有一点是必须关注的是,在没有必要播放的情况下,我们应该及时释放掉和MediaPlayer对象相关连的播放文件。其常用的方法有如表4.2所示:表4.2 MediaPlayer的常用方法方法方法描述Create()创建 MediaPlayer对象getCurrentPostion()获取当前播放位置getDuration()获取媒体时间长度getVideoHeight()获取视频高度getVideoWidth()获取视频高度isLooping()是否循环isPlaying()是否正在播放Pause()暂停播放Prepare()准备播放同步prepareAsync()准备播放异步Reset()重置 MediaPlayer对象seekTo()指定播放位置setDatesource()设置媒体数据来源setLooping()设置是否循环播放setOnBuffingUpdate

温馨提示

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

评论

0/150

提交评论