2012-03-06 34 views
7

Sto scrivendo un'applicazione che registrerà l'audio dal microfono. Il mio problema è che ho bisogno di sapere quando l'utente inserisce il jack e rimuove il jack.Jack Sensing in C#

Ho esaminato la classe WMI Win32_SoundDevice e mi sembra che non ci sia una tale proprietà da poter controllare lo stato del Jack.

Quindi ho trovato RegisterEndpointNotificationCallback in IMMDeviceEnumerator che sembra fare ciò di cui ho bisogno ma non ho idea di come farlo in C#. Qualcuno sa come usare i metodi MMDeviceEnumerator per verificare lo stato della porta audio? Qualsiasi aiuto molto apprezzato.

risposta

1

Si consiglia di dare un'occhiata al progetto open source NAudio.

Ho sfogliato il loro codice e sembra che abbiano un .Net wrapper per il tuo IMMDeviceEnumerator interface.

Poiché questo progetto è in licenza pubblica Microsoft, sarà probabilmente utilizzabile nel progetto.

0

Partenza con il seguente codice:

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()); 

di questo ritorno di proprietà 1 (Alimentazione da rete elettrica) o 0 (Unplugged) ..

È necessario avere la libreria NAudio riferimento ..

+0

io sono sempre un errore "Riferimento oggetto non impostato su un'istanza di un oggetto" nel Guid, qual è il guid? – kakopappa

Problemi correlati