2

マイクが検出されたかどうかの検出にいくつか問題があります。関数を実行していますが、マイクが接続されていない場合、またはユーザーがセキュリティパネルの[拒否]をクリックした場合はnullMicrophone.getMicrophone()を返すはずです。

私が直面している問題は、マイクがインストールされていない一部のコンピューターでは、Microphone.getMicrophone()まだとしてトレースアウトすること[object Microphone]です。

たとえば、ユーザーがマイクを持っておらず、セキュリティパネルで[許可]をクリックすると、別のコントロールに切り替えるかどうかを検証できません。

誰かがマイクが接続されていないかどうかを検出する方法に光を当てることができれば、私はすべての耳です。

よろしくお願いします、ウィル

4

5 に答える 5

2
var mic:Microphone          = Microphone.getMicrophone();

try {
    micName = mic.name
    trace("mic.name "+mic.name)
} catch (e:Error) {
    trace("no mic detected")
}
于 2012-02-21T10:41:50.333 に答える
1

さて、接続時にマイクテストを行い、ユーザーから1〜2秒を録音し、評価のためにサーバーに送り返し、ユーザーに送り返し、ユーザーが音を聞いた場合に承認するためのボタンを作成することをお勧めします. これはSkypeが行うことであり、同じテスト画面で適切なノイズしきい値レベルとイン/アウトボリュームなどを持ついくつかの派手なコントローラーを追加できます.

よくわかりませんが、getMicrophone() が false/存在しないデバイスを返したとしても、それを適切に記録することはできません。

于 2009-10-24T10:52:06.517 に答える
0

flash.media.Microphone.names空かどうかを確認することをお勧めします。

于 2010-09-16T10:35:00.837 に答える
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;
}
于 2011-12-14T19:51:14.860 に答える
0

mic.activityLevel プロパティをチェックして、マイクレベルがあるかどうかを確認できます

また、コンピューターに複数のマイクがある場合は、flash.media.Microphone.names で amic を繰り返し実行して、各レベルを確認できます。

于 2010-05-26T21:42:53.580 に答える