Обнаружение микрофона Actionscript 3 - PullRequest
2 голосов
/ 08 октября 2009

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

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

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

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

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

Ответы [ 5 ]

2 голосов
/ 21 февраля 2012
var mic:Microphone          = Microphone.getMicrophone();

try {
    micName = mic.name
    trace("mic.name "+mic.name)
} catch (e:Error) {
    trace("no mic detected")
}
1 голос
/ 24 октября 2009

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

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

0 голосов
/ 14 декабря 2011

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

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;
}
0 голосов
/ 16 сентября 2010

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

0 голосов
/ 27 мая 2010

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

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

...