Flash 麦克风检测动作脚本3
我在检测是否检测到麦克风时遇到一些问题。我正在运行函数Flash 麦克风检测动作脚本3,flash,actionscript-3,detect,microphone,Flash,Actionscript 3,Detect,Microphone,我在检测是否检测到麦克风时遇到一些问题。我正在运行函数micromic.getmicromic(),如果没有连接麦克风,或者如果用户在安全面板上单击了拒绝,则该函数应该返回null,对吗 我面临的问题是,在一些没有安装麦克风的计算机上,麦克风。GetMirror()仍然作为[对象麦克风]跟踪 例如,假设用户没有麦克风,在安全面板中单击“允许”,我无法验证是否切换到不同的控件 如果有人能告诉我如何检测麦克风是否没有连接,那我洗耳恭听 多谢各位, 威尔好吧,我建议在连接时进行麦克风测试,从用户那里录
micromic.getmicromic()
,如果没有连接麦克风,或者如果用户在安全面板上单击了拒绝,则该函数应该返回null,对吗
我面临的问题是,在一些没有安装麦克风的计算机上,麦克风。GetMirror()
仍然作为[对象麦克风]
跟踪
例如,假设用户没有麦克风,在安全面板中单击“允许”,我无法验证是否切换到不同的控件
如果有人能告诉我如何检测麦克风是否没有连接,那我洗耳恭听
多谢各位,
威尔好吧,我建议在连接时进行麦克风测试,从用户那里录制1-2秒,并将其发送回服务器进行评估,将其发送回用户,如果用户听到声音,则制作一些按钮供用户批准。这就是Skype所做的,您可以添加一些奇特的控制器,以便在同一测试屏幕上具有适当的噪声阈值级别和输入/输出音量等
我不确定,但即使GetMirror()返回false/不存在的设备,它也无法正确录制。您可以检查mic.activityLevel属性以检查是否存在任何麦克风级别
此外,如果计算机有多个麦克风,您可以在flash.media.micromic.names中迭代amic以检查每个级别。我建议检查flash.media.micromic.names并查看它是否为空。测试麦克风的示例代码
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;
}
var-micIndex:String=null//你想瞄准0,1,2的任何话筒
var_activityLevels:Array=[];
var\u micro:microscope=microscopeProvider.getmicroscope(micIndex);
var _testPassed:Boolean=false;
_麦克风设置环回(真);
setTimeout(_timedOut,TIMEOUT_MS)//永远不跑
_检查活动();
函数_checkActivity():void{
如果(麦克风){
变量级别:数字=_mic.activityLevel;
跟踪(“麦克风检查活动”,级别,活动级别);
如果(级别>0&&level!=\u activityLevels[\u activityLevels.length-1])
_活动水平推送(水平);
如果(_activityLevels.length<3&!_testTimedOut)
setTimeout(_checkActivity,100);
否则{
_破坏();
_testPassed=true;
//您的麦克风已检测到并正常工作
}
}
}
函数_timedOut():void{
_testTimedOut=true;
_破坏();
}
函数_destroy():void{
如果(麦克风)
_麦克风设置环回(假);
_mic=null;
}
var mic:Microphone = Microphone.getMicrophone();
try {
micName = mic.name
trace("mic.name "+mic.name)
} catch (e:Error) {
trace("no mic detected")
}