2009-10-08 3 views
2

У меня возникли проблемы с обнаружением микрофона или нет. Я запускаю функцию Microphone.getMicrophone(), и она должна вернуть нуль, если микрофон не подключен, или если пользователь нажал кнопку «Отклонить» на панели безопасности, правильно?Определение микрофона Actionscript 3

Проблема, с которой я столкнулся, - на некоторых компьютерах, где нет установленного микрофона, Microphone.getMicrophone() по-прежнему отслеживает [object Microphone].

Так скажите, например, у пользователя нет микрофона, и щелчки позволяют в панели безопасности, я не могу проверить, следует ли переключаться на разные элементы управления.

Если кто-нибудь может пролить свет на то, как определить, нет ли подключенного микрофона, тогда я все уши.

Большое спасибо заранее, Будет

ответ

1

Ну, я бы рекомендовал сделать микрофонный тест при подключении, запись 1-2 секунд от пользователя и отправить его обратно на сервер для оценки, отправить его обратно к пользователю и сделать какую-то кнопку для одобрения пользователем, если он услышал звук. Это то, что Skype делает, вы можете добавить некоторые модные контроллеры, чтобы иметь надлежащий уровень порога шума и громкость ввода/вывода, и такие же на одном тестовом экране.

Я не уверен, но даже если getMicrophone() возвращает ложное/не существующее устройство, он не может его правильно записать.

0

вы можете проверить свойство mic.activityLevel, чтобы проверить, есть ли микрофон уровень

также, если компьютер имеет несколько микрофонов, вы можете перебирать АМИК в flash.media.Microphone.names для проверки каждого уровня.

0

Я бы посоветовал проверить flash.media.Microphone.names и посмотреть, пуст ли он.

0

пример кода для проверки микрофона

var micIndex:String = null;//whatever mic you want to target 0,1,2 
var _activityLevels:Array=[]; 
var _mic:Microphone = MicrophoneProvider.getMicrophone(micIndex); 
var _testPassed:Boolean=false; 
_mic.setLoopBack(true); 
setTimeout(_timedOut, TIMEOUT_MS);//to not run forever 
_checkActivity(); 

function _checkActivity():void{ 
    if (_mic) { 
     var level:Number = _mic.activityLevel; 
     trace("MIC _checkActivity", level, _activityLevels); 
     if (level>0 && level != _activityLevels[_activityLevels.length - 1]) 
      _activityLevels.push(level); 
     if (_activityLevels.length < 3 && !_testTimedOut) 
      setTimeout(_checkActivity, 100); 
     else{ 
      _destroy(); 
      _testPassed=true; 
      //your mic is detected and working 
     } 
    } 
} 
function _timedOut():void{ 
    _testTimedOut = true; 
    _destroy(); 
} 
function _destroy():void{ 
      if (_mic) 
     _mic.setLoopBack(false); 
    _mic=null; 
} 
2
var mic:Microphone   = Microphone.getMicrophone(); 

try { 
    micName = mic.name 
    trace("mic.name "+mic.name) 
} catch (e:Error) { 
    trace("no mic detected") 
} 
+1

Было бы еще лучше, если вы объясните свой код. – 2012-10-26 09:02:02

+2

код говорит сам за себя :) – fjckls