[英]How to check if a microphone is available for recording
我正在使用WPF应用程序,其中需要记录来自用户的音频消息。 我在这里遵循了代码,并且工作正常。 现在的问题是,如果它是台式机,我只是检查是否有内置麦克风,而不是是否连接了任何外部麦克风。 我也想知道用户是否已禁用麦克风。 您能告诉我如何检查是否连接了外部麦克风。 如果用户将无法录制音频,我需要显示一条错误消息。
为了检测C#中硬件的更改,可以使用WM_DEVICECHANGE
消息 ,该消息 通知应用程序设备或计算机的硬件配置发生更改 。
由于我距离该领域的专家还很远,所以我希望您针对StackOverflow上的“ 当麦克风被拔出时检测”问题,而不是尝试向您解释。 该帖子所接受的答案应该可以帮助您检测何时拔下麦克风。 从接受的答案到链接的问题:
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 中C#中带有声谱图的声控录音机
通道9的.NET录音机
CodePlex的.NET录音机
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.