JOURNALOFXINYUUNIVERSITYVol.17,NO.3Jun.2012
基于Android的远程监控系统的研究与设计
1
●衡友跃,杨
2
义,李
凌
1
(1.淮北职业技术学院,安徽淮北235000;2.淮北师范大学计算机学院,安徽淮北235000)
櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆摘要:为了实现随时随地视频监控,提出了一种基于Android智能手机的智能家居监控子系统。介绍了该监控子系统
阐述了Android与Web服务器端数据交换的方法,并结合实际的监控子系统,详细论述了Android客户端的总体结构,
的设计思路及实现过程。通过在无线网络环境下对监控子系统的测试,取得了利用Android手机进行随时随地监控的效果。
关键词:Android;监控;Web;H.264
中图分类号:TP399文献标识码:A文章编号:2095-3054(2012)03-0078-03
櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆櫆监控系统是智能家居的重要组成部分。目前主流的监控
用户通过Internet获取监系统基本上都是基于Internet网络,
控服务。虽然Internet推广很快,但在有些场合还是不太方便,不能满足用户随时随地获取监控信息的需要。随着3G
[1]
的快速发展,为无线远程监控快速发展带来了机遇。Google公司推出的Android开放平台迅速占领了智能手机的
Android已经成为大家大部分市场份额,受到了广泛的追捧,
认可的公共平台。本文研究目的在于设计一种基于Android开放平台的、通用性好、扩展性强、简捷便利的智能家居监控子系统。
1系统总体设计
该监控系统采用B/S与C/S混合模式体系结构。如图1所示,该系统由视频采集终端、视频服务器以及监控客户端等
[2]
组成。
视频编解码;支持2D图形加速,最大支持8000×8000分辨
OpenGL-1.1&2.0、OpenVG1.0;支持率;支持3D图形加速,
SD/MMC/SDIO接口存储卡,最高支持32GB;支持JPEG硬件编解码,最大支持8192×8192分辨率。2服务器端设计
Android客户端开发使用的是Java语言,Web服务器层可以使用JavaEE当前流行的任何框架,比如可以用Struts2+Spring+Hibernate组合,但是考虑到其通用性,我们采用了Servlet+JDBC组合的方式,Servlet响应客户端请求,JDBC访
[3]
问后台数据库。
Web服务器选用开源的Tomcat,数据库也选用开源的MySQL。图2描述了其技术选项。
图1系统总体框架图
监控系统的核心部分是一个嵌入式Web服务器,它将摄像头采集来的数据进行压缩、编码,最后把数据传输给客户端。客户端可以通过有线和无线两种连接方式访问服务器,通过对接收到的数据进行解码,显示到电脑或手机上,实现实
实现对摄像头时监控的目的。客户端也可以发送控制指令,
的相关操作,比如控制摄像头转动等。
服务器部分采用Samsung公司的S5PV210芯片,并移植了嵌入式操作系统Linux作为整个系统运行的软件环境。S5PV210是基于ARMv7指令架构的通用处理器。CPU主频1GHz;支持MPEG-4/MPEG2、H.264/H263、VC-1、DivX的
图2技术选项
为了使系统耦合性更低,结构更清晰,该系统采用了MVC+DAO的设计模式及分层开发思想。MVC中的V即View的意思,在本系统中体现的非常明显,有两种视图:一种是通过Internet有线连接方式实现的PC客户端浏览器,即前面提到的B/S模式;另外一种是通过3G无线连接方式实现的Android客户端应用程序,即前面提到的C/S模式。虽然
但服务器的主体代码完全一样,只有一份,即有两种视图,
MVC中的模型(Model)、控制(Control)部分完全一样。
登录模块控制器部分代码如下:
publicclassLoginServletextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpS-
收稿日期:2012-04-02
“基于Android的智能家居研究与设计”(编号:2012SQRL254)。衡友项目及第一作者简介:安徽省高校优秀青年人才基金项目跃(1979-),男,安徽凤阳人,讲师,工程师,硕士。—78—
衡友跃,杨义,李凌:基于Android的远程监控系统的研究与设计
armeabi目录下。
在Android程序中加载所需要的库,调用H264Decoder函数对H.264进行解码。测试代码如下:
publicclassDecorderJniextendsActivity{
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);TextViewtv=newTextView(this);tv.setText(\"1111\");setContentView(tv);
tv.setText(String.valueOf(stringFromJNI()));}
publicnativeStringstringFromJNI();
publicnativeStringunimplementedStringFromJNI();
static{
System.loadLibrary(\"ffmpeg\");System.loadLibrary(\"decorder-jni\");}}
3.2视频显示
为了获得更流畅的视觉效果,这里采用SurfaceView实现
surface-显示。SurfaceView相对于View最本质的区别在于,View是在一个新起的独立线程中运行,通过不停地重新绘制画面而实现视频效果,而View必须在UI的主线程中更新画
如果你更新画面的时间过面。在UI的主线程中更新画面,
[5]
长,那么主UI线程可能会被你正在画的方法阻塞。那么将无法响应按键,触屏等消息。surfaceView是在新的线程中更
所以不会阻塞UI主线程。关键代码如下:新画面,
publicclasstestSurfaceViewextendsActivity{SurfaceViewsfv;SurfaceHoldersfh;...
classLoad_DrawImageextendsThread{intx,y;
publicLoad_DrawImage(intx,inty){this.x=x;This.y=y;}
publicvoidrun(){while(true){
Canvasc=sfh.lockCanvas(newRect(this.x,this.y,this.x
+imgWidth,this.y+imgHeight));
BitmapbmImg=BitmapFactory.decodeResource(getRe-sources(),
imgList.get(imgIndex));
c.drawBitmap(bmImg,this.x,this.y,newPaint());sfh.unlockCanvasAndPost(c);//更新屏幕显示内容}}}...}
—79—
ervletResponseresponse)
throwsServletException,IOException{
Stringusername=request.getParameter(\"user-name\");
Stringpassword=request.getParameter(\"pass-word\");
System.out.println(username+\":\"+password);response.setContentType(\"text/html\");response.setCharacterEncoding(\"utf-8\");PrintWriterout=response.getWriter();Stringmsg=null;
if(username!=null&&username.equals(\"admin\")
&&password!=null&&password.equals(\"1\")){
msg=\"登录成功!\";}else{
msg=\"登录失败!\";}
out.print(msg);out.flush();out.close();}}
3Android客户端
Android客户端软件系统主要包括人机交互(界面)、视频
视频数据的解码、视频显示四大部分,如图3所数据的接收、
示。
图3功能模块
其中,视频数据接收单元接收来自服务器的视频数据,并将视频数据存入视频缓冲区中,等待解码。视频数据解码单元负责从视频缓冲区中读入数据并进行解码。视频显示单元将解码后的图像绘制到屏幕上实现监控画面播放。3.1数据解码
在该系统中,网络传输的视频数据都是经过编码压缩后的数据,主要的视频压缩算法是H.264。Android客户端接收的数据都是经过H.264算法编码压缩后的数据,必须经过H.
[4]
264解码后监控画面才能够显示。因此,数据解码就成了客户端的一个重要环节。我们采用了移植开源的FFmpeg音视频解码库到Android平台上,进而对H.264进行解码,主要步骤如下:
安装开发工具包NDK,用它把这个开源工程编译成一个后缀为so的库。
把FFmpeg工程复制到指定文件夹下。编写android.mk及H264Decorder.c文件。用ndk-build命令编译,把生成的so库文件复制到libs/
新
4
余学院5
学报
测试
该系统已经在实验室进行了测试,主要是验证该系统在
测试结果如表1所示,图4是一个功能上能否满足设计要求,
监控效果截图。
表1测试结果
预期功能
支持无线网络远程监控支持开始/暂停监控操作中、高质量监控支持设置低、
支持切换监控通道
测试结果满足设计要求满足设计要求满足设计要求满足设计要求
结语
本文提出了基于Android的监控子系统方案,然后分别
客户端两方面介绍设计思路,重点分析了An-从服务器端、
droid客户端软件设计过程,实验证明,该方案操作方便,满足了设计需要。
参考文献:[1]胡晓乐.基于Android平台的MID视频监控系统的设计
D].中山:中山大学,2010.与实现[
[2].计鲍可进,林启俊.3G流媒体服务器的研究与实现[J]
2008,(10):2595-2598.算机工程与设计,
[3]刘龙飞,章坚武.基于H.264的Web视频监控客户端设
J].现代电子技术,2011,(19):27-30.计与实现[
[4]申超,周兵.基于H.264的监控系统中手机客户端的设计
[J].微计算机信息,2009,(9):118-119.[5]M].北京:机械工业出版杨丰盛.Android应用开发揭秘[
2010:115.社,
(责任编校:任华)
图4监控效果
DesignofAndroiddistancemonitoringsystem
HENGYou-yue1,YANGYi2,LILing1
(1.HuaibeiVocationalInstituteofTechnology,Huaibei235000China;2.HuaibeiNormaluniversity,Huaibei235000China)
Abstract:Inordertorealizethevisualmonitoringatanytimeandanyplace,aintelligencehomemonitoringsystembasedonAndroidsmartmobilephone.Thispaperintroducesthegeneralstructureofthemonitoringsubsystem,demonstratesthemethodofdataexchangebetweenAndroidandWebserverendandbasedontherealmonitoringsubsystem,discussesthedesignwayandrealizationprocessofAndroidcustomerendindetail.TestofthemonitoringsubsystemunderthewirelessnetworkenvironmentshowsthattheuseofAndroidmobilephonecanrealizemonitoringatanytimeandanyplace.Keywords:Android;monitoring;Web;H.264
—80—
因篇幅问题不能全部显示,请点此查看更多更全内容