|
|
|||||
Регистрация: Sep 2006
Сообщений: 145
|
Определения наличия микрофона
Как определить физическое наличие микрофона в момент инициализации флэшки? Проблема такая же, как и с камерой. Для камеры можно смотреть Camera.currentFPS. Что можно придумать с микрофоном?
Можно ли как то определить тип микрофона (внешний, встроенный из вебки)? |
|
|||||
Регистрация: Feb 2012
Сообщений: 1,540
|
Microphone.isSupported, по-моему...
|
|
|||||
Регистрация: Sep 2006
Сообщений: 145
|
Цитата:
микрофон подключен trace (Microphone.isSupported); //output:true trace (Microphone.names); //output:Microphone (3- Audio_Device) Добавлено через 23 минуты в принципе как более-менее разделить на типы понятно при обработке массива нэймс, хотя тоже как то... trace (Microphone.names); //output:Mic in at rear panel (Pink) (Realtek High Definition Audio),Microphone (3- Audio_Device),Microphone (Bluetooth SCO Audio) Добавлено через 22 часа 54 минуты ну в общем я подумал немного и накидал решение Можно слушать SampleDataEvent.SAMPLE_DATA - оно срабатывает только для рабочего микрофона, с которого можно получить звук. Если в системе микрофон замьючен события не будет. Срабатывает так же иногда, если микрофон неисправен Выслушаю рекомендации/дополнения Управляющий класс public class MicrophoneManager { private var micCounter:int = 0; private var testMic:TestMic; public function MicrophoneManager() { test_microphone(); } private function test_microphone(e:MicrophoneEvent = null):void { trace ("test call",micCounter,Microphone.names.length) if (micCounter < Microphone.names.length) { testMic = new TestMic(micCounter); testMic.addEventListener(MicrophoneEvent.TEST_COMPLETE, test_microphone); testMic.test(); micCounter++ } else { trace ("end") } } } public class TestMic extends EventDispatcher { public var active:Boolean = false; public var mic:Microphone; private var timer:Timer = new Timer(300, 1); public function TestMic($micId:Number) { mic = Microphone.getMicrophone($micId); } public function test():void { mic.addEventListener(SampleDataEvent.SAMPLE_DATA, onSampleData); timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete); timer.start(); } private function onTimerComplete(e:TimerEvent):void { trace ("mic",mic.name,"active",active) mic.removeEventListener(SampleDataEvent.SAMPLE_DATA, onSampleData); timer.removeEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete); dispatchEvent(new MicrophoneEvent(MicrophoneEvent.TEST_COMPLETE)); } private function onSampleData(e:SampleDataEvent):void { if (mic.activityLevel > -1) { active = true; } } } |
Часовой пояс GMT +4, время: 10:25. |
|
« Предыдущая тема | Следующая тема » |
|
|