Flex(flash)检测摄像头的3种状态
1.被占用
2.没安装摄像头
3.正常
看下面代码:
layout="absolute" creationComplete="init()">
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());
}
]]>
代码说明:
camera == null,那么就是没安装摄像头
如果摄像头被占用,那么camera.currentFPS 肯定不会大 于0,而是等于0