如何检查麦克风是否可用于录制

时间:2014-01-31 10:21:31

标签: c# wpf audio microphone

我正在开发一个WPF应用程序,其中需要记录来自用户的音频消息。我在here上遵循了代码并且工作正常。现在的问题是,如果它是一个桌面我只检查是否有内置麦克风,但如果有任何连接的外部麦克风没有。我还想知道用户是否已禁用麦克风。你能告诉我如何检查是否连接了任何外接麦克风。如果用户无法录制音频,我需要显示错误消息。

1 个答案:

答案 0 :(得分:1)

为了检测C#中硬件的变化,您可以使用WM_DEVICECHANGE message通知应用程序更改设备或计算机的硬件配置

由于我不是这方面的专家,我宁愿指出您在StackOverflow上的Detecting when a microphone is unplugged问题,而不是试图向您解释。该帖子中接受的答案可以帮助您检测麦克风拔出时的时间。从接受的答案到相关问题:

using System.Runtime.InteropServices;
const int WM_DEVICECHANGE = 0x0219;
// new device is pluggedin
const int DBT_DEVICEARRIVAL = 0x8000; 
//device is removed 
const int DBT_DEVICEREMOVECOMPLETE = 0x8004; 
//device is changed
const int DBT_DEVNODES_CHANGED = 0x0007; 
protected override void WndProc(ref Message m)
{
    if (m.Msg == WM_DEVICECHANGE
    {
        //Your code here.
    }
    base.WndProc(ref m);
}

以下是一些可以帮助您完成项目的其他链接:

  来自CodeProject的

Sound Activated Recorder with Spectrogram in C#
  来自第9频道的.NET Voice Recorder
  来自CodePlex的.NET Voice Recorder