在视频程序的编写过程中,我们经常要使用摄像头,在使用摄像头前有必要对摄像头的现有状态做个检测:

1.被占用

2.没安装摄像头

3.正常

 

看下面代码:

 

代码
<?xml version="1.0" encoding="utf-8"?> 

<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml%22 

    layout=
"absolute" creationComplete="init()">

    <mx:Script> 

        <![CDATA[

            import mx.controls.Alert; 

            private var camera:Camera; 

            private var isExistsCamera:Boolean=false; 

            private var isBusyCamera:Boolean=false; 

            private var intervalId:uint; 

            private var times:int; 

            private function init():void 

            { 

                camera=Camera.getCamera(); 

               if (camera == null) 

                { 

                   if (Camera.names.length <= 0) 

                    { 

                        this.isExistsCamera=false; 

                        Alert.show(
"没安装摄像头"); 

                    } 

                } 

                else 

                { 

                    this.vdpaly.attachCamera(this.camera); 

                    this.isCameraBusy(); 

                } 

            }

            private function isCameraBusy():void 

            { 

                this.intervalId=setInterval(callback,50); 

            } 

 

            private function callback():void 

            { 

                trace(
"currentFPS=" + camera.currentFPS.toString()); 

               if (camera.currentFPS > 0) 

                { 

                    //视频设备可用 

                    clearInterval(this.intervalId); 

                    this.isBusyCamera=false; 

                    Alert.show(
"摄像头正常"); 

                } 

                else 

                { 

                    times++; 

                    trace(
"times=" + times.toString()); 

                    if (times > 30) 

                    { 

                        //视频设备忙 

                        clearInterval(intervalId); 

                        this.isBusyCamera=true; 

                        Alert.show(
"摄像头被占用"); 

                    } 

                } 

            } 

 

             private function cl():void 

            { 

                Alert.show(this.camera.currentFPS.toString()); 

            } 

 

        ]]> 

    </mx:Script>

    <mx:VideoDisplay   id=
"vdpaly"  click="cl()" x="44" y="64" width="232" height="236"/>

</mx:WindowedApplication>

 

 

 

代码说明:

camera == null,那么就是没安装摄像头

如果摄像头被占用,那么camera.currentFPS 肯定不会大 于0,而是等于0

 

我之前有研究过.是这样

 

 

 

转自:http://blog.163.com/terry_boss/blog/static/3335226220095114272344/?fromdm&fromSearch

posted on 2010-04-16 10:21  钱途无梁  阅读(520)  评论(0编辑  收藏  举报