Flash Camera & Microphone 访问(含mac系统)

来源:互联网 发布:淘宝兼职刷信誉被骗 编辑:程序博客网 时间:2024/05/22 03:35

Camera类
Camera有一个得到Camera实例的静态方法getCamera(name:String = null). 这个方法有一个参数,是想要取得的摄像头的实例名, 一般大厂商的摄像头实例名是品牌+型号+id, 同一个摄像头连接一台电脑不同的USB接口会产生不同的id。实例名如果为空, 或者完全不传入这个参数, Flex会取得默认的摄像设备实例。 在大部分的台式机上,不传入参数, 直接使用getCamera()就可以取得可用的摄像头对象。但是对于前面提到的存在多个视频设备的电脑,这个方法就很可能会返回一个不可用的摄像头对象了。在这种情况下,最好的办法就是让用户手动选择, 因为Camera类有一个属性names, 可以得到所有视频设备实例名的数组。除了让用户手动选择,我们还可以用一些小技巧,减少用户的麻烦。比如说,Mac笔记本一般都内置了高清的摄像头,所以很少有Mac笔记本用户会选择另外安装摄像头。 而所有Mac笔记本的摄像头实例名都是“USB Video Class Video”, 我们如果在Mac系统上传如这个字符串作为getCamera()的参数,就免去了用户手动选择的麻烦。
现在的问题是,怎样知道用户用的是Mac系统呢?我们可以通过Capabilities.os得到操作系统的名字, Mac系统的名字里一定会出现“Mac”, 所以简单地用String的search方法,就可以知道用户的操作系统是不是Mac了。

mac系统特别注意:


if (System.capabilities.os.indexOf("Mac")>-1){
cam = Camera.get(2);
}else{
cam = Camera.get()
}


Microphone类
相对应的,Microphone也有getMicrophone()方法,不过要住的是,传如的参数不是麦克风的实例名字,而是实例在Microphone.names数组里的编号,是一个int.
在Mac上,内置的麦克风名字是“Built-in Microphone”。

存储
接下来介绍一下怎么记录用户选择的摄像头和麦克风。 考虑到这个选择只是用在客户端上,而且这个选择其实绑定的是电脑,而不是用户, 所以我们选择把它记录在客户电脑上。 记录数据在客户电脑上最好的办法还是SharedObject。 我们首先取得一个本地的SharedObject对象:
var localSharedObject:SharedObject = SharedObject.getLocal(变量名:String,变量路径:String).
前一个参数类似于http cookie的名字, 后一个参数一般用“/”就可以了。然后存入SharedObject的数据:
localSharedObject.data[propertyName:String] = propertyValue;
SharedObject的data是一个Map结构, 传入一个key,再设置一个value就搞定了。最后别忘了localSharedObject.flush(500)把数据写到硬盘上去, 500表示我们让系统在硬盘上至少分配500字节来存储这个变量。
等下次用户使用我们的Flex程序时,我们再用SharedObject把用户的选择读出来,用户就不需要再次选择了。