Android监控(精选九篇)
Android监控 篇1
1系统总体构架设计
基于Android的监控系统需要通信技术和网络技术共同实现。首先将摄像头设置在某个固定的地点, 将采集的数据压缩上传至服务器。用户通过手机上网登录服务器, 获取权限下载相应的视频内容, 达到远程监控的目的。根据软件要实现的功能, 可将软件分为四个小模块:视频采集部分, 服务器数据处理部分, 网络传输部分和客户端部分。现实中, 不同厂商生产的摄像头产生的数据不一致, 我们采用理想模式, 设想摄像头采集的数据压缩后是纯的H.264数据。系统设计如图1所示。
视频服务器主要任务是对从摄像头传来的数据进行二次处理, 同时根据用户的请求信息, 将相应的内容传输到客户端。传输网络主要是对数据进行传输, 高带宽是传输数据流畅性的保障。Android终端则是接收数据, 并对其进行相应的解码和播放。
2视频播放器设计
2.1数据来源
当我们打开软件时, 该软件会自动获取存储在手机或服务器上的视频信息。Android系统中有一个存储SD卡视频信息的类称为:Android.provider.Media Store, 该类是Media Store的子类, 当打开播放器时, 播放器会主动调用Android的库函数Media Store。Android为所有的多媒体信息建立数据库, 意味着不需要自己创建数据库。同时为了方便程序员对数据库的使用, Android对数据库接口进行封装, 一个Android源程序已经为我们封装好了一个接口类, 叫Medi-a Player。当需要使用数据库时, 只有通过使用Content Resolver去掉封装的接口, 就可以对多媒体数据库进行操作了。
我们利用一个Activity来创建一个Content Resolver实例 (Con-tent Resolver m Resolver = ctx.get Content Resolver () ) , 这个Context就相当于一个上下文环境。得到这个Context后就可以调用get Con-tent Resolver接口获取Content Resolver实例了。
2.2播放器界面设置
打开软件, 进入视频播放器界面, 出现视频列表, 系统调用On Click Listener () 方法监听用户活动, 当用户单击屏幕时, On Click-Listener () 监听到活动随即唤醒播放Activity, 就可以达到点击视频进行播放的效果。视频播放界面我们通过Android Manifest.xml文件对此界面进行编码。视频播放界面我们采用在Relative Layout (相对布局) 中嵌套Linear Layout (相对布局) 的方式, 同时我们需要在布局文件中定义一个Surface View, 用于在界面显示视频播放的画面。
2.3播放器一般功能实现
一个视频播放器具备的基本功能应该包括播放、暂停。继续等。编码时需要为每个按键设计一个On Click Listener () 监听器, 代码如下:
stopbutton.set On Click Listener (listener) ;
当用户点击时按钮时则激活相应的操作。为了方便用户了解视频的播放时长及相应的播放位置等时间, 在该系统中我们通过seekbar属性设置滚动条。相应的当用户单击滚动条时也可以进行视频信息跳转。当用户需要对视频声音进行调整时, 软件会自动调用Android的Audio Manager.set Stream Volume属性进行声音的调整。
2.4视频服务器设计
视频服务器模块的主要任务是将模块细分为两部分:数据处理模块和数据发送模块。数据处理模块和发送模块之间通过缓冲区连接, 这样可以有效降低模块间的耦合度。数据处理模块对摄像头端传来的数据进行处理, 编码, 并转换成指定的格式, 之后将其发送至缓冲区, 不在关注。数据发送模块从缓冲区中取出数据, 根据请求信息, 将数据发送至Android客户端。数据传输主要依赖于服务器端数据传输控制部分完成, 具体的实现细节如下所示。
1服务器端调用socket函数与客户端建立起TCP连接, 并指定参数为SOCK_STREAM (字节流套接字) 。
2服务器依次调用bind函数和listen函数来监听客户端请求。
3如果bind函数首次调用失败, 等待5s后进行二次调用。
服务器端TCP初始化函数如图2所示:
客户端与服务器建立连接后, 服务器就可以接受来自不同用户的用户请求了。在本程序中设置最大连接数为十。由于请求用户数较多, 为避免请求等待, 我们选择设置多线程。
为了更好的记录这些客户端的处理线程, 服务器端需要设置一个全局数据变量用于记录各socket的连接情况, 如下所示:
其中MAX_CONNECTED_NO有三种表示情况, 分别为未连接、以连接和非法连接。接下来服务器就使用select函数来判断相应的socket函数是否有变化, 来响应客户端的请求。在该系统中, 服务器还应该实行用户名和密码的验证, 用户名合法则可以登录查看视频内容。
3客户端设计
3.1用户界面设计
用户界面就是Android客户端所看到的画面。用户界面设计的三大原则是:方便用户控制及使用、便于用户记忆、界面风格相似, 有着统一的格调。但其核心可以概括成一句话:以人为本。
客户端界面由登录界面 (Login View) 、视频列表界面 (Video View) 和播放界面 (Play VIEW) 组成三部分组成。登录界面是用采用表格页面布局, 最上面使用一个Text View, 显示“登录界面”内容, 之后使用内嵌的线性布局, 设置两个输入视图框, 一个显示:输入手机、邮件、昵称等提示信息, 下一个显示密码提示信息。当用户输入合法的用户名和密码, 点击按钮即可登录。登录按钮是Button属性。点击登录按钮后, 处于后台的监听器On Click Listener捕获到数据, 开始行动, 传输数据。当密码和用户名不匹配时就会出现:“密码和用户名不匹配, 请联系管理员”等提示信息。当用户登陆成功, 服务器对用户进行响应, 同时向客户端传输视频播放列表信息, 客户端收到信息后, 在客户端界面显示视频信息列表, 用户根据需要, 点击相应的视频进行播放。最后是视频播放界面, 视频播放界面有开始、停止、重播等按钮, 点击相应按钮会进行相关操作。
3.2客户端与服务器交互
Android客户端和服务器之间的信息传输使用SIP协议。SIP协议是一个 基于文本 的应用层 控制协议 , 可以独立 于底层的TCP/UDP/SCTP等传输协议, 是一个较独立的协议, 受其它协议干扰较小, 可用于建立、修改和终止IP网上的双方或多方多媒体会话。在下一代网络 (NGN) 中将发挥重要作用。相比于其他协议, SIP易扩展, 便于实现, 逐渐在移动通信中占据了重要地位。
Android客户端通过SIP协议与服务器进行通信, 程序要开启SIP会话需要调用MJSIP库。主要是实现:
a.开启SIP会话, 利用MJSIP库发送SIP信令功能, 设置回掉函数接收SIP消息和响应。
b.创建一个类用于解析和产生SIP的消息体。客户端与服务器之间的交互是个复杂的过程, 其中还有涉及传输H.264包, 还需要使用RTP协议等。
4结论
本文主要介绍了基于Android的监控系统的组成构架及关键技术。一个完整的基于Android的监控系统主要是由前端摄像头、视频服务器、通信网络和客户端几部分组成。前端摄像头主要是采集数据, 服务器对采集的数据进行压缩及发送处理, 通信网络则是传输数据, 客户端接收解码及播放。随着技术的进步, 移动监控技术将会有更深远的进步和长足的发展。
摘要:现在是个多媒体技术和计算机网络迅猛发展的时代。基于人们能随时随地的观察监控区域画面这一需求, 本文旨在介绍如何设计一套基于Android平台的移动监控系统。该系统由前端摄像头、视频服务器、通信网络和Android手机四部分组成。摄像头主要是采集数据, 对数据进行初步压缩打包处理, 之后将数据发送到视频服务器。视频监控技术融合了多媒体、计算机和网络等技术。技术的发展和市场的需求合力推进了基于Android的移动监控的发展, 旨在建立一个成本低、覆盖广、效率高和监控方便的移动监控系统。
关键词:移动监控,Android,H.264压缩,视频服务器
参考文献
[1]高峡.计算机视频压缩技术的发展[J].内蒙古科技与经济, 2010 (21) :32-48.
[2]李林.基于Android系统的手机键盘驱动设计与实现[D].西安:西安电子科技大学, 2012.
[3]张俊兰.数字图像处理技术解析[J].延安大学学报 (自然科学版) , 2009 (4) :23-43.
[4]姚文.基于H.264视频水印算法的研究与实现[D].西安:西安电子科技大学, 2010.
[5]廖雪花.基于HMP技术的交互信息的传递方式研究[J].通信技术, 2008 (5) .
[6]何红梅.高速公路移动视频监控系统应用研究[J].中国交通信息产业, 2008 (10) :13-34.
Android监控 篇2
关键词 Android GPS定位 HTTP协议 远程监控
1 引言
随着信息化时代的发展,手机越来越成为我们日常生活和工作中必备的通讯工具,一旦不在身边,我们很可能就错过一些重要的信息,给我们的生活造成麻烦。本终端应用是一款基于android系统开发的,以远程控制和获取手机数据为主,用户体验良好的软件。让你能无时无刻监控你手机的状态,并能控制手机获取重要信息并返回给用户,主要具有远程获取手机未读短信、未接电话的功能,GPS定位功能和手机的远程图像监控功能。本文主要研究介绍GPS定位和远程图像监控功能。
2 终端应用架构及运行流程
Android系统架构分为四层:应用层,应用框架层,系统运行库,Linux kernal内核层。本远程终端应用是基于C/S服务架构开发,主要应用于远程获取手机信息和控制手机完成指定工作,客户端即为android手机,服务器即为网络服务器。我们借鉴android技术的软件开发架构,将软件的具体实现分为四层:表现层、业务层、访问层、数据层,如图1所示。
其中,表现层主要承载了客户端和服务器端的界面,业务层主要承载各个功能模块,包括客户端的“远程指令解析”、“远程获取GPS”、“远程拍照”、“图像数据上传”及服务器端的 “数据接收和显示”。访问层主要承载各个功能模块接口函数的调用,以及客户端和服务器端请求响应的处理。数据层主要承载的是客户端对SQlite数据库的创建及管理,服务器端对MySQL数据库的创建、插入、修改等管理。
本终端的功能模块运行的基本流程图见图2。
3 客户端功能模块结构
3.1 指令短信解析
指令短信都是以pdu编码格式发送,本终端截获之后,首先需要解码分析短信内容,截获短信之后开启一个线程去处理截获的短信内容,此线程以下称为内容处理线程。远程监控终端指的令短信固定格式为“指令/需求”,内容处理线程会将它以“/”来分割短信内容,若指令内容与“设置”中的指令一致,则根据“需求”开启相应线程。 “需求”有以下2种,“addr”将手机的GPS定位信息发送至手机,“shot”手机摄像并上传至服务器。
3.2 远程GPS定位
当指令短信解析后,指令匹配,其中的type匹配为addr,则使用使用LocationManager接口方法获取经纬度GPS信息。反查地理位置接口的方法和地址为:
((LocationManager)getSystemService.getLastKnownLocation(bestprovider);
URL url = new URL("http://maps. google.cn/maps/geo?key=abcdefg&q="+ lat + "," + lng);
若获取信息不为空,则将经纬度信息在bundle类中保存,通过查询Google地图位置反查接口,反查到用户的位置信息,再添加到短信中,并从bundle类中取出目的电话号码,整合信息后发出位置短信到目的手机。
3.3 远程图像监控
解析指令短信,若type为shot,则执行拍摄功能。首先,调用Android中的Environment.getExternalStorageState()方法检测环境是否满足照相机开启要求,满足后,开启照相机,设置参数、格式、分辨率,然后使用takepicture()方法获取JPEG格式的照片,并存储到SDcard中,然后关闭照相机。
拍摄完毕后,终端将图像信息存放到JSON数据集的对应序列中,再把数据集放到数据集链表picture_list中,然后从数据库中取出服务器地址,运用了Http协议连接服务器,定义服务器对应的处理servlet,并使用HttpPost定义发送请求,将数据集链表添加到请求中,发送服务器,再将服务器返回值对应的提示信息发送至目的手机。
远程拍摄后请求服务器响应流程如图3所示:
4 服务器端功能模块结构
服务器端的信息管理系统,采用B/S三层架构:表示层,业务层,数据层,如图4所示。表示层主要为JSP接口设计;业务层主要是servlet接收客户端通过Http协议发送的数据,并将图像文件存储到服务器的指定位置;数据层主要连接数据库,插入、删除数据。
服务器tomcat开启,当服务器响应客户端上传数据的请求后,服务器随即请求连接数据库,接收数据并判断type,若为指令需求是“addr”或“shot”,就调用SQL语句插入到数据库的相应表中,最后通过JSP的方法调用数据库的数据并将其显示在web网页中。
5 测试结果及分析
本远程终端监控系统经过在Android模拟器中可以稳定实现所有功能,在真机中有关服务器的功能也已全部通过测试,整体表现稳定可靠。
远程获取GPS地理位置测试结果如图5所示。
在图5中可以看到,第一组信息“手机Me”向装有远程监控软件的Android“手机test1”发送指令短信”520/addr”,解析指令”520”为指令标志,用于区别指令短信和普通短信;”addr”为指令的关键字,用于指示程序进入远程GPS定位的线程工作,最后“手机test1”查询到GPS的信息后再返回给“手机Me”。
第二组信息中,“手机Me”向装有远程监控软件的Android“手机test1”发送指令短信”520/shot”,同样”shot”为指令的关键字,用于指示程序进入远程远程图像监控的线程工作,将图像上传到web网页中供用户查看,并向“手机Me”回送“picture send to serve success!”的标志信息。
远程图像监控的测试结果如上图6所示,图为模拟器的模拟拍摄出的监控图像,并在上传Web网页中供用户实时监控。
6 总结与展望
基于android系统的远程监控终端应用的功能适合任意人群,而远程获取GPS定位信息和远程监控对于android系统手机核心用户具有很大的吸引力。对于不同层次的用户,远程获取GPS定位信息营造浪漫需求,远程监控和图片上传社区分享让用户感受时尚分享欢愉;远程获取GPS定位信息带给你家人安全和放心,远程监控让用户轻松出行再无后顾之忧。
目前,Android手机软件市场上远程的应用软件大多功能单一,而色彩绚丽美观时尚的软件或游戏又十分耗电。本远程监控终端应用具有新颖强大的功能和后台运行的低功耗等特点能够很好的解决传统手机软件中存在的不足,具备了良好的发展前景。
参 考 文 献
[1] 靳岩,姚尚朗. Android开发入门与实战. 北京:人民邮电出版社,2009:59—61.
[2] 余志龙. 陈昱勋. 郑名杰. Google Android SDK开发范例大全. 北京:人民邮电出版社,2009
[3] 张利国. 龚海平. 王植萌. Android移动开发入门与进阶. 北京:人民邮电出版社,2009
Android监控 篇3
1 基于Android的远程定位监控系统
1.1 系统介绍
远程监控定位系统是依托全球卫星定位系统(GPS),通过GPRS终端、传输网络和监控中心对人、车辆的位置、实时移动的轨迹进行管理的一种综合监管系统。
手机定位是依赖GPS信号实现定位功能:通过Wi Fi或者GPRS客户端与地图服务供应商实现通信,并借此来迅速查找自己的位置,提供路线等地理信息的位置业务[3]。
通过Android程序实现地图的展示功能:发送端通过Post方法实现与服务器的连接。服务器接收到定位数据后存入服务器的Application中,并实时更新;当监控端发来请求信息,服务器会将最后一次定位数据发送给监控端。监控端通过调用百度地图服务,初始化图形界面,并将定位数据显示在图层中进行展示。
1.2 系统应用
1.2.1 Android程序的应用
Android开发四大组件分别是:活动(Activity),用于表现功能;服务(Service),后台运行服务,不提供界面呈现;广播接收器(Broadcast Receiver),用于接收广播;内容提供商(Content Provider),支持在多个应用中存储和读取数据,相当于数据库。
1.2.2 GPS定位的应用
GPS定位系统是利用卫星,在全球范围内实时进行定位、导航的系统,系统功能必须具备GPS终端、传输网络和监控平台三个要素。跟随GPS的一系列关联的应用都涉及到数学和算法、GIS系统、地图投影和坐标系转换。
1.2.3 百度地图
百度地图Web服务API为开发者提供http接口,即开发者通过http形式发起检索请求,获取返回json或xml格式的检索数据。用户可以基于此开发Java Script、C#、C++、Java等语言的地图应用。该套API免费对外开放,使用前需先申请密钥,通过在线方式调用,必须连接互联网才可以对百度地图服务进行使用。
2 系统设计
2.1 程序框架搭建
2.1.1 创建应用
Android Manifest.xml为Android应用的配置文件,libs下面需要导入百度地图loc SDK_3.1.jar、libvi_voslib.so、libloc SDK3.so、libapp_Baidu Map Applib_v2_0_0.so、baidumapapi_v2_0_0.jar,res下面放一些布局、变量的xml资源文件和图标等。
2.1.2 创建Gps Application
为应用创建全局的Application来初始化百度地图管理器(BMap Manager),在此之前,必须申请一个百度API的Key用于激活百度地图服务,并导入百度地图所需的包到libs。
上述代码为创建一个类继承Application来实现应用的系统规格化,同时初始化百度地图管理器来管理和检测key的可用性,以便开启百度地图服务。
2.1.3 模块入口
在Gps Main类中添加Classactivities[]={Locate.class,Geo Coder.class,Maptest.class,p.class},这样就可以选择模块了,Locate.class为定位模块,Geo Coder.class为一个测试模块,Maptest.class为设置圆心坐标模块,p.class为设置选项卡。这些选项添加在一个List Adaptor里。
2.2 程序模块设计
2.2.1 被监控端定位模块
被监控端提供定位功能模块:在xml布局文件中添加百度地图视图、更新按钮的配置文件。在界面Activity启动时,系统会调用on Create方法,并读取配置文件,通过find View By Id()方法把图层和按钮添加到界面中,并给图层注册初始化的百度地图管理器添加图层控制器,初始化百度地图客户端,为客户端添加地理位置监听器。
地理位置监听器添加监听事件:地理经纬度在BDLocation对象里面获取,并把获取的数据放到Location Data对象中,使用控制器的animate To()方法来使获取的经纬度显示为一个点并显示到手机屏幕中心,也可以在里面添加手机位置改变时触发的事件。
给百度地图视图添加控制器,使地图可以通过双击屏幕或者缩放按钮更改缩放比例。使用set Open Gps(true)打开GPS;使用set Coor Type(“bd09ll”)设置精度类型,bd09ll是精度比较高的,在设计时被采用;使用set Scan Span(1000)设置刷新频率,这里的1 000代表1 000 ms,设置后启动它。
3.2.2监控范围设置模块
为实现预设范围自动报警功能,需设置预警圆心和半径,本文阐述手动输入经纬度坐标和触摸地图获取坐标方式:创建继承于Map View的视图类Final Destination的on Touch Event()方法,并构造函数
创建人机交互界面:创建Maptest类继承Activity,在On Create方法里面,用final Destination=new Final Destination(this);实例化Final Destination类,并初始化百度地图视图,添加图层,此时可以直观、方便地设置监控范围的圆心,而半径将在一个listcheck Preference里面设置,默认半径为3 km。
2.2.3自动发送模块
创建后台自动发送数据功能:创建继承于Service基类的Lsstart类。启动服务用bind方式和start Service方式,服务会调用On Create方法,重写它并读取配置文件,得到参数信息(包括服务器IP地址、监控半径、警示通知方的手机号),服务会调用百度地图客户端对象来初始化GPS定位:定位模块来获取经纬度,封装成一个Map传到自定义的sendpost方法里。
判断当前的坐标到设置的圆心坐标之间的距离和设置里面给出的半径的大小,如果前者大就用短信把经纬度信息发给被监控端:Sms Manager sms Manager=Sms Manager.get Default();sms Manager.send Text Message(phone Number,null,latitude+longitude,null,null)。
建立网络连接:
该系统实现了总体框架搭建以及功能模块的设计,并已经通过了测试,期望在后期市场中得到检验和认可。该系统成本低廉,应用前景十分广泛,可以应用于企业人事部门对离开公司的业务人员进行位置监控和考勤管理,以及其他有同样需求的领域。
摘要:针对不同应用场景导致的GPS模块载体各异现象,提出了基于Android的远程定位监控系统,该系统能够实时获取定位信息,间隔地推送定位数据,监控端随时查看定位数据等功能。该系统在测试床上获得了验证,结果理想。
Android监控 篇4
关键词 Android GPS 远程监控 JQuery B/S架构
中图分类号:TN943 文献标识码:A
0 引言
随着无线网技术越来越成熟,手机平台日新月异,GPS接收机体积不断变小,成本日益降低,这样,在手机上集成GPS功能成为可能。同样,GPS接收机在功耗方面越来越低,即便是已经集成了众多的多媒体功能,低功耗的GPS接收机也能保证手机电池工作时间足够长。导航服务是GPS的一大应用,在手机中集成GPS,可以非常轻松地实现车辆的自主导航,用户将不再因为迷路耽误自己的行程,便捷而实用。
1 相关编程技术介绍
1.1 JSP技术
JSP(Java Server Pages)技术是一种动态网页开发的技术标准。其优势主要有如下几点:JSP中动态部分使用Java语言开发编写,具有更强的功能;可移植性强,可以在各种操作系统及Web服务器上使用;JSP将动态内容的生成与显示分离开来,当结合Servlet开发时,能够容易的构建出结构清晰、可重用的组件。
1.2 Google Map
谷歌地图是Google公司提供的电子地图服务,包括局部详细的卫星照片。它可以提供含有政区和交通以及商业信息的矢量地图、不同分辨率的卫星照片和可以用来显示地形和等高线地形视图。在各类平台均有应用,操作简单方便。
1.3 Java多线程
Java是纯面向对象语言,因此其线程模型也是面向对象的。Java通过Thread类将线程所必须的功能都封装了起来。建立一个线程,必须要有一个线程执行函数,该线程执行函数对应Thread类的run方法。
1.4 Socket通信
运用Socket接口对两台计算机进行交互。
2 基于Android的GPS远程监控系统服务器端的设计
2.1系统功能
基于android的GPS远程监控系统服务器端的主要功能如下:能够从GPS定位数据库读写数据,直接反映到网页的在线地图上;客户端可以连接到服务器端的数据库;服务器端能接收客户端的上传数据,存储在mysql数据库中;由网页程序利用在线地图展示该手机所在的位置;管理员登陆可以实时监控所有在线用户的当前位置,并可以发送通知给在线用户;用户登陆可以实时监控此用户是否在线,如果在线,那么可以查看此用户的当前位置,并发送通知;实现用户行动轨迹分析,根据时间段,展示用户行动轨迹。主要功能包括:用户登录、发送通知、显示在线用户、用户轨迹分析、用户行程分析、用户跟踪。
2.2关键技术
本系统的服务器端采用经典的MVC架构,视图层是用户看到并与之交互的界面,模型表示企业数据和业务规则,控制器接受用户的输入并调用模型和视图去完成用户的需求。采用MVC架构,有着低耦合性、高重用性、可适用性、可维护性、快速部署、软件工程化管理等优点。
2.3数据库设计
对一个系统来说,数据库的设计占着很重要的地位,其结构设计的好坏,可以直接对系统的执行效率和实现的效果产生影响。合理的数据库设计,能够保证完整、一致的系统数据,更能够提高数据的存储效率。此外,合理的数据库设计,还有利于程序编码的实现。
本系统主要需要管理员or用户表、位置表、通知表。
3 系统典型功能模块的设计与实现
限于文章篇幅,我们只以用户轨迹显示模块为例来说明。
由Servlet调用DAO对数据库进行读指定用户的最新10条记录信息操作;由Servlet将指定用户的最新记录信息通过request对象发送到JSP页面;在JSP页面通过JavaScript调用Google Map API完成用户行动轨迹显示。
4 结束语
作为系统设计,系统已取得了一定的成果,但如若真正投入使用,还有许多有待进一步研究、设计并开发的工作。首先本系统的安全性较差,因为涉及到用户的具体位置这种隐私的信息,所以需要进一步提高系统的安全性能。其次,在客户端和服务器端之间的信息传递过程中,也存在一定的风险,需要使用一定的加密技术。最后比每一个客户端需要在服务器端保留两个监听线程,无疑增加了服务器的负担。所以当很多用户同时发送请求时会发生服务器响应过慢的性能问题。
参考文献
[1] [美]David Harms. JSP,Servlets与MySQL开发指南. 黄习福,梁桂霞,朱国庆等译.电子工业出版社,2001.1.
[2] 余世龙. Google Android SDK开发范例大全(第2版).人民邮电出版社,2010.6.
[3] 王珊,萨师煊. 数据库系统概论(第四版). 高等教育出版社,2006.
Android监控 篇5
1 总体架构
远程视频监控系统主要由视频采集处理(云台、 带Wi Fi或LTE功能的摄像头)、 视频流服务器以及基于Android的移动智能终端(手机、 平板) 构成, 如图1 所示。 远程视频采集端用来完成现场实时视频的采集与视频H.246 压缩编码,然后采用Wi Fi或4G网络接入到Internet, 把经过压缩后的视频数据存放于视频流服务器。 视频流服务器通过JMF类库(Java媒体框架API) 捕获视频, 并通过实时传输协议RTP打包, 最后利用Socket通信将压缩后的视频发送出去。 视频流服务器通过无线网络建立独立的IP地址, 便于移动视频监控终端通过Socket请求获取视频数据。 移动视频监控终端主要是向远程视频流服务器发送监控请求、 视频解压、 视频播放及图片保存等功能。 客户端在接收到压缩后的监控视频数据后, 对RTP包进行解析, 然后调用FFmpeg音视频解码库, 实现H.264 解码[4], 并将解码后得到的视频显示在智能终端界面上, 供用户查看。
2 远程端子系统
远程端子系统由云台驱动控制模块、 视频采集与压缩模块、 无线收发模块及电源模块4 部分构成, 如图2 所示。 其中, 视频采集与压缩模块由Cortex A9 处理器、 摄像头及H.246 视频压缩编码电路组成。 云台驱动控制系统由STC89C51和驱动模块构成。 Cortex A9 处理器运行Linux操作系统, 用来完成摄像头的驱动与加载、 视频的采集与H.246 压缩编码。STC89C51 用来接收控制指令, 完成电机的驱动、 舵机云台转动等任务。
3 视频流服务器子系统
视频流服务器主要由连接监听模块、 远程连接模块、 流媒体控制模块、 数据处理模块构成。 其中数据处理模块由数据收发模块、 数据解码模块及视频文件构成, 如图3 所示。在服务器端, 主要通过Socket和客户端实现通信, 向客户端提供视频流服务。
服务器端通过socket=new socket() 创建客户端的Socket对象, 然后通过调用Socket对象的socket.connect方法, 建立服务器端和客户端的连接。 当连接建立起来后, 通过调用Socket对象的socket.get Input Stream() 方法获取服务器端的图像数据[3]。
4 移动视频监控终端子系统
移动视频监控终端子系统在完成用户身份验证后, 通过4G网络或Wi Fi接入Internet。 主要实现如下几个功能: (1)根据用户需求, 选择不同的通道, 向视频采集端云台驱动机构发不同的控制指令, 控制云台的旋转, 完成特定监控区域特定方向的视频采集;(2) 根据用户需求, 向流媒体服务器发送请求连接指令, 当连接成功后, 流媒体服务器开始视频传输到移动终端, 其客户端的设计流程如图4 所示。
5 结语
随着微处理技术、 移动通信技术及现代人生活节奏的加快, 视频监控的智能化、 远程化、 移动化是未来的发展趋势。如何实现监测区域全方位、 实时的移动监控及关键画面的保存将非常有意义。 提出的设计方案采用B/S架构, 远程端采集到的视频数据经H.246 压缩编码后存放于视频流服务器, 移动视频监控端采用Browser查看指定区域指定方向的视频监控画面。
远程视频采集端采用主副双处理器结构, 分别用来实现视频的采集与H.246 压缩编码和云台的全方位转向控制, 减轻了单一处理器的负荷。 如果在客户端添加相应的图像视频分析等软件, 可以为用户提供更加具体的远程现场的环境信息[5], 经过简单扩展后, 可以广泛地应用于物联网领域。
摘要:详细给出了基于Android平台的远程视频监控系统的设计方案。该系统由远程视频采集端、视频流服务器及移动监控终端构成,采用开源的多媒体框架FFmpeg对视频进行H.246编解码,采用RTP/RTCP协议来传输视频数据,有效地提高了视频的压缩率和实时性。
Android监控 篇6
关键词:GPS,Android,定位导航技术,智能移动终端,监控技术
0 引言
进入二十一世纪以后, 移动通信和互联网得到了迅猛的发展, 手机产业的发展和互联网的成功, 给人们的日常生活带来许多实惠和便利。为手机消费群体搭建一个合适的平台, 提供良好的服务支持具有巨大的市场和开发前景。宽带无线技术和智能移动终端技术的发展, 孕育了移动互联网 (Mobile Internet, 简称MI) 这一新兴的互联网服务。在移动无线通信和智能移动终端的基础上, 移动互联网形成了软件、应用和终端三个层面。终端层包括智能手机、平板电脑、电子书、MID等;软件包括操作系统、中间件、数据库和安全软件等。应用层包括休闲娱乐类、工具媒体类、商务财经类等不同应用与服务。
Android平台与Google Map API的结合使得定位导航在Android手机、移动终端中的功能日渐强大。基于北斗/GPS的定位导航系统已成功应用于工程测绘、交通运输、日常通信、系统监控、辅助生产作业、防止自然灾害和国家安全等诸多领域[2,3,4,5]。当下, 移动互联网的发展和Android平台的日渐成熟, 位置定位跟踪服务应用研空间的日益扩展。在此前提下, 将定位和数据服务应用于移动智能终端, 将其在传统的监测监控领域进行实现成为一种可能。在本文中将探讨建立起一个Android平台下的Android智能监控系统, 借助定位导航技术对作业生产进行智能化数据管理, 实时状况监控。
1 路径规划算法
在利用定位导航技术提供位置和路径导航时, 不可避免地会遇到一个问题:求解最短路径。最短路径问题是图论中比较经典的算法, 目前最短路径的规划算法主要有:Floyd最短路径算法、Dijkstra最短路径算法、A*最短路径算法、双向搜索算法等[2]。
评价一个算法优劣的重要指标是时间复杂度, 它在一定程度上反映了算法运行效率。算法的时间复杂度与算法所采用的数据结构有着直接关系。通过各路径规划算法时间复杂度对比分析可知, A*算法运算效率高于Dijkstra算法和Floyd算法, 而双向搜索算法需要在真实的路网中经过多次试算比较后, 才能确定取舍, 故选取A*路径规划算法进行优化[2,3]。
下面是A*最短路径算法分析
启发式搜索就是在状态空间中对每一个搜索位置进行评估, 获取最佳的位置, 根据最佳位置, 不断搜索直到获得目标位置。A*算法是启发式搜索中最好优化的算法, 借助启发函数, 在从当前搜索结点往下选择时, 选取代价最小的结点作为下一步搜索的结点并跳转其上[4]。
设当前节点n的启发式估价函数为f (n) , 则A*算法公式可表示为:
其中, 从初始点经当前节点n至终点的估价函数即为f (n) , 从初始点至当前节点n的实际代价的量度即为g (n) , 从当前节点n至终点的最佳路径的估计代价即为h (n) 。若h (n) =0, 则表示无任何启发信息, 此时的A*算法就等价于Dijkstra算法。当然使用者可选择h (n) 的具体形式[5], 例如选定最优目标为时间最短, 则节点n的估价函数为:
其中, t (n) 即为出行时间, dm (n) 为路段m的长度, vm (n) 为路段m的实际行驶速度, d (n) 为当前节点n至终点的欧式距离 (即最短距离) , v为估计最大的行驶速度。估价值h (n) 的选择直接影响着最短路径的获取[8], h (n) 与实际中的值越接近, 取的估价函数f (n) 就越好。
通过A*算法的原理设计的最短路径算法可描述为:
创建open和close两个表, open表中保存所有已生成而未考察过的节点, close表则记录被考察过的节点。下面将介绍A*算法的详细步骤:
①open表中初始仅含起始节点, 则此时其g值为0, 也即费用为0;close表则为空表。
②对open表是否为空进行判断, 若其为空, 则表示失败;不为空则在open表中找到估价值f最小的节点X, 并将该节点移至close表中, 且判断其是否是目标节点。若该节点即目标节点, 则转步骤③;若该节点不是目标节点, 则需根据地图道路信息库中的道路节点数据对该节点扩展生成后继节点。对每个后继节点n都要进行如下操作:
通过g (n) =节点X费用+从节点X到n费用, 得出节点n的费用。
若open表中的任一个节点和节点n相同, 则需判断节点n的g值是否最小。若其g值最小, 则open表中相同节点的费用将由节点n费用所取代, 并创建相匹配节点的后向指针指向X。
若n位于close表中, 且与某一节点相匹配, 需判断节点n的g值是否为最小。若其g值最小, 则与节点n相匹配节点的费用将被节点n费用所取代, 且该匹配节点的后向指针应指向X, 然后将其移至open表中。
若open表和close表中都不包含节点n, 则将节点n的后向指针指向X节点, 随后节点n则移至open表中。通过f (n) =g (n) +h (n) 计算出节点n的估价值, 重复步骤②。
③从节点X后向指针逐一遍历节点直至起始节点, 这就是计算所得的最短路径。
2 关键技术分析
2.1 现场数据采集
现场数据的采集, 最主要的工作就是要建立起Android现场终端与数据采集硬件端的蓝牙通信。在Android系统中蓝牙传输数据的方式与Socket相似。主要的实现步骤如下[6,7]:
①在Android Manifesst.xml中设置使用蓝牙功能的权限, 同时注册广播接收者Broadcast Receiver监听蓝牙设备和状态。以下是关键代码:
②搜索蓝牙设备获得设备信息。短距离内搜索蓝牙设备或者获得已绑定的蓝牙设备, 搜索到蓝牙设备后, 便可以通过广播接收者Broadcast Receiver的on Receive捕获现场设备信息。
③取得用于配置Bluetooth Socket和BluetoothServer Socket类构造方法参数的蓝牙设备地址。
④通过蓝牙通信的UUID (Universally Unique I-dentify, 全局唯一资源标识符) , 配置蓝牙数据通。
最后使用Bluetooth Socket对象取得输入输出流读写蓝牙设备。
2.2 设备定位功能模块
通过Android系统中提供的定位API的方法, 获得设备的位置信息, 关键方法和步骤如下[7,8]:
①使用Criteria对象设置Location Provider的选择条件, 选择合适的Location Provider。关键代码如下:
②通过Location Manager.request Location Updates方法请求更新位置。利用Location实例对象的get Longitude () 方法和get Latitude () 方法获得位置信息。
在系统中除了可以直接获取现场终端的地址信息外, 还期望以更加直观的方式呈现出当前终端的地理位置。为实现这一目的, 可以引进地图技术。通过百度或者Google地图可以将系统中每一个现场终端的位置给标记出来。具体步骤:
首先, 现场终端通过定位技术, 获取经纬度信息。然后, 现场终端通过网络通信模块向监控端发送消息, 将经纬度信息发送到监控端, 监控端接收到数据后, 解析经纬度。最后监控端将现场终端的位置标记在地图上。
2.3 网络通信实现
系统的通信实现可采用多种实现形式, 可以基于无线网络, 也可以通过GPRS 3G4G网进行实现。在此仅使用Wi-Fi作为通信媒介的Wi-Fi Direct方式实现网络通信[7,8,9]。
使用Wi-Fi Direct技术, 建立数据传输通道。主要经由以下几个步骤来完成。
①要有一个Wifi P2p Manager类。在Android中, 该类提供了相关的API, 用于发现并与其它Wi-Fi Direct设备建立连接。
②发现Wi-Fi Direct设备。注册一个用于监听Wi-Fi Direct请求的广播接收器。要发现WiFi Direct设备, 首先必须取得相应的网络权限。这些权限需要在Android Manifest.xml文件中进行配置。
其次, 为了正确监听、捕获Wi-Fi Direct设备的通信事件, 还需要为广播接收器添加Action。这些Action参数主要用于识别Wi-Fi Direct的相关事件。
最后, 广播接收器的注册有两种方法, 一种为动态注册, 一种为在程序代码中注册。
要获取周围Wi-Fi Direct设备, 必须借助于Wifi P2p Manager的discover Peers () 方法。关键代码如下:
③连接到Wi-Fi Direct设备。
要连接到周围可用的Wi-Fi Direct设备, 需要用到类:Wifi P2p Device。生成该类的对象, 利用Wifi P2p Device对象调用Wifi P2p Device的connect方法建立连接。
3 系统实现
本监控系统是以在Win7操作系统下的Eclipse软件作为开发工具, 同时选择高通公司生产的QRD8X25智能手机、小米M1S和Android模拟仿真器为调试工具。其中以QRD8X25作为监控端, 小米M1S作为现场终端, 中转服务器端建立在Lenovo G480笔记本电脑上。
登录成功后, 系统进入监控初始化界面。在监控初始化界面, 用户可以选择系统现场终端的查看方式:列表形式或者地图形式。
选择列表显示, 现场终端将以列表的形式出现在显示控件当中。在显示控件中可查看每个现场终端的地理地址和IP地址, 为用户提供最基本的现场终端信息。如图1所示。选择一个要查看的现场终端设备, 点击查看终端按钮。被选现场终端基本信息和设备的数据情况都会显示在交互界面中。在此界面中, 点击相应的按钮便可查看现场数据的当前值和历史值。
如果选择现场终端的查看方式是地图查看, 如图2所示, 每个现场终端将根据自身的定位信息显示于地图上。系统的管理员可以直观地看到每个终端所在的监控位置。而且点击地图上显示的位置标志物, 可以查看每个现场终端的基本信息。
4 结束语
本文提出了将Android平台下的定位导航技术应用于监控系统的方案, 结合Android的相关开发技术对整个系统进行了分析、设计。基本构建了一个Android平台下的智能监控系统, 将定位技术应用于监控系统当中, 避免了传统的数据监控系统中人机交互界面不够友好、数据管理不够规范、故障确定不及时、现场设备维护效率的弊端。本系统中, 为每一个现场数据设备设定一个明确的身份信息, 加强了对现场设备与现场数据的规范化监控、管理。
参考文献
[1]龙昌生.北斗/GPS双模导航终端关键模块的设计与实现[D].重庆:重庆大学, 2011.
[2]隆志坚.基于Google Map的导航与交通信息采集系统的设计与实现[D].长沙.国防科技大学, 2012.
[3]张广林, 胡小梅, 柴剑飞, 等.路径规划算法及其应用综述[J].现代机械, 2011 (5) :85-90.
[4]Hwan Il Kang, Byunghee Lee, Kabil Kim.Path planning algorithm using the particle swarm optimization and the improved Dijkstra algorithm[J].Computational Intelligence and Industrial Application, 2008, 12 (2) :1002-1004.
[5]Xiao Ji-xian, Lu Fang-ling.An improvement of the shortest path algorithm based on Dijkstra algorithm[J].Computer and Automation Engineering (ICCAE) , 2010 (2) :383-385.
[6]Ishikawa H, Shimizu S, Arakawa Y.New parallel shortest path searching algorithm basedon dy namically reconfigurable processor DAPDNA-2[C].IEEE International Conference, 2007 (6) :1997-2002.
[7]陈刚, 付少锋, 周利华.A*算法在游戏地图寻径中的几种改进策略研究[J].科学技术与工程, 2007, 22 (15) :54-59.
[8]田鹏飞, 王剑英.动态最短路径算法及其仿真[J].计算机仿真, 2007, 33 (6) :71-76.
Android监控 篇7
目前,运用Android设备通过无线传感器网络对设备进行监控,已在智能家居、物联网、人体医疗等领域有所发展,因此实时性、可靠性逐渐成为监控系统的关键要素。文献[2] 提出了基于WINCE的老年健康监护系统设计,该系统应用于老年健康监护,将Zig Bee模块集成在嵌入式终端设备平台中,能实时显示用户的心率、血氧、脉搏、体温等数据,但是其采用的是WINCE系统,相比其他嵌入式操作系统,操作比较复杂,界面不够友好,并没有考虑到数据传输的实时性和系统应用软件的可靠性等问题。文献[3]提出了运用Android系统对智能家居网络进行的控制,其界面友好、操作简单,通过将家居设备的信息上传至Internet,嵌入式Android平台只需要访问或发送信息在固定的网络地址,就可以对网络进行相应的上行或下行的操作,由于该家居网络的信息全部需要从Internet网络中获取,这就大大影响了该系统实时性。 文献 [4]是基于车联网的车载智能终端的研究,其无线通信模块建立了导航系统与交通监控中心的连接,并实现了信息传输, 但是其网络拓补为点到点的连接,没有考虑到系统耗电量、数据发送接收实时性等问题。文献[5-6]分别将Android系统运用在IEEE802. 11网络和医疗物联网之中,其系统运行稳定,功能丰富,但是可扩展性与移植性不足。
本文设计和提出了一种基于Android操作系统的实时系统监控平台,深入研究了Android并结合了无线传感网的优势,提出一套行之有效的监控体系,保证了整个监控过程的实时性、可靠性,为整个监控系统提出完整的技术解决方案。
1实时监控系统的设计
1.1系统架构
Android系统作为智能化的嵌入式操作系统,现已运用在许多终端设备之中。然而,把Android系统运用在实时监控中的实例还并不多。将搭载Android系统的终端设备作为监控系统的核心,同时保证监控的实时性、可靠性是系统监控的关键点。监控系统的设计如图1所示,基于Android的实时监控平台是整个监控系统的核心,它可以通过对无线通信模块的控制,达到控制周围传感器节点的目的,同时监控平台也可以通过2G/3G网络与外界进行互联报警等操作,从而避免了信息孤岛的出现。
为了保证系统监控的实时性,平台在设计中将监控模式分为普通监控模式和紧急监控模式,而平台判断数据是否紧急,是通过数据结构中( 如图2) 的报警标志位判断的。这样既有利于提高监控的可操作性,又保证了监控的实时性。
1.2普通、紧急监控模式设计
系统在监控的过程中,系统的监控实时性是评价系统好坏的有力指标。平台的监控模块分为两个部分: 普通监控模块和紧急监控模块。其中,普通监控模块服务于日常的监控, 它对监控的实时性要求不高,但需要很好的可操作性、显示界面、数据分析与存储等功能。在普通监控的过程中,如图3所示,首先传感器数据通过传感器节点采集,然后通过节点的射频模块将数据发送给无线网络协调器,经过相关处理后,通过RS-232或者USB接口将数据上传至Android监控平台,Android监控平台通过数据检测模块检查上传数据报警标志位, 判断是进入普通模式还是紧急模式,若上传数据中的报警标志位为0,则进入普通的监控进程,经过Android的framwork共享类以及自身apk方法类的处理,在用户界面上显示相应的监控信息,同时,用户也可根据自身的需要通过触摸等方式去下达指令,从而达到控制整个系统的目的。
然而,在紧急状态时,平台也可自行进行监控的智能化处理,如图4所示。报警数据在传入Android监控平台后,运行在内核态的监控模块检测到报警标志位为1,则立即对数据进行两方面处理: 一方面调用报警模块经由2G/3G网络向其他终端报警; 第二,立即处理信息向协调器发送相应下行管理命令,从而达到监控整个系统的目的。
1.3系统实时性实现
在对系统进行监控的过程中,影响系统实时性的因素很多,如硬件处理器速度、内核调度器的调度策略、软件自身的运行效率等[7]。就Android系统而言,系统的调度策略依赖于Linux BFS调度策略,其进程划分为实时进程和普通进程[8]。普通进程大多时候运行在系统用户态中,优先级较低, 实时性较差,易受其他普通进程的干扰,但是可操作性强。实时进程运行在系统的内核态中,优先级高,实时性好,不受其他普通进程的干扰[9,10,11],然而可操作性差,用户不易对进程进行相应的操控。针对以上特点,本文设计了普通监控模式和紧急监控模式。普通监控模式基于普通进程,服务于普通的监控场景; 而紧急监控模式基于系统进程,服务于在紧急状态下监控的实时性需求。
数据监控模块嵌入在Android的核心库中,它的作用是检测数据的报警标志位是否1,从而判断需要创建的进程是普通进程还是系统进程。如图5所示,RS-232或USB驱动上传的数据流进入数据检测模块,经过数据检测模块的处理, 若为0,则进入普通监控模块,由Zygote进程创建普通监控进程; 若为1,则进入紧急监控模块,由Zygote进程创建紧急监控进程,它与普通进程不同的是,它是继承于System server相关类的资源,它运行在系统内核态中,具有高优先级,不易被普通进程所干扰,具有较好的实时性与可靠性,所以当数据检测模块判断出信息异常后,监控进入紧急状态,保证了监控的实时性,可靠性。而普通监控进程,运行于系统用户态,它可以解析数据类型,并分类显示和存储,以便用户进一步的处理。
2系统验证
为了验证本文提出的嵌入式无线网络监控平台的实时性、可靠性,及其基本功能,搭建了硬件以ARM11处理器为核心,软件以Android平台为核心的体域网医疗监控系统。体域网是监控人体生命体征的无线网络,由附在人体周围或嵌入人体内部的、小巧的、可通信的传感器、IEEE802. 15. 6通信协议栈和智能终端组成,其中智能终端就相当于嵌入式无线网络监控平台的角色。
2.1基本功能测试
为了测试平台监控数据的上下行,以及存储、异常数据处理等附加功能,搭建了由4个网络传感器节点与体域网智能监控平台组成的一个星型网。
图6所示为人体体征监控上下行数据的功能测试结果, 图中左侧为用户手持体域网监控平台; 中间为监控平台显示用户的心率、体温信息,探测到心率数据异常报警; 右侧为用sniffer抓包软件获取的通信数据包,图中反映出当发现异常数据时,平台通过下行命令控制网络发包频率。
图7为平台数据管理,报警等附加功能的测试,图中左侧为运用Sqlite数据库对体征数据的存储; 中间是对心率监控的心率曲线; 右边为对异常数据处理后,通过GPRS模块进行的短信报警。
2.2监控平台实时性测试
为了保证整个体域网监控系统的实时性,由体域网个人监控平台下行管理命令的处理时间应小于体域网的超帧周期。超帧的结构( 如图8) 可分为3个阶段: 信标帧发送阶段 ( B) ,命令帧发送阶段( CAP) ,数据帧发送阶段( CFP) 。信标帧阶段分配1个时隙,CAP阶段分配6个时隙,CFP阶段分配9个时隙,每个时隙30 ms,所以信标 帧阶段所 占时间为30 ms,CAP阶段6 × 30 = 180 ms,CFP阶段为9 × 30 = 270 ms,于是总的超帧周期为16 × 30 = 480 ms。
图9是两种监控模式的测试结果。图中两种方式的所测得到的时间皆小于480 ms,说明系统发送下行命令所需时间皆在一个超帧周期之内,基本满足监控实时性的需要。而在紧急情况下,监控平台的监控时间为121 ms < 180 ms,说明监控平台在紧急情况下,监控命令在一个超帧周期的CAP阶段就有很大概率被发送,这就保证了紧急状态处理的实时性。
3结束语
Android监控 篇8
关键词:视频监控,中继传输,无线网络,端到端连接
家庭视频监控是智能家居的重要组成部分,人们希望能随时随地查看家中各个房间的监控视频,以确保家庭成员和环境的安全。传统的监控系统装配体积较大的监控设备和服务器,采用有线传输监控画面,具有布线复杂、可扩展性差、灵活性低的特点。随着无线通信网络技术的发展和网络带宽的提高,视频监控可以通过更加方便灵活的无线网络传输数据,而采用802.11单跳网络传输视频数据存在覆盖范围小,边缘地带信号质量差的问题,不能很好地满足家庭视频监控的要求[1,2,3]。同时,视频点播以及视频监控普遍采用服务器转发模式,并持续进行视频数据采集与传输,对采集端和服务器处理能力以及网络传输带宽要求较高。而在传输端和客户端之间建立直连,按需采集传输视频数据,能够减小资源消耗,并可在一定程度保障家庭视频监控信息的安全。近年来,Android智能手机和平板电脑已经得到普及,因而,面向Android客户端的P2P无线视频监控系统将具有广泛的应用价值。
1 系统设计
视频监控的目的是帮助人们利用网络和终端实时访问家庭监控视频,掌握家中的安全状态,采集家中的监控视频信息,客户端通过采集端IP地址请求访问监控视频。在家庭局域网中,采集传输端和客户端可通过分配的静态局域网络IP地址建立端到端(Peer to Peer,P2P)连接。而当客户端通过移动互联网(或互联网)进行远程访问时,由于采集传输端和客户端多没有全球惟一的IP地址,需要借助外部服务器进行地址转发帮助建立连接。所以整个视频监控系统由视频采集传输端、客户端和外部服务器组成。在一个无线接入点(Access Point,AP)不能覆盖家庭范围的情况下,可使用多个AP中继传输扩大监控范围。系统连接关系示意图如图1所示。
1.1 无线视频采集传输模块设计
为了适应安装灵活、低成本、高性能的应用需求,系统采用ARM处理器作为视频采集传输端的处理核心。在常规工作模式下,按需采集和传输数据,没有查看请求时不启动视频采集传输流程,可极大地降低不必要的信息传输流量。为了有效保障家庭安全,系统通过红外传感器、接近传感器、玻璃破碎传感器检测外部接近和意外闯入事件,通过事件驱动启动视频采集流程进入事件驱动监控模式,并实时推送告警消息。在事件驱动监控模式下,客户端可远程存储监控视频信息。也可通过图像检测的方法判断是否有异常闯入事件。
无线视频采集传输模块硬件组成包括ARM处理器、红外传感器、接近传感器、玻璃破碎传感器、USB摄像头、SD卡、无线局域网模块。传感器数据输出口与处理器输入口连接;USB摄像头采集视频数据可存储于大容量SD卡;无线局域网模块通过SDIO接口与处理器连接,接入家庭无线局域网。Android智能终端作为接收客户端。传输模块硬件组成如图2所示。
1.2 无线视频监控系统软件设计
现行的家庭远程视频监控系统多通过第三方服务器进行视频的转发和存储,家庭内部视频信息存储于外部服务器上,将带来隐私保护的安全问题,同时也会浪费不必要的网络资源和服务器资源。P2P点技术主要特点是整个网络结构中不存在中心节点,每个节点能同时作为信息提供者和信息消费者,打破了传统的服务器与客户端的界限。无线视频监控系统可能受到的隐私安全威胁主要来自存储视频泄露和视频采集传输端非法访问。采用P2P系统架构可避免家庭视频监控数据通过外部服务器进行中转和存储,能有效保护家庭隐私。针对视频采集端非法访问,可通过身份验证和视频流加密相结合的方法,保证视频会话连接的可靠和数据传输的安全,进一步提高无线视频传输系统的保护隐私能力。
因此,本系统采用P2P架构。在无惟一IP地址的远程客户端互联网访问时,通过服务器与采集端交换地址和端口信息,以建立端到端连接。当多个客户端同时访问一个视频采集传输终端时,在采集传输端和客户端建立一个用户数据报协议(User Datagram Protocol,UDP)多播组广播监控视频数据,实现同时访问。系统软件结构如图3所示,系统分为采集传输端、客户端和服务器端软件。其中采集传输端由视频采集、压缩编码、数据通信、报警推送和发送端控制逻辑5个模块组成。发送端控制逻辑用于检测环境异常和用户传输请求,控制采集传输和消息推送模块的状态。客户端软件分为数据通信、解压解码、视频播放、推送接收、接收端控制逻辑模块。接收端控制逻辑管理视频数据请求。
2 无线视频传输系统主要功能模块设计
传输系统主要功能模块包括数据采集、视频编解码、数据传输和端到端连接模块。
2.1 数据采集
因为无线视频传输系统采用按需采集和按需传输的模式,需要采集系统在不启动视频采集传输流程的时候具有发现家庭异常情况的能力,所以使用传感器辅助检测异常情况。数据采集模块通过采集视频数据为客户端提供监控画面,通过采集传感器数据感应意外状况,从而及时推送报警信息。
一个家庭内无线视频传输系统可能配置有多个采集传输端,家庭成员持有多个客户端。一个传感器采集到异常信息则给所有家庭成员客户端推送报警信息。采集端传感器在家庭成员外出或休息时可开启,传感器异常报警推送流程如图4所示。玻璃破碎传感器检测状态异常,表明窗户玻璃突然破碎;红外传感器和接近传感器状况异常,则表明有生物靠近门窗边并持续接近。两种情况下均认为家庭安全受到外来人员威胁,发送报警推送请求。
2.2 视频数据编解码
视频传输对网络环境的要求非常高,要实现大容量视频数据和视频存储,必须要先对采集到的视频数据进行压缩处理。视频编码领域视频编码标准有H.263,H.264,H.265,MPEG-1,MPEG-2,MPEG-4等标准,其中,H.264编码平均比H.263节省50%的码率,能在低码率情况下提供高质量的视频图像[4]。并且市场上主流编解码器对H.264的支持广泛,而H.265由于硬件厂商支持不足的原因普及度不高,所以本视频监控系统编码技术采用H.264标准。H.264编解码通过视频编码层(Network Abstraction Layer,VCL)进行视频内容的高效压缩,通过网络提取层(Network Abstraction Layer,NAL)完成数据格式的封装,封装后视频数据能在Internet上利用传输协议传输数据[5]。NAL层封装后的数据为网络抽象层单元(Network Abstraction Layer Unit,NALU),H.264的基本数据流由一系列NALU组成。
H.264编解码实现方式有硬件编解码和软件编解码,硬件编解码利用支持H.264标准的解码集成电路或含专用解码芯片和系统芯片编解码数据;软件编解码实现主要利用支持H.264标准的解码软件。硬件编解码处理速度比较快,延时小,占用CPU资源少,本系统视频数据的压缩选用硬件编码。但由于目前大部分Android设备不支持硬解码,所以采用软件解码视频流。
2.3 视频数据传输
家庭无线视频监控系统中原始视频数据经过H.264编码后,需要通过传输层协议封装传输。TCP/IP协议栈传输层基本协议包括传输控制协议(Transmission Control Protocol,TCP)和UDP。其中TCP保证数据可靠传输,但传输时延较大,直接采用TCP传输视频监控数据不符合实时传输的要求;而UDP传输简单、实时性强,但不保证传输数据可靠性和顺序到达,客户端收到的H.264视频数据包可能无法正确按顺序还原。实时传输协议(Real-time Transport Protocol,RTP)是建立在TCP,UDP上的传输层协议,为数据提供了具有实时特征的端对端传送服务。RTP协议数据通过给数据包分配序列号的方法来确保视频数据接收后按照顺序恢复。在本系统中采用基于UDP的RTP传输实时视频数据。
使用RTP传输H.264视频流的方法是从H.264视频中剥离出NALU。每个NALU前用起始码0x0001作为一个NALU的起始标识。RTP在NALU前添加RTP包头,然后将包含RTP包头和NALU的数据包发送出去。
2.4 网络连接建立
在视频监控系统中,传输端与客户端建立连接时,需两者处于同一局域网或者一方有合法公网地址。采集端和客户端所处网络和分配IP可能情况见表1。
序号1所示情况可以直接通过局域网IP发起连接请求。序号2、序号3所示情况则不能直接请求建立连接,需通过网络地址转换(Network Address Translation,NAT)将采集端内部地址映射为一个合法公网地址;802.11单跳网络无法覆盖整个家庭范围,家庭内部使用多AP部署无线网络时,需要保证多AP所在网络属于同一局域网。网络运营商给普通家庭用户分配的IP一般是动态变化的,没有固定的公网IP,所以不能通过端口映射到公网IP的方式直接建立网络连接,局域网内的监控设备和局域网外的智能终端需要通信,必须要进行内网穿透即NAT穿透[6]。
在NAT穿透技术中,UDP打洞(Hole Punching)技术通过聚集服务器,转发公有端点地址消息,使两个客户机建立P2P UDP对话,不需要服务器和客户端支持专有协议。在视频监控系统广域网的应用场景下,如表1中序号2、序号3情况所示,外网访问方案采用UDP打洞技术能最大程度减少服务器的开销。UDP打洞技术原理如图5所示,A表示采集传输端,B表示客户端。A向服务器发送UDP消息告知其设备标识符和NAT地址,并在局域网地址上监听UDP数据报。当B希望与A建立P2P连接时,通过A的标识符向服务器发送UDP请求查询其NAT地址,服务器向B转发A的NAT地址,用户B向A的NAT地址发送UDP数据包,此时,用户B的UDP数据包经过NAT A的端口映射,转发给用户A监听的UDP端口,A与B完成P2P连接建立的工作。
为了扩大AP信号覆盖范围,无线网络通过多个AP通过桥接或中继器的方式连接形成分布式无线(Wireless Distribution System,WDS)网络。中继模式下从某一接入点接收的信息包通过分布式无线系统连接转发到另一个接入点;桥接模式接收的信息包只能被转发到有线网络或无线主机。由于只有中继模式可以进行WDS到WDS信息包的转发,所以系统中AP在中继模式下建立连接,实现信号中继和无缝切换,从而使接入不同AP的采集端和客户端处于同一局域网网段。
3 实验及结果分析
为了检验所设计视频监控系统的可行性以及性能,通过搭建实验开发平台进行实验验证,并对视频传输系统的性能进行了分析。
3.1 系统实验平台
系统的测试实验中硬件平台的搭建处理器采用ARM11处理器,Linux 2.6.28系统内核版本,处理器自带MFC(Multi Format Codec)编码器,支持H.264格式的编解码;USB摄像头采集视频帧大小为320×240;接收端Android手机屏幕大小为480×800。
3.2 测试结果
本系统客户端监控画面如图6所示,屏幕显示播放画面大小为480×320,帧率为25 f/s。
为了测试数据传输的实时性,进行了数据包时延实验。采集传输端与AP间距离小时,使用单个AP传输无线信号;间距离大、网络信号弱时,采用两个AP中继传输。采集传输端和客户端位于不同局域网,数据包发送时间和接收后还原时间差值为接收时延。测试的网络带宽为2 Mb/s,两种情况下分别进行了50次实验,每次发送100个数据包,数据包发送时间到完全接收的延时均小于0.5 s,说明网络正常情况下,数据传输实时性强。
为了获取视频数据正常传输所需的最小带宽,在单跳无线网络和AP中继无线网络中分别进行了接收成功率实验。限制采集端IP地址最大上行带宽从0 Kb/s依次增加25 Kb/s直至300 Kb/s,记录不同带宽下成功收到的视频帧数,计算平均接收成功率,结果如图7所示。
从图7中可以看出,在单跳网络中,带宽较小时有大量丢包,带宽增加后成功接收率随之增大,带宽增大到200 Kb/s时视频帧基本均能成功接收;两个AP中继传输时,视频帧平均接收成功率与单跳传输接近,带宽增大到250 Kb/s时视频帧基本均能成功接收,传输的稳定性也只略有下降。说明两种情况下监控视频传输需要的带宽均较小,在网络带宽正常情况下丢包率很小,传输稳定,家庭无线网络带宽能够满足监控要求。
4 结语
本文设计了一种基于ARM处理器、存储设备、USB摄像头、传感器、无线网络模块和Android客户端的无线视频传输系统,按需采集传输视频数据。设计了系统的硬件组成架构和软件功能模块,实现了无线网络下监控视频远程中继传输,并通过实验测试了系统数据传输性能。本文设计的系统部署灵活,能适应家庭视频监控不同使用场景的需要,获取的监控画面清晰稳定,可以满足无线网络环境下家庭视频监控的要求。下一步将重点解决身份验证、视频流加密和图像异常检测等技术问题,进一步提高视频传输系统的保护隐私能力。
参考文献
[1]林飞龙.基于ARM的远程监控报警系统的研究与设计[D].长沙:湖南大学,2014.
[2]张超.基于嵌入式Linux的交通视频采集传输系统[D].西安:长安大学,2013.
[3]谢慧芝.基于移动终端的嵌入式视频监控系统的研究与应用[D].南昌:南昌大学,2013.
[4]孙克辉,尧平,洪娟娟,等.基于JRTPLIB库的H.264视频传输系统[J].计算机系统应用,2011,20(12):21-24.
[5]单俊丽.基于Android的流媒体客户端的研究与设计[D].西安:西安电子科技大学,2013.
[6]梁坤.一种面向安全虚拟网络的NAT双向穿透方法[D].长沙:湖南大学,2010.
[7]Rosenberg J,Mahy R,Matthews P.Traversal using relays around Nat(TURN):relay extensions to session traversal utilities for Nat(STUN):RFC 5766[S].[S.l.]:FRC,2010.
Android监控 篇9
随着现代3G和LTE移动网络的飞速发展, 视频监控系统正朝着数字化、网络化、功能综合化的方向不断发展。然而, 市场上广泛使用的第二代 (基于“PC+多媒体卡”数字视频监控系统) 及部分第三代视频监控系统 (基于IP网络视频监控系统) 由于其推广成本及灵活性等方面的缺陷已经越来越不能满足大众用户的需求。因此, 构建可灵活配置的移动视频监控是未来监控系统发展的必然趋势。同时, 伴随着Android智能终端的大面积普及应用, 开发面向Android平台的移动视频监控系统具有广阔的应用前景。
H.264/AVC是由ITU-T和ISO联合制定的低比特率视频编码标准, 它具有压缩比高、图像质量好、网络适应性强等特点, 其更能满足移动视频环境低功耗、网络不稳定的应用需求。本文设计了一种基于H.264/AVC视频压缩标准的实时移动视频监控系统。系统框架采用C/S模式设计服务器和Android客户端。客户端主要通过RTP/RTSP协议来访问流媒体服务器。本系统可以实现将视频压缩和网络功能集中到了较小的嵌入式设备中, 利用网络对视频监控设备进行远程监控并获取实时监控视频。
本文主要从移动视频监控客户端的实际应用出发, 分需求分析与建模、具体功能模块设计与实现、系统整合与测试三个方面阐述本项目移动监控终端的开发过程及相关软件设计思想。
1 系统概述
提出的移动视频监控系统采用C/S架构方式, 由视频采集压缩模块、流媒体服务器、Android客户端三部分组成。摄像头采集的模拟视频信号经过AD芯片转换成数字视频信号, 数字视频信号经过嵌入式处理器进行预处理, 并采用H.264/AVC压缩编码。编码后的视频流通过网络传输到流媒体服务器, 由流媒体服务器负责对视频流进行网络传输优化与分发, 以此提高视频的流畅性及传输的实时性。Android客户端则利用RTP/RTSP来访问传输来的待解码视频流并对解码码流进行后处理。
Android移动视频监控客户端需要在已有流媒体服务器的基础之上, 完成流媒体的传输、解码与播放。同时, 必须保证系统整体的实时性与可靠性。此外, 随着移动互联网的飞速发展, 用Android作为流媒体采集终端的需求也越来越多。因此, 本客户端除了实现流媒体的播放, 还可实现对摄像头取景的实时串流功能。
2 需求获取与建模
在整个安防监控系统中, Android移动视频监控客户端是负责将监控画面呈现给用户的重要途径。而画面的传输主要是通过WIFI与移动网络来完成。由于无线网络的不稳定性与带宽限制, 实时监控画面必须经过压缩处理和纠错编码。因此, 移动客户端必须针对收到的流媒体数据进行高效解码, 这就要求客户端的解码必须高效, 才能保证系统的实时性。此外, 为了可以给用户提供更加灵活的移动安防体验, 客户端还应实现将摄像头取景并实时串流到其他终端的功能。根据上述分析, Android客户端的设计主要包含以下3个模块 (如图1) :流媒体设备地址管理模块、流媒体视频播放模块和摄像头取景串流模块。
3 移动视频监控客户端设计
3.1 系统主要功能设计
3.1.1 视频播放流程设计
视频播放部分, 用户通过UI将流媒体设备的地址存入SQLite数据库中。当用户通过点击选择相应的设备时, 程序就会将选中设备的地址传入相应的方法, 最终调用FFMPEG视频解码库进行播放。
3.1.2 实时串流设计
实时串流部分, 用户通过UI配置RTSP服务协议的各项参数, 并将其存入Shared Preference, 再根据这些参数调用RTSP核心库, 启动流媒体服务。
3.2 移动视频监控客户端主要模块设计
3.2.1 流媒体设备地址管理模块
*模块功能与意义
本模块主要实现对流媒体设备地址的管理, 包括增、删、改、查等数据常见操作, 此外, 当设备较多时, 本模块还可利用XML文件进行批量导入, 最大程度上方便用户。用户可通过本功能模块对流媒体地址进行维护与管理。本模块主要涉及到的技术是SQLite数据库与XML文件解析。
*模块设计主要方法
(1) 三层架构
三层架构作为企业级开发的通用技术, 广泛地应用在数据库访问的领域中。其核心思想是解耦和, 即数据访问方法与业务逻辑解耦和、用户界面与业务逻辑解耦和、数据模型与数据访问方法解耦和。三层架构具有三个清晰的层次, 即:数据访问层 (Data Access Layer, DAL, 负责低层的数据库操作) 、业务逻辑层 (Business Logic Layer, BLL, 负责数据有效性验证等业务逻辑) 和表现层 (UI, 负责与用户的直接交互) 。这三层分别负责不同的功能, 将各层之间的耦合程度降到最低。在本项目中, 三层之间传递的数据模型是对流媒体设备地址的抽象, 模型定义如图2所示, DAL层主要对外接口定义如表1。
(2) Sqlite数据库的使用
1) 定义SQLite Open Helper的一个子类, 完成数据库的创建、升级等逻辑:
SQLite Open Helper是包装了数据库的创建、打开和更新的抽象类。其常用构造方法的方法签名如下:
SQLite Open Helper (Context context, String name, SQLite Database.Cursor Factory factory, int version)
其中第一个参数是context类型, 上下文对象;第二个参数是String类型, 数据库的名称;第三个参数是Cursor Factory类型, 第四个参数是int类型, 数据库版本。
在实际开发中, 一般显式地调用此构造方法完成对数据库的创建。当调用其get Readable Database () 方法或调用get Writable Database () 方法即可获取数据库对象 (亦即相当于JDBC中的连接字符串) 。用户可以有选择地覆写父类中的On Create和On Upgrade完成数据库的创建和更新操作。
2) 编写辅助类, 完成CRUD操作。
这里主要是通过标准的SQL语句完成增删改查功能, 即实现上述DAL层的各种接口。
3.2.2 流媒体视频播放模块
*模块功能与意义
流媒体播放是本系统最核心的部分。为了尽可能地提高移动客户端的效率, 本系统采用业界较为成熟的VITAMIO框架作为接收和解码的SDK。它使用FFmpeg作为解码器, 同时开发了针对不同移动平台的硬解码方案, 能够支持H.264/AVC、H.263、MPEG4等常见的视频编码和rtsp、rtmp、mms、http等多种流媒体协议, 使开发者可以将精力集中在最核心的业务逻辑上。
*模块设计主要方法
1) Media Player类的调用
Vitamio框架的核心是Media Player类, 在它的生命周期中, 有Idel、Initialized、Prepared、Started、Stopped、Pauseed等状态。创建Media Player对象后, 设置数据源并准备 (调用其prepare () 方法或者prepare Async () 方法) , 即可使之处于Started状态。在此状态下, 即可完成对视频的播放。
2) Surface View的使用
Surface View类可以直接从内存或者DMA等硬件接口取得图像数据, 是个非常重要的绘图容器。Surface View允许通过非UI线程的其他worker线程改变其显示内容, 因此, 该组件广泛地用于游戏开发、播放器开发等技术领域。
Surface Holder作为Surface View的持有者, 拥有Surface View的控制权。通过Surface Holder, 可以控制对应Surface View大小、像素格式、编辑Surface View中每一个像素、监听Surface View行为等等。
Surface Holder.Callback是一个监听端口, 用户可以实现用此接口接收Surface变化的消息。当用在一个Surface View中时, 它只在Surface Holder.Callback.surface Created () 和Surface Holder.Callback.surface Destroyed () 之间有效。
3) 视频播放操作代码
采用Vitamio框架中Media Player类方法的视频播放操作代码如下:
3.2.3 摄像头取景实时串流模块
*模块功能与意义
本模块将手机作为一个流媒体服务器, 将摄像头取景实时串流到无线局域网中, 使得用户可以很方便地在同一局域网的其他手机或者其他智能终端上实时查看手机的取景。本功能模块的实现是基于著名的开源项目Spydroid推荐的SDK:libstreaming实现的。该SDK可定制性较强, 可方便的设置使用的流媒体协议、分辨率、码率和帧率, 有助于提高的软件开发的效率和软件本身的稳定性。本功能所采用的传输协议是RTP/RTSP, 需采用libstreaming的Rtsp Server服务类。
*模块设计主要方法
1) 注册服务
Rtsp Server是一个Android服务, 所以要在android程序的Manifest文件中对该服务进行注册。
2) 改变端口
默认端口是8086, 可以改变RTSP服务器的端口, 当然, 这是非必需的。若想改变端口, 必须通过Shared Preference完成。先获取一个指向本Activity的Shared Preference的Editor对象, 再更新指定的端口号。
3) 配置Session Builder对象
Session Builder是Session的建造者。而Session又是服务器与客户端间通信的载体。此部分主要是设置Session Builder的一些选项, 如音频编码器、视频编码器等等。注意到Session Builder用到了单例设计模式, 整个程序共享这一个Session Builder对象。
4) 启动或停止Service。
取景实时串流的主要实现过程如图3。
4 系统测试结果及实时性分析
本系统采用H264/AVC视频编码, 其良好的压缩性能和错误隐藏机制使得系统可在较差的网络环境下完成远程流媒体的播放和实时串流操作。Android手机移动视频监控终端实现效果如图4所示。
计算机后台对手机采集的视频实现了全程监控, 能够通过计算机扩大或者缩小手机视野。当设置视频格式为D1、帧率每秒10帧、码率512Kbps, 在小米2s上的测试结果为:PC后台和采集端显示的画面仅有1~1.5秒延迟。一台手机作为采集端, 另一台做实时串流, 不经过服务器转发, 显示画面仅有2~3秒延迟。移动终端在较好的3G信号覆盖下, 通过调节视频帧率或码率得到更清晰和流畅的视频图像。
目前, 提出的移动视频监控系统, 后台计算机的实时监控已基本实现, 同时网络带宽的提升也给本移动视频监控系统的实现带来了很大程度的帮助。
5 结语
本文基于Android开发平台、H.264/AVC视频压缩技术RTSP协议等技术提出了一种移动实时视频监控的设计方案。系统采用RTP/RTSP协议, 具有实时、高效、便携等特点, 可实际应用与当前视频监控领域, 具有广阔的市场应用前景。系统在下一步工作中将采用H.265编码, 进一步改善码流、编码质量、延时和算法复杂度之间的关系, 以达到最优化设计。
参考文献
[1]李昂, 宋海英, 苏小芸.基于Android的视频监控系统设计与实现[J].电子技术应用, 2012, 23 (8) :34-39.
[2]李威.基于Android平台的手机视频监控系统[D].南京邮电大学.2012, 23-27.
[3]孙知信, 陈荣伟.一种H264编码实时性能优化方法.南京邮电大学[D].2010:32-38.
[4]田红磊.基于离散余弦变换的非局部均值滤波算法[J].科学技术与工程, 2013, 4 (11) .
相关文章:
Android课程01-06
android学习路线01-06
android面试题01-06
android简历一01-06
Android技术16:编写Android中直接可运行的二进制文件01-06
甲醛甲酚01-06
Android编程01-06
android常用控件总结01-06
Android终端01-06
Android Activity 详述01-06