2012-03-06 2 views
7

Я пишу приложение, которое будет записывать аудио с микрофона. Моя проблема в том, что я должен знать, когда пользователь подключит гнездо и вытащит разъем.Jack Sensing in C#

Я изучил Win32_SoundDevice класс WMI и, кажется, мне не существует такого свойства, что я могу проверить статус Джека.

Тогда я нашел RegisterEndpointNotificationCallback в IMMDeviceEnumerator, который, кажется, делает то, что мне нужно, но у меня нет подсказки, как это сделать в C#. Кто-нибудь знает, как использовать методы MMDeviceEnumerator для проверки статуса аудио порта? Любая помощь высоко ценится.

ответ

1

Возможно, вы захотите взглянуть на проект с открытым исходным кодом NAudio.

Я просмотрел их код, и, похоже, у них есть .Net-обертка для вашего IMMDeviceEnumerator interface.

Поскольку этот проект находится под лицензией Microsoft Public, он, вероятно, будет использоваться в вашем проекте.

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 (Unplugged) ..

Вы должны иметь NAudio библиотека ссылки ..

+0

Я получаю ошибка «Ссылка на объект, не установленная на экземпляр объекта» в Guid, что такое guid? – kakopappa