套件 | flash.media |
類別 | public final class Microphone |
繼承 | Microphone EventDispatcher Object |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
若要存取裝置麥克風,您可以使用 Microphone.getMicrophone()
方法。然而,這個方法傳回的是簡易麥克風,無法消除原音回音。若要消除原音回音,您必須使用 Microphone.getEnhancedMicrophone()
方法,取得麥克風的實體。這個方法會傳回裝置麥克風,該麥克風已啟用適用於行動裝置的原音回音消除功能。使用原音回音消除可建立不需要耳機的即時音訊/視訊應用程式。
建立即時聊天應用程式
若要建立即時聊天應用程式,請擷取音訊並將音訊傳送到 Flash Media Server。使用 NetConnection 和 NetStream 類別,將音訊串流傳送到 Flash Media Server。Flash Media Server 會將音訊廣播到其他用戶端。若要建立不需要耳機的聊天應用程式,請使用原音回音消除。原音回音消除可避免當音訊進入麥克風,傳到喇叭,然後再次進入麥克風而產生的回應重複播放。若要使用原音回音消除,請呼叫 Microphone.getEnhancedMicrophone()
方法,以取得 Microphone 實體的參照。將 Microphone.enhancedOptions
設定為 MicrophoneEnhancedOptions
類別的實體,即可進行設定。
本機播放麥克風音訊
呼叫 Microphone setLoopback()
方法,將麥克風音訊直接傳送到本機電腦或裝置的音訊輸出。無法控制的音訊回應是無法避免的風險,當麥克風輸入收到音訊輸出時,便可能發生此狀況。setUseEchoSuppression()
方法可降低 (但無法排除) 音訊回應擴大的風險。
擷取麥克風音訊以便本機錄製或處理
若要擷取麥克風音訊,請偵聽 Microphone 實體傳送的 sampleData
事件。此事件傳送的 SampleDataEvent 物件包含音訊資料。
如需有關擷取視訊的詳細資訊,請參閱 Camera 類別。
執行階段麥克風支援
在行動瀏覽器上執行的 Flash Player,不支援 Microphone 類別。
AIR 描述檔支援:桌上型電腦作業系統、iOS 和 Android 行動裝置都支援 Microphone 類別。AIR for TV 裝置不支援。如需有關跨多個描述檔之 API 支援的詳細資訊,請參閱 AIR 描述檔支援。
您可以使用 Microphone.isSupported
屬性測試執行階段的支援狀況。請注意,針對 AIR for TV 裝置,Microphone.isSupported
為 true
但是 Microphone.getMicrophone()
永遠傳回 null
。
私用控制
Flash Player 會顯示「私用」對話方塊,讓使用者選擇要允許或拒絕對麥克風進行存取。您的應用程式視窗大小至少必須為 215 x 138 個像素,這是顯示對話方塊的大小下限,否則將自動拒絕存取。
在 AIR 應用程式安全執行程序中執行的內容,不需要存取麥克風的權限,因此不會顯示對話方塊。在 AIR 應用程式安全執行程序之外執行的內容,需要存取麥克風的權限,因此會顯示「私用」對話方塊。
詳細資訊
Cristophe Coenraets:Android 的語音備註
Michael Chaize:AIR、Android 及麥克風
相關 API 元素
屬性 | 定義自 | ||
---|---|---|---|
activityLevel : Number [唯讀]
麥克風偵測到的音量。 | Microphone | ||
codec : String
用於壓縮音訊的轉碼器。 | Microphone | ||
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | ||
enableVAD : Boolean
啟用 Speex 語音活動偵測。 | Microphone | ||
encodeQuality : int
使用 Speex 轉碼器時的編碼語音品質。 | Microphone | ||
enhancedOptions : MicrophoneEnhancedOptions
控制項增強功能的麥克風選項。 | Microphone | ||
framesPerPacket : int
在封包 (訊息) 中傳輸的 Speex 語音影格數目。 | Microphone | ||
gain : Number
放大麥克風訊號的量。 | Microphone | ||
index : int [唯讀]
麥克風的索引,它會反映在 Microphone.names 所傳回的陣列中。 | Microphone | ||
isSupported : Boolean [靜態] [唯讀]
如果目前的平台支援 Microphone 類別,則 isSupported 屬性會設為 true,否則會設為 false。 | Microphone | ||
muted : Boolean [唯讀]
指定使用者已經拒絕存取麥克風 (true) 或允許 (false)。 | Microphone | ||
name : String [唯讀]
目前的聲音捕捉裝置名稱,它會由聲音捕捉硬體傳回。 | Microphone | ||
names : Array [靜態] [唯讀]
字串陣列,內含所有可用聲音擷取裝置的名稱。 | Microphone | ||
noiseSuppressionLevel : int
Speex 編碼器使用的最大雜訊衰減 dB (負數)。 | Microphone | ||
permissionStatus : String [靜態] [唯讀]
判斷應用程式是否已獲得使用麥克風的權限。 | Microphone | ||
rate : int
麥克風擷取聲音的頻率,以 kHz 為單位。 | Microphone | ||
silenceLevel : Number [唯讀]
啟用麥克風和傳送 activity 事件所需的音量。 | Microphone | ||
silenceTimeout : int [唯讀]
從麥克風停止偵測聲音到傳送 activity 事件之間的毫秒數。 | Microphone | ||
soundTransform : flash.media:SoundTransform
會當此 Microphone 物件處於回送模式時,控制其聲音。 | Microphone | ||
useEchoSuppression : Boolean [唯讀]
如果已啟用回音抑制,請設定為 true,否則設定為 false。 | Microphone |
方法 | 定義自 | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
會在 EventDispatcher 物件註冊事件偵聽程式,以便讓偵聽程式收到事件的通知。 | EventDispatcher | ||
會將事件傳送到事件流程。 | EventDispatcher | ||
[靜態]
傳回可執行原音回音消除之增強 Microphone 物件的參考。 | Microphone | ||
[靜態]
傳回捕捉音效的 Microphone 物件的參照。 | Microphone | ||
會檢查 EventDispatcher 物件是否有對特定的事件類型註冊偵聽程式。 | EventDispatcher | ||
指出物件是否有已定義的指定屬性。 | Object | ||
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | ||
指出指定的屬性是否存在,以及是否可列舉。 | Object | ||
會從 EventDispatcher 物件移除偵聽程式。 | EventDispatcher | ||
要求應用程式的麥克風權限。 | Microphone | ||
將麥克風擷取的音效遞送到本機喇叭。 | Microphone | ||
為迴圈作業設定動態屬性的可用性。 | Object | ||
設定可認定為有聲的最低音量輸入水準,以及 (選擇性) 真正算是靜音前所需歷經的無聲時間長度。 | Microphone | ||
指定是否使用音效轉碼器的回音抑制功能。 | Microphone | ||
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | ||
會傳回指定之物件的字串形式。 | Object | ||
會傳回指定之物件的基本值。 | Object | ||
檢查此 EventDispatcher 物件是否已註冊事件偵聽程式,或者此物件的任何祖系已為特定事件類型註冊事件偵聽程式。 | EventDispatcher |
activityLevel | 屬性 |
activityLevel:Number
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
麥克風偵測到的音量。 範圍值介於 0 (未偵測到聲音) 到 100 (偵測到極大的音量) 之間。 這個屬性的值可幫助您決定要傳遞給 Microphone.setSilenceLevel()
方法的有效值。
如果麥克風的 muted
屬性為 true
,則此屬性值永遠為 -1。
實作
public function get activityLevel():Number
擲回值
PermissionError — 應用程式沒有使用麥克風的權限。
|
相關 API 元素
codec | 屬性 |
codec:String
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5 |
用於壓縮音訊的轉碼器。可用的轉碼器為 Nellymoser (預設) 與 Speex。列舉類別 SoundCodec
包含適用於 codec
屬性的各個值。
如果您使用 Nellymoser 轉碼器,您可以使用 Microphone.rate()
設定取樣頻率。如果您使用 Speex 轉碼器,取樣頻率設定為 16 kHz。
Speex 包含語音活動偵測 (VAD),而且當沒有偵測到聲音時,會自動降低頻寬。當使用 Speex 轉碼器,Adobe 建議您設定靜音等級為 0。如果要設定靜音等級,請使用 Microphone.setSilenceLevel()
方法。
實作
public function get codec():String
public function set codec(value:String):void
擲回值
PermissionError — 應用程式沒有使用麥克風的權限。
|
相關 API 元素
enableVAD | 屬性 |
enableVAD:Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
啟用 Speex 語音活動偵測。
實作
public function get enableVAD():Boolean
public function set enableVAD(value:Boolean):void
擲回值
PermissionError — 應用程式沒有使用麥克風的權限。
|
encodeQuality | 屬性 |
encodeQuality:int
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5 |
使用 Speex 轉碼器時的編碼語音品質。可能值為 0 到 10。預設值為 6。 數字越高表示品質越高,但也需要較大的頻寬,如下表所示。列出的位元速率值表示淨位元速率,不含封包化負荷。
品質值 | 必要的位元速率 (KB/秒) |
---|---|
0 | 3.95 |
1 | 5.75 |
2 | 7.75 |
3 | 9.80 |
4 | 12.8 |
5 | 16.8 |
6 | 20.6 |
7 | 23.8 |
8 | 27.8 |
9 | 34.2 |
10 | 42.2 |
實作
public function get encodeQuality():int
public function set encodeQuality(value:int):void
擲回值
PermissionError — 應用程式沒有使用麥克風的權限。
|
相關 API 元素
enhancedOptions | 屬性 |
enhancedOptions:MicrophoneEnhancedOptions
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.3, AIR 2.7 |
控制項增強功能的麥克風選項。如需詳細資訊,請參閱 MicrophoneEnhancedOptions
類別。非增強 Microphone 實體的這個屬性會被忽略。
實作
public function get enhancedOptions():MicrophoneEnhancedOptions
public function set enhancedOptions(value:MicrophoneEnhancedOptions):void
擲回值
PermissionError — 應用程式沒有使用麥克風的權限。
|
相關 API 元素
framesPerPacket | 屬性 |
gain | 屬性 |
gain:Number
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
放大麥克風訊號的量。有效值為 0 到 100。預設值為 50。
實作
public function get gain():Number
public function set gain(value:Number):void
擲回值
PermissionError — 應用程式沒有使用麥克風的權限。
|
相關 API 元素
index | 屬性 |
index:int
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
麥克風的索引,它會反映在 Microphone.names
所傳回的陣列中。
實作
public function get index():int
擲回值
PermissionError — 應用程式沒有使用麥克風的權限。
|
相關 API 元素
isSupported | 屬性 |
muted | 屬性 |
muted:Boolean
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
指出使用者是否已經拒絕 (true
) 或允許 (false
) 存取麥克風。 當這個值變更時,會傳送 status
事件。 如需詳細資訊,請參閱 Microphone.getMicrophone()
。
實作
public function get muted():Boolean
擲回值
PermissionError — 應用程式沒有使用麥克風的權限。
|
相關 API 元素
name | 屬性 |
names | 屬性 |
names:Array
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
字串陣列,內含所有可用聲音擷取裝置的名稱。 傳回這些名稱時,不需要對使用者顯示「Flash Player 私用設定」面板。 此陣列會透過 Microphone.names.length
屬性,提供每個聲音捕捉裝置的索引 (從零開始),以及系統上的聲音捕捉裝置數目。 如需詳細資訊,請參閱 Array 類別項目。
呼叫 Microphone.names
必須詳細檢查硬體,所以可能要花幾秒鐘來建立陣列。 在大多數的情況下,您只需要使用預設的麥克風。
注意:若要決定目前麥克風的名稱,請使用 name
屬性。
實作
public static function get names():Array
相關 API 元素
noiseSuppressionLevel | 屬性 |
noiseSuppressionLevel:int
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
Speex 編碼器使用的最大雜訊衰減 dB (負數)。如果啟用,在 Speex 壓縮之前,對 Microphone 擷取的聲音將會套用雜訊抑制。設定為 0 以停用雜訊抑制。雜訊抑制預設為啟用,同時設定最大衰減為 -30 dB。當選取 Nellymoser 轉碼器時會忽略。
實作
public function get noiseSuppressionLevel():int
public function set noiseSuppressionLevel(value:int):void
擲回值
PermissionError — 應用程式沒有使用麥克風的權限。
|
permissionStatus | 屬性 |
rate | 屬性 |
rate:int
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
麥克風擷取聲音的頻率,以 kHz 為單位。可接受的值包括 5、8、11、22 和 44。如果您的聲音捕捉裝置支援的話,則預設值就是 8 kHz, 否則,預設值就是您的聲音捕捉裝置所支援、超過 8 kHz 的下一個可用的捕捉階層,通常會是 11 kHz。
注意:實際的頻率會稍微和 rate
值不同,如以下表格所說明:
rate 值 | 實際頻率 |
---|---|
44 | 44,100 Hz |
22 | 22,050 Hz |
11 | 11,025 Hz |
8 | 8,000 Hz |
5 | 5,512 Hz |
實作
public function get rate():int
public function set rate(value:int):void
擲回值
PermissionError — 應用程式沒有使用麥克風的權限。
|
相關 API 元素
silenceLevel | 屬性 |
silenceLevel:Number
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
啟用麥克風和傳送 activity
事件所需的音量。預設值為 10。
實作
public function get silenceLevel():Number
擲回值
PermissionError — 應用程式沒有使用麥克風的權限。
|
相關 API 元素
silenceTimeout | 屬性 |
silenceTimeout:int
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
從麥克風停止偵測聲音到傳送 activity
事件之間的毫秒數。 預設值為 2000 (2 秒)。
若要設定這個值,請使用 Microphone.setSilenceLevel()
方法。
實作
public function get silenceTimeout():int
擲回值
PermissionError — 應用程式沒有使用麥克風的權限。
|
相關 API 元素
soundTransform | 屬性 |
soundTransform:flash.media:SoundTransform
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
會當此 Microphone 物件處於回送模式時,控制其聲音。
實作
public function get soundTransform():flash.media:SoundTransform
public function set soundTransform(value:flash.media:SoundTransform):void
擲回值
PermissionError — 應用程式沒有使用麥克風的權限。
|
useEchoSuppression | 屬性 |
getEnhancedMicrophone | () | 方法 |
public static function getEnhancedMicrophone(index:int = -1):Microphone
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.3, AIR 2.7 |
傳回可執行原音回音消除之增強 Microphone 物件的參考。使用原音回音消除可建立不需要耳機的音訊/視訊聊天應用程式。
Microphone.getEnhancedMicrophone()
方法和 Microphone.getMicrophone()
方法的 index
參數以相同方式運作。
若要在 Android 上使用這個方法,請在應用程式描述器的 Android 資訊清單附加物底下增加 MODIFY_AUDIO_SETTINGS
權限。
重要:不論在任何時間,您只能有一個增強型麥克風裝置的實體。所有其他的 Microphone 實體都會停止提供音效資料,並且接收含有 code
屬性 Microphone.Unavailable
的 StatusEvent
。當無法初始化增強音訊時,對此方法的呼叫會傳回 null
,為 Microphone.enhancedOptions
設定值沒有作用,並且所有現有 Microphone 實體如同以往般運作。
若要設定增強 Microphone 物件,請設定 Microphone.enhancedOptions
屬性。下列程式碼在本機測試中使用增強 Microphone 物件及全雙工原音回音消除:
var mic:Microphone = Microphone.getEnhancedMicrophone(); var options:MicrophoneEnhancedOptions = new MicrophoneEnhancedOptions(); options.mode = MicrophoneEnhancedMode.FULL_DUPLEX; mic.enhancedOptions = options; mic.setLoopBack(true);
使用原音回音消除時,會忽略 setUseEchoSuppression()
方法。
當某個 SWF 檔試圖存取 Microphone.getEnhancedMicrophone()
方法所傳回的物件時 (例如,當您呼叫 NetStream.attachAudio()
時),Flash Player 會顯示「私用」對話方塊,讓使用者選擇要允許或拒絕存取該麥克風 (請確定您的「舞台」大小至少是 215 x 138 像素;這是 Flash Player 顯示對話方塊時要求的最小尺寸)。
參數
index:int (default = -1 ) — 麥克風的索引值。
|
Microphone — 擷取音效的 Microphone 物件的參考。如果無法初始化增強音訊,則傳回 null 。
|
相關 API 元素
getMicrophone | () | 方法 |
public static function getMicrophone(index:int = -1):Microphone
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
傳回捕捉音效的 Microphone 物件的參照。若要開始擷取音效,您必須將 Microphone 物件附加到 NetStream 物件 (請參閱 NetStream.attachAudio()
)。
多次呼叫 Microphone.getMicrophone()
會參考到相同的麥克風。因此,如果程式碼中包含 mic1 = Microphone.getMicrophone()
與 mic2 = Microphone.getMicrophone()
這兩行,則 mic1
與 mic2
會參考相同的 (預設) 麥克風。
一般而言,您不應該傳遞值給 index
。只要呼叫 air.Microphone.getMicrophone()
方法就可以傳回預設麥克風的參考。使用在 Flash Player 設定面板中的「麥克風設定」區段,使用者可以指定應用程式應該使用的預設麥克風。(使用者可以在網頁瀏覽器中執行的 Flash Player 內容上按一下滑鼠右鍵,就可以存取 Flash Player 設定面板。) 如果傳遞值給 index
,您會參考到非使用者所選的其他麥克風。您可以在少數狀況下使用 index
,例如,當您的應用程式同時從兩支麥克風擷取音效時。在 Adobe AIR 中執行的內容也使用 Flash Player 設定做為預設麥克風。
使用 Microphone.index
屬性可取得目前 Microphone 物件的索引值。接著,您可以將這個值傳遞給 Microphone 類別的其他方法。
當某個 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 = -1 ) — 麥克風的索引值。
|
Microphone — 擷取音效的 Microphone 物件的參考。
|
事件
status: — 會在麥克風回報其狀態時傳送。如果 code 屬性的值是 "Microphone.Muted" ,表示使用者不允許 SWF 檔存取使用者的麥克風。如果 code 屬性的值是 "Microphone.Unmuted" ,表示使用者允許 SWF 檔存取使用者的麥克風。
|
相關 API 元素
範例 ( 如何使用本範例 )
var mic:Microphone = Microphone.getMicrophone(); mic.setLoopBack(); mic.addEventListener(StatusEvent.STATUS, mic_status); var tf:TextField = new TextField(); tf.autoSize = TextFieldAutoSize.LEFT; tf.text = "Detecting microphone..."; addChild(tf); function mic_status(evt:StatusEvent):void { tf.text = "Microphone is muted?: " + mic.muted; switch (evt.code) { case "Microphone.Unmuted": tf.appendText("\n" + "Microphone access was allowed."); break; case "Microphone.Muted": tf.appendText("\n" + "Microphone access was denied."); break; } }
requestPermission | () | 方法 |
public function requestPermission():void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 24.0 |
要求應用程式的麥克風權限。
事件
PermissionStatus: — 由使用者授與/拒絕要求的權限時傳送。
|
setLoopBack | () | 方法 |
public function setLoopBack(state:Boolean = true):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
將麥克風擷取的音效遞送到本機喇叭。
參數
state:Boolean (default = true )
|
擲回值
PermissionError — 應用程式沒有使用麥克風的權限。
|
setSilenceLevel | () | 方法 |
public function setSilenceLevel(silenceLevel:Number, timeout:int = -1):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
設定可認定為有聲的最低音量輸入水準,以及 (選擇性) 真正算是靜音前所需歷經的無聲時間長度。
- 若要完全杜絕麥克風偵測聲音,請傳遞值 100 給
silenceLevel
,這樣就永遠不會傳送activity
事件。 - 若要判斷麥克風目前偵測的音量,請使用
Microphone.activityLevel
。
Speex 包含語音活動偵測 (VAD),而且當沒有偵測到聲音時,會自動降低頻寬。當使用 Speex 轉碼器,Adobe 建議您設定靜音等級為 0。
活動偵測是一種功能,用來偵測音效階層會在什麼時候認為是人在說話。當沒有人說話的時候,由於不需要傳送關聯的音效串流,所以可以節省頻寬。這項資訊也可用於視訊回應,以便讓使用者知道他們 (或其他人) 是靜音的。
靜音的值會直接對應到活動的值。完全靜音的活動值為 0; 而持續大量噪音 (可根據目前的增量設定,所註冊最大的音量) 的活動值則為 100。 增量經過適當調整之後,您在不說話時,活動值會小於靜音值;而在說話時,活動值則會超過靜音值。
這個方法類似 Camera.setMotionLevel()
,兩種方法都用來指定傳送 activity
事件的時機。 然而,這些方法對發佈串流所產生的影響卻截然不同:
Camera.setMotionLevel()
的設計目的是偵測移動,而且不會影響頻寬的使用。 即使視訊串流未偵測到移動,它還是會傳送視訊。Microphone.setSilenceLevel()
的設計是要讓頻寬最佳化。 當音效串流被視為靜音時,就不會傳送音效資料。 會改送單一訊息,表示已開始靜音。
參數
silenceLevel:Number — 啟用麥克風和傳送 activity 事件所需的音量。可接受的範圍值介於 0 到 100 之間。
| |
timeout:int (default = -1 ) — 在 Flash Player 或 Adobe AIR 認為聲音已停止並傳送 dispatch 事件之前,必須經過無活動狀態的毫秒數。預設值為 2000 (2 秒)。(注意:本使用方式中的預設值 -1 是內部值,會指定 Flash Player 或 Adobe AIR 使用 2000)。
|
擲回值
PermissionError — 應用程式沒有使用麥克風的權限。
|
相關 API 元素
setUseEchoSuppression | () | 方法 |
public function setUseEchoSuppression(useEchoSuppression:Boolean):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
指定是否使用音效轉碼器的回音抑制功能。 除非使用者在「Flash Player 麥克風設定」面板中已經選取「降低回音」,否則預設值是 false
。
回音抑制是為了減低音效回應的效果。造成這效果的原因是當聲音從喇叭傳出來的時候,相同系統中的麥克風會接收電波信號 (這種情況和原音回音消除不同,後者會完全移除回應。當您呼叫 getEnhancedMicrophone()
方法以使用原音回音消除時,會忽略 setUseEchoSuppression()
方法)。
一般而言,在透過喇叭 (而非耳機) 播放捕捉的聲音時,建議使用回音抑制功能。如果 SWF 檔允許使用者指定聲音輸出裝置,而且他們也指明同時會使用喇叭和麥克風,則您可以呼叫 Microphone.setUseEchoSuppression(true)
。
使用者也可以在「Flash Player 麥克風設定」面板中調整這些設定。
參數
useEchoSuppression:Boolean — Boolean 值,指出要使用回音抑制 (true ) 還是不使用 (false )。
|
擲回值
PermissionError — 應用程式沒有使用麥克風的權限。
|
相關 API 元素
Security.showSettings()
方法會顯示 Flash Player 對話方塊,要求權限以存取使用者的麥克風。呼叫 setLoopBack(true)
,將輸入重新遞送至本機喇叭,以便您可以在執行範例時聽到聲音。
有兩個偵聽程式會偵聽 activity
和 status
事件。在開始與結束 (如果有的話) 工作階段會傳送 activity
事件,然後由 activityHandler()
方法進行捕捉,以追蹤事件資訊。如果附加的麥克風物件有報告任何的狀態資訊,就會傳送 status
事件;這項動作是由 statusHandler()
方法執行捕捉與追蹤。
注意:麥克風必須連接至您的電腦,才能讓此範例正常工作。
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); } } }
Tue Jun 12 2018, 03:47 PM Z