Для проекта я хочу показать все доступные веб-камеры и микрофоны, чтобы пользователь мог легко выбрать любую комбинацию веб-камеры / микрофона, которую он предпочитает. Я столкнулся с проблемой со списком микрофонов.
Каждый микрофон указан с анимацией активности и его именем. Я могу просто перечислить все микрофоны (используя массив Microphone.names), но мне кажется, что я могу заставить просмотрщик активности работать только для одного микрофона. Другие микрофоны обнаруживаются с активностью «-1», которая (насколько я знаю) является Flex для «присутствует, но не используется». При отключении микрофона, который показывает активность , следующий (в моем случае, линия mic-in на моей материнской плате) показывает активность «0» (он не подключен, так что это имеет смысл).
Во время тестирования у меня есть в общей сложности 3 микрофона, неподключенный встроенный порт микрофона и два подключенных микрофона.
В целях тестирования я использую таймер, который отслеживает текущую активность микрофона каждые 100 мс, а также отображается график.
Кажется, не имеет значения, какой микрофон по умолчанию я установил через панель настроек вспышки.
Код
Я только прикрепил приведенные ниже фрагменты кода, чтобы вам было легче их прочитать. Пожалуйста, дайте мне знать, если вы предпочитаете весь код.
Основное приложение.mxml
Примечание: продолжение - это VBox. я определен перед этим фрагментом кода.
var mics:Array = Microphone.names;
for(i=0; i < mics.length; i++){
var mic:settingsMicEntry = new assets.settingsMicEntry;
mic.d = {name: mics[i], index: i};
cont.addChild(mic);
}
активы / settingsMicEntry.mxml
Таймер определен перед этим фрагментом кода. SoundTransform добавлен, чтобы замолчать воспроизведение локального микрофона. Исключение этого кода, к сожалению, не решает проблему (я пробовал). дисплей является объектом MXML Canvas.
mic = Microphone.getMicrophone(d.index);
if(mic){
// Temporary: The Microphones' visualizer
var bar:Box = new Box();
bar.y = 50;
bar.height = 0;
bar.width = 66;
bar.setStyle("backgroundColor", 0x003300);
display.addChild(bar);
var tf:SoundTransform = new SoundTransform(0);
mic.setLoopBack(true);
mic.soundTransform = tf;
timer = new Timer(100);
timer.addEventListener(TimerEvent.TIMER, function(e:TimerEvent):void{
var h:int = Math.floor((display.height/100)*mic.activityLevel);
bar.height = (h>-1) ? h : 0;
bar.y = (h>-1) ? display.height-h : display.height;
trace('TIMER: '+h+' from '+d.name);
});
timer.start();
}
Я вытащу свой слух сюда, поэтому любая помощь очень ценится!
Спасибо
-Dave
Ps .: простите за беспорядок в коде!