Microphone 类没有构造函数方法。相反,应使用静态
Microphone.getMicrophone()
方法来获取新的 Microphone 实例,如下所示:
var mic:Microphone = Microphone.getMicrophone();
不使用参数调用
Microphone.getMicrophone()
方法时,将返回在用户系统上发现的第一个声音输入设备。
系统可能连接了多个声音输入设备。应用程序可以使用
Microphone.names
属性来获取所有可用声音输入设备名称的数组。然后,它可以使用
index
参数(与数组中的设备名称的索引值相匹配)来调用
Microphone.getMicrophone()
方法。
系统可能没有连接麦克风或其他声音输入设备。可以使用
Microphone.names
属性或
Microphone.getMicrophone()
方法来检查用户是否安装了声音输入设备。如果用户未安装声音输入设备,则
names
数组的长度为零,并且
getMicrophone()
方法返回值
null
。
当应用程序调用
Microphone.getMicrophone()
方法时,Flash Player 将显示“Flash Player 设置”对话框,它提示用户允许或拒绝 Flash Player 对系统上的摄像头和麦克风的访问。在用户单击此对话框中的“允许”或“拒绝”按钮后,将调度 StatusEvent。该 StatusEvent 实例的
code
属性指示是允许还是拒绝对麦克风的访问,如下例所示:
import flash.media.Microphone;
var mic:Microphone = Microphone.getMicrophone();
mic.addEventListener(StatusEvent.STATUS, this.onMicStatus);
function onMicStatus(event:StatusEvent):void
{
if (event.code == "Microphone.Unmuted")
{
trace("Microphone access was allowed.");
}
else if (event.code == "Microphone.Muted")
{
trace("Microphone access was denied.");
}
}
如果允许访问,则
StatusEvent.code
属性将包含“Microphone.Unmuted”,如果拒绝访问,则该属性包含“Microphone.Muted”。
当用户允许或拒绝对麦克风的访问时,
Microphone.muted
属性将被分别设置为
true
或
false
。但是,在调度 StatusEvent 之前,Microphone 实例上未设置
muted
属性,因此在检查
Microphone.muted
属性之前,应用程序还应等待调度
StatusEvent.STATUS
事件。
要使 Flash Player 显示设置对话框,应用程序窗口的大小必须足以显示它(至少是 215 x 138 像素)。否则,自动拒绝访问。
在 AIR 应用程序沙箱中运行的内容不需要用户对麦克风的访问权限。因此,从来不调度对麦克风静音和取消静音的状态事件。在应用程序沙箱外的 AIR 中运行的内容要求用户权限,因此可以调度这些状态事件。