zoukankan      html  css  js  c++  java
  • Flash/Flex学习笔记(11):如何检测摄像头是否被占用

    原理:摄像头激活后,持续检测与之关联的Video对象是否在播放(即每秒帧数)

    btnCheck.addEventListener(MouseEvent.CLICK,btnCheckClick);
    
    var cam:Camera;
    var video:Video;
    var intervalId:uint;
    var intelvalTimes:uint=0;
    
    function btnCheckClick(e:MouseEvent) {
    	cam=Camera.getCamera();
    	if (cam==null) {
    		lblResult.text="未安装摄像头!";
    		return;
    	}
    	cam.addEventListener(StatusEvent.STATUS, statusHandler);
    	cam.addEventListener(ActivityEvent.ACTIVITY,camActivityHandler);
    	video=new Video(cam.width,cam.height);
    	//trace("视频宽度:" + cam.width + ",视频高度:" + cam.height);
    	video.x=10;
    	video.y=40;
    	video.attachCamera(cam);//执行这句时,flash才会弹出摄像头是否允许使用提示框 
    }
    
    //摄像头有活动时,被触发
    function camActivityHandler(e:ActivityEvent) {
    	trace(e);
    	intervalId=setInterval(checkCallBack,100);
    }
    
    function checkCallBack():void {
    	intelvalTimes+=1;
    	trace(intelvalTimes);
    	if (cam.currentFPS>0) {
    		lblResult.text="摄像头工作正常!";
    		clearInterval(intervalId);
    		addChild(video);//加载到当前舞台中  
    	} else {
    		if (intelvalTimes>=20) {//持续检测2秒,仍然无图象的话,认为"设备无法使用(占用中)"
    			lblResult.text="设备无法使用(有可能被占用)";
    			clearInterval(intervalId);
    		}
    	}
    }
    
    //用户选择"同意"或"不允许"使用摄像头时触发
    function statusHandler(e:StatusEvent) {
    	trace(e);
    	if (e.code=="Camera.Muted") {
    		lblResult.text="您不允许使用摄像头!";
    	} else if (e.code == "Camera.Unmuted") {
    		lblResult.text="摄像头视频获取中...";
    	}
    }
    
    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    IE6下不能定义1px高度的容器和IE6 双边距
    py django 渲染前端打包的视图
    关于常见的递推关系。
    题解:一些递推的题。
    题解:极值问题。
    题解:城南树林。
    题解:论编辑器的和谐共处。
    题解:左右横跳。
    题解:斑马,斑马(zebra)
    找 前端 私活
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1686175.html
Copyright © 2011-2022 走看看