杰克感应在C#

时间:2012-03-06 09:18:45

标签: c# .net audio io microphone

我正在编写一个能够录制麦克风音频的应用程序。我的问题是我需要知道用户何时插入插孔并拔出插孔。

我查看了Win32_SoundDevice WMI课程,在我看来,没有这样的属性我可以检查杰克的状态。

然后我在RegisterEndpointNotificationCallback找到了IMMDeviceEnumerator,这似乎做了我需要的但我不知道如何在C#中做到这一点。有谁知道如何使用MMDeviceEnumerator方法检查音频端口状态?任何帮助高度赞赏。

2 个答案:

答案 0 :(得分:1)

您可能需要查看当时的开源NAudio项目。

我浏览了他们的代码,看来他们的IMMDeviceEnumerator interface有.Net包装。

由于此项目属于Microsoft公共许可证,因此它可能在您的项目中可用。

答案 1 :(得分:0)

使用以下代码查看:

var enumerator = new MMDeviceEnumerator();
var d = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);
Console.WriteLine(d.Properties[new Guid("46d16a2c-5654-41c0-911e-7860d2bce7ee")].Value.ToString());

此属性返回1(已插入)或0(未插入)..

您必须引用NAudio库..