window.runtime 属性window.runtime.flash.media.Microphone
继承Microphone Inheritance EventDispatcher Inheritance Object

使用 Microphone 类可从连接到运行 Adobe AIR 的计算机的麦克风中捕获音频。使用 Microphone 类可在本地监视音频。使用 NetConnection 和 NetStream 类可将音频传输到 Flash Media Server。Flash Media Server 可以将音频发送到其他服务器,并向运行 Adobe AIR 的其他客户端广播此音频。

有关捕获视频的信息,请参阅 Camera 类。

若要创建或引用 Microphone 对象,请使用 Microphone.getMicrophone() 方法。

警告:对于应用程序安全沙箱以外的内容,会显示“隐私”对话框,用户可以从中选择是允许还是拒绝对麦克风的访问。此对话框要求应用程序窗口大小至少为 215 x 138 个像素。对于应用程序安全沙箱内的 Adobe AIR 内容,将允许访问麦克风,且不再显示该对话框。

另请参见


Basics of working with sound


属性
 属性定义方
  activityLevel : Number
[只读 (read-only)] 麦克风正在检测的音量。
Microphone
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  gain : Number
麦克风增益 - 即麦克风在传送信号之前应该将信号放大的倍数。
Microphone
  index : int
[只读 (read-only)] 麦克风的索引,它反映在 Microphone.names 返回的数组中。
Microphone
  muted : Boolean
[只读 (read-only)] 指定用户是已经拒绝对麦克风的访问 (true) 还是已经允许对麦克风的访问 (false)。
Microphone
  name : String
[只读 (read-only)] 当前声音捕获设备的名称,它由声音捕获硬件返回。
Microphone
  names : Array
[静态] [只读 (read-only)] 包含所有可用声音捕获设备名称的字符串数组。
Microphone
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  rate : int
麦克风捕获声音时使用的频率,单位是 kHz。
Microphone
  silenceLevel : Number
[只读 (read-only)] 激活麦克风并调度 activity 事件所需的音量。
Microphone
  silenceTimeout : int
[只读 (read-only)] 麦克风停止检测声音的时间和调度 activity 事件的时间之间相差的毫秒数。
Microphone
  soundTransform : SoundTransform
在此麦克风对象处于环回模式时,控制它的声音。
Microphone
  useEchoSuppression : Boolean
[只读 (read-only)] 如果启用了回音抑制,则设置为 true;否则,设置为 false。
Microphone
公共方法
 方法定义方
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
 Inherited
dispatchEvent(event:Event):Boolean
将事件调度到事件流中。
EventDispatcher
  
getMicrophone(index:int = 0):Microphone
[静态] 返回对用于捕获音频的 Microphone 对象的引用。
Microphone
 Inherited
hasEventListener(type:String):Boolean
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
hasOwnProperty(name:String):Boolean
指示对象是否已经定义了指定的属性。
Object
 Inherited
isPrototypeOf(theClass:Object):Boolean
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
propertyIsEnumerable(name:String):Boolean
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
  
setLoopBack(state:Boolean = true):void
将麦克风捕获的音频传送到本地扬声器。
Microphone
 Inherited
setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
设置循环操作动态属性的可用性。
Object
  
setSilenceLevel(silenceLevel:Number, timeout:int = -1):void
设置可认定为有声的最低音量输入水平,以及实际静音前需经历的无声时间长度(可选)。
Microphone
  
setUseEchoSuppression(useEchoSuppression:Boolean):void
指定是否使用音频编解码器的回音抑制功能。
Microphone
 Inherited
toString():String
返回指定对象的字符串表示形式。
Object
 Inherited
valueOf():Object
返回指定对象的原始值。
Object
 Inherited
willTrigger(type:String):Boolean
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
事件
 事件 摘要 定义方
 InheritedFlash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时调度。EventDispatcher
  在麦克风开始或结束会话时调度。Microphone
 InheritedFlash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时调度。EventDispatcher
  在麦克风报告其状态时调度。Microphone
属性详细信息
activityLevel属性
activityLevel:Number  [只读 (read-only)]

麦克风正在检测的音量。值的范围为 0(未检测到声音)到 100(检测到非常大的声音)。此属性的值有助于确定向 Microphone.setSilenceLevel() 方法传递的适当值。

如果麦克风可用,但却因为尚未调用 Microphone.getMicrophone() 而未被使用,则此属性设置为 -1。

另请参见

gain属性 
gain:Number  [读写]

麦克风增益 - 即麦克风在传送信号之前应该将信号放大的倍数。 值 0 将信号乘以 0;即麦克风不传送声音。

您可以将此设置想象为立体声音响上的音量旋钮:0 表示没有音量,50 表示正常音量。 小于 50 的数字表示低于正常音量,大于 50 的数字表示高于正常音量。有效值为 0 到 100,默认值为 50。用户可以在 Flash Player 的“麦克风设置”面板中更改此值。

另请参见

index属性 
index:int  [只读 (read-only)]

麦克风的索引,它反映在 Microphone.names 返回的数组中。

另请参见

muted属性 
muted:Boolean  [只读 (read-only)]

指定用户是已经拒绝对麦克风的访问 (true) 还是已经允许对麦克风的访问 (false)。当该值发生变化时,将调度 status 事件。有关详细信息,请参阅 Microphone.getMicrophone()

另请参见

name属性 
name:String  [只读 (read-only)]

当前声音捕获设备的名称,它由声音捕获硬件返回。

另请参见

names属性 
names:Array  [只读 (read-only)]

包含所有可用声音捕获设备名称的字符串数组。返回名称,但不必向用户显示 Flash Player 的“专用设置”面板。此数组通过 Microphone.names.length 属性提供每个声音捕获设备的从零开始的索引和系统上声音捕获设备的数量。有关详细信息,请参阅 Array 类条目。

调用 Microphone.names 要求全面检查硬件,并可能需要几秒钟时间才能生成数组。大多数情况下,使用默认麦克风即可。

注意:若要确定当前麦克风的名称,请使用 name 属性。

另请参见

rate属性 
rate:int  [读写]

麦克风捕获声音时使用的频率,单位是 kHz。允许的值是声音设备支持的任何以下值:5、8、11、22 或 44。

如果您的声音捕获设备支持 8 kHz,则默认值为 8 kHz。否则,默认值为您的声音捕获设备支持且高于 8 kHz 的下一个可用捕获级别,通常为 11 kHz。

silenceLevel属性 
silenceLevel:Number  [只读 (read-only)]

激活麦克风并调度 activity 事件所需的音量。默认值为 10。

另请参见

silenceTimeout属性 
silenceTimeout:int  [只读 (read-only)]

麦克风停止检测声音的时间和调度 activity 事件的时间之间相差的毫秒数。默认值为 2000(2 秒)。

若要设置此值,请使用 Microphone.setSilenceLevel() 方法。

另请参见

soundTransform属性 
soundTransform:SoundTransform  [读写]

在此麦克风对象处于环回模式时,控制它的声音。

useEchoSuppression属性 
useEchoSuppression:Boolean  [只读 (read-only)]

如果启用了回音抑制,则设置为 true;否则,设置为 false。除非用户已经在 Flash Player 的“麦克风设置”面板中选择了“降低回音”,否则默认值为 false

另请参见

方法详细信息
getMicrophone()方法
function getMicrophone(index:int = 0):Microphone

返回对用于捕获音频的 Microphone 对象的引用。若要开始捕获音频,您必须将 Microphone 对象附加到 NetStream 对象(请参阅 NetStream.attachAudio())。

Microphone.get() 的多次调用会引用同一个麦克风。因此,如果代码包含 mic1 = Microphone.get()mic2 = Microphone.get() 行,则 mic1mic2 将引用同一个(默认)麦克风。

如果要获取默认的麦克风,则需要使用 -1 调用 getMicrophone()。如果调用此方法时不使用任何参数,则会返回列表中的第一个麦克风。

可以使用 index 属性来获取当前 Microphone 对象的索引值。然后,可以将该值传递给 Microphone 类的其它方法。

通常,不应传递 index 的值。只需使用 Microphone.getMicrophone() 方法即可返回对默认麦克风的引用。通过使用“麦克风设置”面板,用户可以指定应用程序应使用的默认麦克风。如果传递 index 的值,则可能会引用非用户选择的其它麦克风。在极少数情况下(例如,应用程序同时从两个麦克风捕获音频),您可能会使用 index

当 SWF 文件尝试访问 Microphone.getMicrophone() 返回的对象时(例如,在调用 NetStream.attachAudio() 时),Flash Player 将显示“隐私”对话框,用户可从中选择是允许还是拒绝访问麦克风。(确保舞台大小至少为 215 x 138 个像素;这是 Flash Player 显示该对话框所需的最小大小。)

当用户对此对话框做出响应时,将调度 status 事件以指示用户的响应。还可以检查 Microphone.muted 属性以确定用户是允许还是拒绝访问麦克风。

如果 Microphone.getMicrophone() 返回 null,则表明麦克风正由其他应用程序使用,或者系统上没有安装任何麦克风。若要确定是否安装了任何麦克风,请使用 Microphones.names.length。若要显示 Flash Player 的“麦克风设置”面板(用户可从中选择 Microphone.getMicrophone 所引用的麦克风),请使用 Security.showSettings()

参数

index:int (default = 0) — 麦克风的索引值。

返回
Microphone — 对用于捕获音频的 Microphone 对象的引用。

事件
status:StatusEvent — 在麦克风报告其状态时调度。如果 code 属性的值为“Microphone.Muted”,则表示用户拒绝 SWF 文件访问其麦克风。如果 code 属性的值为“Microphone.Unmuted”,则表示用户允许 SWF 文件访问其麦克风。

另请参见

setLoopBack()方法 
function setLoopBack(state:Boolean = true):void

将麦克风捕获的音频传送到本地扬声器。

参数

state:Boolean (default = true)

setSilenceLevel()方法 
function setSilenceLevel(silenceLevel:Number, timeout:int = -1):void

设置可认定为有声的最低音量输入水平,以及实际静音前需经历的无声时间长度(可选)。

活动检测是检测声音级别在何时表示某人正在谈话的功能。当某人没有谈话时,由于不需要发送关联的音频流,因此可以节约带宽。此信息也可用于视频反馈,以便让用户知道他们(或其他人)没有谈话。

静音值与活动值直接对应。完全静音对应于活动值 0。持续噪音(根据当前增益设置可以检测到的噪音)对应于活动值 100。当增益得到适当调整之后,在您没有说话时,活动值将小于静音值;在您说话时,活动值将大于静音值。

此方法与 Camera.setMotionLevel() 类似;这两种方法都用于指定何时调度 activity 事件。不过,这两种方法在对发布流的影响上具有显著的差异:

参数

silenceLevel:Number — 激活麦克风并调度 activity 事件所需的音量。可接受值的范围为 0 到 100。
 
timeout:int (default = -1) — 在没有活动的情况下经过的毫秒数,必须经过这么长的时间,Flash Player 或 Adobe AIR 才会认为声音已停止并调度 dispatch 事件。默认值为 2000(2 秒)。(注意:在签名中显示的默认值 -1 是一个内部值,用于指示 Flash Player 或 Adobe AIR 使用 2000。)

另请参见

setUseEchoSuppression()方法 
function setUseEchoSuppression(useEchoSuppression:Boolean):void

指定是否使用音频编解码器的回音抑制功能。除非用户已经在 Flash Player 的“麦克风设置”面板中选择了“降低回音”,否则默认值为 false

回音抑制是指降低音频回馈效果,当扬声器发出的声音由同一台计算机上的麦克风拾取时,将导致音频回馈。(这不同于回音消除,后者完全消除回馈。)

通常情况下,当通过同一台计算机上的扬声器(而不是耳机)播放所捕获的声音时,建议使用回音抑制。如果您的 SWF 文件允许用户指定声音输出设备,则当他们指定使用扬声器并且还将使用麦克风时,您可能需要调用 Microphone.setUseEchoSuppression(true)

用户也可以在 Flash Player 的“麦克风设置”面板中调整这些设置。

参数

useEchoSuppression:Boolean — 一个用于指示是应该使用 (true) 还是不应该使用 (false) 回音抑制的布尔值。

另请参见

事件详细信息
activity 事件
事件对象类型: flash.events.ActivityEvent
属性 ActivityEvent.type = flash.events.ActivityEvent.ACTIVITY

在麦克风开始或结束会话时调度。

若要指定触发 activating 属性值为 true 的此事件所需的音量,或者指定在没有声音的情况下经过多长时间才会触发 activating 属性值为 false 的此事件,请使用 Microphone.setSilenceLevel()

ActivityEvent.ACTIVITY 常数定义 activity 事件对象的 type 属性值。

此事件具有以下属性:

属性
activating如果设备已激活则为 true,如果被取消激活则为 false
bubblesfalse
cancelablefalse;没有要取消的默认行为。
currentTarget当前正在使用某个事件侦听器处理 Event 对象的对象。
target开始或结束会话的对象,如 Camera 或 Microphone 对象。

另请参见

status 事件  
事件对象类型: flash.events.StatusEvent
属性 StatusEvent.type = flash.events.StatusEvent.STATUS

在麦克风报告其状态时调度。如果 code 属性的值为“Microphone.Muted”,则表示用户拒绝 SWF 文件访问麦克风。如果 code 属性的值为“Microphone.Unmuted”,则表示用户允许 SWF 文件访问麦克风。

定义 status 事件对象的 type 属性值。

此事件具有以下属性:

属性
bubblesfalse
cancelablefalse;没有要取消的默认行为。
code对象状态的描述。
currentTarget当前正在使用某个事件侦听器处理 Event 对象的对象。
level消息类别,例如 "status""warning""error"
target报告其状态的对象。

另请参见