我正在开发一个 WPF 应用程序,需要录制用户的音频消息。我按照代码here http://channel9.msdn.com/coding4fun/articles/NET-Voice-Recorder并且它工作正常。现在的问题是,如果它是台式机,我只检查是否有内置麦克风,而不检查是否连接了任何外部麦克风。我还想知道用户是否禁用了麦克风。您能告诉我如何检查是否连接了外部麦克风。如果用户无法录制音频,我需要显示错误消息。
为了检测 C# 中硬件的变化,您可以使用WM_DEVICECHANGE message http://msdn.microsoft.com/en-us/library/windows/desktop/aa363480%28v=vs.85%29.aspx, which 通知应用程序设备或计算机的硬件配置发生更改.
由于我远非这方面的专家,我宁愿向您指出检测麦克风何时被拔出 https://stackoverflow.com/questions/17669326/detecting-when-a-microphone-is-unplugged在 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);
}
以下是一些可能对您的项目有所帮助的进一步链接:
C# 中带有频谱图的声控录音机 http://www.codeproject.com/Articles/22951/Sound-Activated-Recorder-with-Spectrogram-in-C来自代码项目
.NET 录音机 http://channel9.msdn.com/coding4fun/articles/NET-Voice-Recorder来自第 9 频道
.NET 录音机 http://voicerecorder.codeplex.com/来自 CodePlex
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)