我需要创建一个小的监听器实用程序"监听"用于音频活动,并在检测到声音时执行操作。
目前我正在使用while循环:
MMDeviceEnumerator DevEnum = new MMDeviceEnumerator();
MMDevice device = DevEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
float level = 0;
while (level == 0)
{
// Get current audio level
level = device.AudioMeterInformation.MasterPeakValue;
}
Console.WriteLine("Audio Detected");
Console.ReadKey();
这可以正常工作,但鉴于我希望这个实用程序能够始终在"在后台,我想确保我以最有效的方式这样做。
这是不好的做法吗?我应该创建一个EventHandler,如果是,我该怎么做?
要提供有关要求的更多详细信息,当实用程序检测到音频时,我希望它调整窗口大小。 (它是浏览器中的视频会议窗口,应保持最小化。当第三方加入呼叫并开始说话时,我希望窗口最大化。当用户完成呼叫时,他们只会再次最小化窗口,我希望听众应用程序在下次用户加入呼叫时继续收听。)
答案 0 :(得分:0)
使用OnPropertyValueChanged
事件。在此方法中使用与while循环中相同的代码。
顺便说一下:你是否意识到当用户第一次达到0级时会打印出“Audio Detected”?这是你想要的吗?