IP摄像头的Android数据采集概要设计文档
Handler的postDelayed()方法来设定100ms延时后再次把runnable对象加入消息队列。程序的运行结果就是每隔100ms,就会在Webwiew视窗中显示一帧图片。这是因为实现了Runnable接口的runnable对象进入了空的消息队列即被立即执行run方法,而在run方法的内部,又在100ms之后将其再次发送进入消息队列中。从而实现图片的不间断采集。
Runnable runnable = new Runnable() { public void run() { openBrowser(); // 打开浏览器获取图片 //延时100ms,再次把runnable对象加入消息队列。 mhandler.postDelayed(runnable, DELAY_TIME); }; } 3) 通过Webview的loadUrl方法获取图像
通过WebView的loadUrl方法获取图片,实现图片的采集、显示。并且为了防止系统在使用WebView的loadUrl方法时自动调用系统浏览器,在实现上我们通过覆盖WebViewClient方法禁止调用系统浏览器,关键代码如下:
void openBrowser() { webView = (WebView) findViewById(R.id.web_name_view); webView.loadUrl(strSnapshot); webView.requestFocus(); // 覆盖WebViewClient方法禁止调用系统浏览器 webView.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String strUrl) { view.loadUrl(strUrl); return true; } }); } 4) 将要执行/的线程对象添加到队列当中
在主线程(UI线程)中调用Handler的post方法将要执行的线程对象添加到队列当中。
//调用Handler的post方法,将要执行的线程对象添加到队列当中 mhandler.post(runnable); IP摄像头的Android数据采集概要设计文档 4.3. 云台控制 4.3.1. 功能说明
本项目中使用的IP摄像头支持利用HTTP协议对其进行云台控制。因此,在实现云台控制功能上,本项目可以通过Android平台下HTTP类构造相关指令对IP摄像头进行控制。其基本思路是构造好相关的URL指令后,通过调用HTTP的sendGET方法向IP摄像头进行发送。具体实现方法如下:
4.3.2. 功能界面示意图
返回键
上方向键
右方向键
左方向键
下方向键
图 4-3-1 云台控制图
如上图所示,云台控制功能包括5个控件,各个控件的功能以及控件的类型参照下表所示:
名称 返回 U D L 功能 点击控制切断视频画面返回到用户登陆界面 按住控制摄像头向上转动,松开停止转动 按住控制摄像头向下转动,松开停止转动 按住控制摄像头向左转动,Button 控件类型 IP摄像头的Android数据采集概要设计文档
松开停止转动 R
按住控制摄像头向右转动,松开停止转动 4.3.1. 功能流程图
开始为按键设置一个监听setOnTouchListener()返回键触摸按键是否被触摸 onTouch()方向键触摸方向键按下返回登录界面根据不同触摸事件分别处理转动键抬起发送转动指令发送停止指令 图 4-3-2 云台控制功能流程图
4.3.2. 实现方法
如云台控制功能流程图所示云台控制功能主要包括方向键控制和返回键控制,下面针对这两个按钮的具体实现方法做详细介绍如下: (一) 方向键控制
以摄像头向左转动为例,其他方向键与此相同,基本处理过程如下: 1) 设置监听
为了实现方向控制功能,必须先为左方向按钮设置监听,代码如下:
btnLeft.setOnTouchListener(new Button.OnTouchListener(){}); 2) 判断按钮操作是按下还是放开
设置监听后,再在监听中通过onTouch方法检测按钮是否被按下和松开。onTouch方法实现代码如下:
IP摄像头的Android数据采集概要设计文档
public boolean onTouch(View v, MotionEvent event) { //按下按钮 if (event.getAction() == MotionEvent.ACTION_DOWN) { //此处可以构造HTTP的GET请求,发送转动命令 //松开按钮 } else if (event.getAction() == MotionEvent.ACTION_UP) { //此处构造HTTP的GET请求,发送停止命令 } return false; } 3) 发送转动命令
如果按钮被按下,则需要向摄像头发送向上转动的命令。这里直接调用Http的sendGet方法发送命令。代码如下:
//通过http的sentGet方法向摄像头发送向左转动的命令(Url) HttpRequest.sendGet(strDirection, \ 4) 发送停止命令
如果按钮松开,则需要向摄像头发送停止转动的命令。代码如下:
//通过http的setGet方法向摄像头发送停止转动的命令(Url) HttpRequest.sendGet(strStop, \
(二) 返回键控制
1) 设置监听
为了在按下返回键时能结束当前页面并返回到登陆界面,需要先为返回键设置监听。代码如下:
btnBack.setOnTouchListener(new OnTouchListener() {}); 2) 返回操作
设置监听后,再在监听中通过onTouch方法检测按钮是否被按下和松开,若松开按钮则通过finish()方法结束当前页面并返回到登陆界面。
public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) { finish(); // 结束当前页面 } return true; } IP摄像头的Android数据采集概要设计文档
5. 处理流程
无
6. 接口说明
无
7. 数据库设计
无。
8. 通信接口
无
9. 关键算法及方案选择说明
无
相关推荐: