The Microphone class lets you capture audio from a microphone attached to the computer
that is running Flash Player.
The Microphone class is primarily for use with a server, such as Flash
Media Server or Flex. However, you can also use the Microphone class
in a limited fashion without
a server—for example, to transmit sound from the microphone
through the speakers on the local computer. You attach a Microphone object to a NetStream object
to stream audio from a microphone.
Caution: Flash Player displays a Privacy dialog
box that lets the user choose whether to allow or deny access to
the microphone. Make sure that your application window size is at least 215 x 138
pixels; this is the minimum size required to display the
dialog box.
To create or reference a Microphone object, use the
Microphone.getMicrophone()
method.
View the examples.
activityLevel:Number
[read-only]
The amount of sound the microphone is detecting. Values range from
0 (no sound is detected) to 100 (very loud sound is detected). The value of this property can
help you determine a good value to pass to the Microphone.setSilenceLevel()
method.
If the microphone is available but is not yet being used because Microphone.getMicrophone()
has not been called, this property is set to -1.
Implementation
public function get activityLevel():Number
See also
gain:Number
[read-write]
The microphone gain—that is, the amount by which the microphone should multiply the signal before
transmitting it. A value of 0 tells Flash to multiply by 0; that is, the microphone transmits no sound.
You can think of this setting like a volume knob on a stereo: 0 is no volume and 50 is normal
volume. Numbers below 50 specify lower than normal volume, while numbers above 50 specify higher than
normal volume. Valid values are 0-100. The user can change this value in the
Flash Player Microphone Settings panel.
Implementation
public function get gain():Number
public function set gain(value:Number):void
See also
index:int
[read-only]
The index of the microphone, as reflected in the array returned by
Microphone.names
.
Implementation
public function get index():int
See also
muted:Boolean
[read-only]
Specifies whether the user has denied access to the microphone (true
)
or allowed access (false
). When this value changes, Microphone.onStatus
is
invoked. For more information, see Microphone.getMicrophone()
.
Implementation
public function get muted():Boolean
See also
name:String
[read-only]
The name of the current sound capture device, as returned by the sound capture hardware.
Implementation
public function get name():String
See also
names:Array
[read-only]
The names of all available sound capture devices. The names are returned without
having to display the Flash Player Privacy Settings panel to the user. This array
provides the zero-based index of each sound capture device and the
number of sound capture devices on the system, through the Microphone.names.length
property.
For more information, see the Array class entry.
Calling Microphone.names
requires an extensive examination of the hardware, and it
may take several seconds to build the array. In most cases, you can just use the default microphone.
Note: To determine the name of the current microphone,
use the name
property.
Implementation
public static function get names():Array
See also
rate:int
[read-write]
The rate at which the microphone is capturing sound, in kHz. The
default value is 8 kHz if your sound capture device supports this
value. Otherwise, the default value is the next available capture level
above 8 kHz that your sound capture device supports, usually 11 kHz.
Implementation
public function get rate():int
public function set rate(value:int):void
silenceLevel:Number
[read-only]
The amount of sound required to activate the microphone and dispatch
the activity
event. The default value is 10.
Implementation
public function get silenceLevel():Number
See also
silenceTimeout:int
[read-only]
The number of milliseconds between the time the microphone stops
detecting sound and the time the activity
event is dispatched. The default
value is 2000 (2 seconds).
To set this value, use the Microphone.setSilenceLevel()
method.
Implementation
public function get silenceTimeout():int
See also
soundTransform:SoundTransform
[read-write]
Controls the sound of this microphone object when it is in loopback mode.
Implementation
public function get soundTransform():SoundTransform
public function set soundTransform(value:SoundTransform):void
useEchoSuppression:Boolean
[read-only]
Returns true
if echo suppression is enabled; false
otherwise. The default value is
false
unless the user has selected Reduce Echo in the Flash Player Microphone Settings panel.
Implementation
public function get useEchoSuppression():Boolean
See also
public static function getMicrophone(index:int = 0):Microphone
To create or reference a Microphone object, use the
Microphone.getMicrophone()
method to get
the index value of the current microphone. You can then
pass this value to methods of the Microphone class.
Parameters
| index:int (default = 0 ) — The index value of the microphone.
|
Returns
Events
| status:StatusEvent — Dispatched when a microphone reports its status.
If the value of the code property is "Microphone.muted" ,
the user has refused to allow the SWF file access to the user's microphone.
If the value of the code property is "Microphone.unmuted" ,
the user has allowed the SWF file access to the user's microphone. |
See also
public function setLoopBack(state:Boolean = true):void
Sets the microphone into loopback mode or turns it off. This method reroutes
microphone sound to the local speaker.
Parameters
public function setSilenceLevel(silenceLevel:Number, timeout:int = -1):void
Sets the minimum input level that should be considered sound and (optionally) the amount
of silent time signifying that silence has actually begun.
- To prevent the microphone from detecting sound at all, pass a value of 100 for
silenceLevel
; the activity
is never dispatched. - To determine the amount of sound the microphone is currently detecting, use
Microphone.activityLevel
.
Activity detection is the ability to detect when audio levels suggest that a person is talking.
When someone is not talking, bandwidth can be saved because there is no need to send the associated
audio stream. This information can also be used for visual feedback so that users know
they (or others) are silent.
Silence values correspond directly to activity values. Complete silence is an activity value of 0.
Constant loud noise (as loud as can be registered based on the current gain setting) is an activity value
of 100. After gain is appropriately adjusted, your activity value is less than your silence value when
you're not talking; when you are talking, the activity value exceeds your silence value.
This method is similar in purpose to Camera.setMotionLevel()
; both methods are used to
specify when the activity
event is dispatched. However, these methods have
a significantly different impact on publishing streams:
Camera.setMotionLevel()
is designed to detect motion and does not affect bandwidth
usage. Even if a video stream does not detect motion, video is still sent.Microphone.setSilenceLevel()
is designed to optimize bandwidth. When an audio
stream is considered silent, no audio data is sent. Instead, a single message is sent, indicating
that silence has started.
Parameters
| silenceLevel:Number — The amount of sound required to activate the microphone
and dispatch the activity event. Acceptable values range from 0 to 100.
|
|
| timeout:int (default = -1 ) — The number of milliseconds that must elapse without
activity before Flash Player considers sound to have stopped and dispatches the
dispatch event. The default value is 2000 (2 seconds).
(Note: The default value shown
in the signature, -1, is an internal value that indicates to Flash Player to use 2000.)
|
See also
public function setUseEchoSuppression(useEchoSuppression:Boolean):void
Specifies whether to use the echo suppression feature of the audio codec. The default value is
false
unless the user has selected Reduce Echo in the Flash Player Microphone
Settings panel.
Echo suppression is an effort to reduce the effects of audio feedback, which is caused when
sound going out the speaker is picked up by the microphone on the same computer. (This is different
from echo cancellation, which completely removes the feedback.)
Generally, echo suppression is advisable when the sound being captured is played through
speakers — instead of a headset — on the same computer. If your SWF file allows users to specify the
sound output device, you may want to call Microphone.setUseEchoSuppression(true)
if they indicate they are using speakers and will be using the microphone as well.
Users can also adjust these settings in the Flash Player Microphone Settings panel.
Parameters
| useEchoSuppression:Boolean — A Boolean value indicating whether echo suppression should be used
(true ) or not (false ).
|
See also
Event object type: flash.events.ActivityEvent
ActivityEvent.type property = flash.events.ActivityEvent.ACTIVITY
Dispatched when a microphone begins or ends a session.
The ActivityEvent.ACTIVITY
constant defines the value of the type
property of an activity
event object.
This event has the following properties:
Property | Value |
activating | true if the device is activating or false if it is deactivating. |
bubbles | false |
cancelable | false ; there is no default behavior to cancel. |
currentTarget | The object that is actively processing the Event
object with an event listener. |
target | The object beginning or ending a session, such as a Camera or
Microphone object. |
Event object type: flash.events.StatusEvent
StatusEvent.type property = flash.events.StatusEvent.STATUS
Dispatched when a microphone reports its status.
If the value of the code
property is "Microphone.muted"
,
the user has refused to allow the SWF file access to the user's microphone.
If the value of the code
property is "Microphone.unmuted"
,
the user has allowed the SWF file access to the user's microphone.
Defines the value of the type
property of a status
event object.
This event has the following properties:
Property | Value |
bubbles | false |
cancelable | false ; there is no default behavior to cancel. |
code | A description of the object's status. |
currentTarget | The object that is actively processing the Event
object with an event listener. |
level | The category of the message, such as "status" , "warning" or "error" . |
target | The object reporting its status. |
See also
The following example captures sound using echo suppression from a microphone after the
user allows access to their computer's microphone.
The
Security.showSettings()
method displays the Flash Player dialog box, which requests
permission to access the user's microphone. The call to
setLoopBack(true)
reroutes
input to the local speaker, so you can hear the sound while you run the example.
Two listeners listen for activity
and
status
events. The activity
event is dispatched at the
start and end (if any) of the session and is captured by the activityHandler()
method, which traces information on the event. The status
event is dispatched if
the attached microphone object reports any status information; it is captured and traced using
the statusHandler()
method.
Note: A microphone must be attached to your computer for this example
to work correctly.
package {
import flash.display.Sprite;
import flash.events.*;
import flash.media.Microphone;
import flash.system.Security;
public class MicrophoneExample extends Sprite {
public function MicrophoneExample() {
var mic:Microphone = Microphone.getMicrophone();
Security.showSettings("2");
mic.setLoopBack(true);
if (mic != null) {
mic.setUseEchoSuppression(true);
mic.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
mic.addEventListener(StatusEvent.STATUS, statusHandler);
}
}
private function activityHandler(event:ActivityEvent):void {
trace("activityHandler: " + event);
}
private function statusHandler(event:StatusEvent):void {
trace("statusHandler: " + event);
}
}
}
© 2004-2006 Adobe Systems Incorporated. All rights reserved.
Tue May 15 2007, 11:34 AM GMT-04:00