基本原理:主要是通过WiFi不断传输电脑端摄像头抓取的图像给Android手机端进行刷新显示,达到视频监控的效果。
实现方案:电脑端作为服务器端,通过Python编写代码;手机端作为客户端,通过Java实现。
主要思路:为手机客户端能实时显示服务器端传来的图片,服务器端在发送图片之前需发送图片的大小,客户端解码图片前先分配与图片大小等大的缓存区,将图片存入缓存区后再进行解码,发送给主界面进行实时显示。
注意事项:Android建立wifi连接以及接收图片需单独开辟线程,解码图片后再通过Handler传递给主界面进行显示。
Android客户端主要代码:
显示界面

public class MainTab_camera extends Fragment {RevImageThread revImageThread;Button Camera_control;public static ImageView image;private static Bitmap bitmap;private static final int COMPLETED = 0x111;private MyHandler handler;public static boolean Run = false;private Bitmap bmp;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){View view = inflater.inflate(R.layout.activity_camera, container, false);Camera_control = (Button)view.findViewById(R.id.camera_control);//连接按钮image=(ImageView)view.findViewById(imageView);return view;}@Overridepublic void onActivityCreated(Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);//addListener();handler = new MyHandler();revImageThread = new RevImageThread(handler);Resources res = MainTab_camera.this.getResources();bmp= BitmapFactory.decodeResource(res,R.drawable.tab_camera_pressed);addListener();//new Thread(revImageThread).start();}public void addListener(){Camera_control.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {if(!Run)Run = true;else Run = false;if(Run) {Camera_control.setBackgroundColor(Color.parseColor("red"));Camera_control.setText("关闭视频监控");new Thread(revImageThread).start();}else{Camera_control.setBackgroundColor(Color.parseColor("#ff6eff2d"));Camera_control.setText("打开视频监控");image.setImageBitmap(bmp);}}});}static class MyHandler extends Handler{public void handleMessage(Message msg){if (msg.what == COMPLETED) {bitmap = (Bitmap)msg.obj;image.setImageBitmap(bitmap);super.handleMessage(msg);}}}
}

接收图片线程

public class RevImageThread implements Runnable {
private Handler handler;
private Bitmap bitmap;
private static final int COMPLETED = 0x111;public RevImageThread(Handler handler){this.handler = handler;
}public void run()
{int imagesize = 0;try {while(Ca && Run && socket!=null&&!socket.isClosed()){ InputStream ins = socket.getInputStream();byte[] header = new byte[10];//帧头大小int len;if((len = ins.read(header,0,header.length)) == 10) {String str = new String(header);if(str.startsWith("start")) {imagesize = Integer.parseInt(str.split(",")[1]);//,为分隔符                        }}byte[] data = new byte[imagesize];len = ins.read(data,0,data.length);if(len == imagesize ){bitmap = BitmapFactory.decodeByteArray(data,0,data.length);Message msg =handler.obtainMessage();msg.what = COMPLETED;msg.obj = bitmap;handler.sendMessage(msg);}}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}
}}

Python服务器端主要代码:

class Ui_server_send(QThread):def __init__(self, parent=None):super(Ui_server_send, self).__init__(parent)def Serve_send(self,Flag_send):self.Flag_send = Flag_sendself.start()def run(self):while self.Flag_send:self.xret, self.ximage = cap.read()  # 标志位,获取图片信息self.xshow = cv2.resize(self.ximage, (240, 200))  # 设置图片转化大小pi = Image.fromarray(cv2.cvtColor(self.xshow, cv2.COLOR_BGR2RGB))buf = io.BytesIO()  # 缓存对象pi.save(buf, format='JPEG')  # 将PIL下的图像压缩成jpeg格式,存入buf中jpeg = buf.getvalue()  # 从buf中读出jpeg格式的图像a = len(jpeg)length = bytes(str(a), 'utf-8')b = connected_sock.sendall(b'start,' + length + jpeg)if b == None:print('发送完成', length)

Android手机实现视频监控相关推荐

  1. android手机远程视频移动检测的实践

    家中老人高龄,为防止意外跌倒,需要时刻看护,于是想到用视频监控代替部分注意力.远程视频移动监测的方案有很多种,因为以前在手机上做了类似工作,参见用安卓手机实现视频监控,在此基础之上增加移动监测报警功能 ...

  2. android jmf,基于JMF与Android的无线视频监控系统的设计与实现

    摘要: 视频监控系统是一种防范能力很强的综合系统,是安防领域的重要组成部分.随着无线网络与流媒体传输技术的飞速发展,视频监控系统也朝着无线化,高清化,智能化的方向发展.针对这一需求,通过研究JAVA多 ...

  3. 手机移动视频监控系统方案

    1.引言 随着社会的发展, 视频监控技术在各行各业得到了广泛的应用.如何让用户实现随时随地进行监控,手机移动监控系统提供了一个很好的解决方案 .通过无线网络与互联网的结合,手机移动监控系统把监控设备的 ...

  4. Android编写一个视频监控App

    Android编写一个视频监控App 很久没写app了,小项目需要写一个rtmp拉流的视频监控app,简单记录一下. 参考:Android实现rtmp推拉流摄像头(三)_空空7的博客-CSDN博客_a ...

  5. 一句代码设置 android 手机桌面视频壁纸

    VideoWallpaper 项目地址:DingMouRen/VideoWallpaper  简介:一句代码设置 android 手机桌面视频壁纸 更多:作者   提 Bug 标签: VideoWal ...

  6. 视频监控系统app服务器如何设置,手机app视频监控服务器配置

    手机app视频监控服务器配置 内容精选 换一换 网站的访问与云服务器的网络配置.端口通信.防火墙配置.安全组配置等多个环节相关联.任意一个环节出现问题,都会导致网站无法访问.本节操作介绍网站无法访问时 ...

  7. 【转载】简单几步用手机打造视频监控

    家里有老人.小孩的朋友们一定有过这样的体验,工作繁忙压力大,对家庭的照料难免疏忽,小孩老人更是让人担心不已,加上最近频发的老人或小孩一个人留在家中,结果出现意外情况而自己却不知道的情况屡见不鲜.而为此 ...

  8. 基于android的远程视频监控系统

    http://www.cnblogs.com/feifei1010/archive/2012/08/31/2664939.html 基本过程是android作为socket客户端将采集到的每一帧图像数 ...

  9. 基于android的远程视频监控系统(已开放源码)

    基本过程是android作为socket客户端将采集到的每一帧图像数据发送出去,PC作为服务器接收并显示每一帧图像实现远程监控.图片如下(后来PC端加了个拍照功能)... (PS.刚学android和 ...

最新文章

  1. python windows epoll_Windows 10生产力提升之WSL实践
  2. 用Unity和Playmaker创建一个限时游戏 Creating a Time Limit game with Unity and Playmaker
  3. IMDB是否提供API? [关闭]
  4. if语句输入月份判断季节_C语言循环及条件语句
  5. 如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)
  6. centos7 xampp启动mysql数据库_mysql主从配置,用win xampp和centos7环境下测试
  7. 欣赏多彩的计算机作品教案,五年级上信息技术教案-欣赏多彩的计算机作品长春版(三起).docx...
  8. 厦门one_理想ONE真是“500万内最好的车”?
  9. Go编程模式--流水线模式
  10. easyui修改css样式,修改easyui的easyloader的默认css目录路径
  11. mvc5 + ef6 + autofac搭建项目(三)
  12. mysql group by 聚合_浅析MySQL使用 GROUP BY 分组聚合与细分聚合
  13. 剑指offer——面试题61:按之字形顺序打印二叉树
  14. 链表分割——牛客剑指offer
  15. (笔记)《游戏脚本高级编程》——第2章 脚本编程系统的应用(上)
  16. 微信编辑器有哪些呢?
  17. oracle 还原imp,Oracle学习笔记——imp还原数据库
  18. 教大家pr如何新建工程文件
  19. 【Oracle】TYPE定义的数据类型
  20. 开发者专访|我从「人间地狱」的算法岗内卷中,倔强地踏出了一条路 前路漫漫,星芒万里

热门文章

  1. 智能手表是java的_amazfit智能手表是否可以安装应用
  2. 3dmax:3dmax三维VR渲染设置之高级灯光渲染(经典案例—VR灯光渲染房间天光效果)图文教程
  3. mysqladmin 创建数据库
  4. FileMaker 实时定位当前地址
  5. 视频剪辑练手,就上这几个网站找素材~
  6. JAVA 模拟post 表单提交
  7. php使用正则表达式获取域名,PHP正则表达式从url中取得域名
  8. 图片98%走CDN缓存,坐拥8亿用户的淘宝,是怎么做到这一点的?
  9. 支小蜜食堂人脸识别消费系统,优化校园就餐方式
  10. linux程序给图片打马赛克,Ubuntu16.04如何截图,如何裁剪图片,Ubuntu16.04如何打马赛克...