2009-05-14 19 views
11

¿Hay alguna manera de determinar, mediante programación, cuándo se enchufan los auriculares en la computadora?Detectando cuando los auriculares están enchufados

Esencialmente, solo quiero escribir una herramienta simple que silenciará mi sonido a menos que los auriculares estén enchufados. ¿Esto es posible?

+1

elimina tus parlantes! jajaja ... (sí, esto es una broma) – bsneeze

+0

¿Qué tal algo más de información? Sistema operativo, modelo de tarjeta de sonido, etc.? –

+0

Muy específico de la situación pero para las laptops Dell XPS (no estoy seguro si está en otras) hay una opción en el panel de control de Sonido/Audio (no estoy seguro exactamente) en Avanzado para "PC Spk Mute" que enmudece esencialmente los parlantes a bordo pero permite sonido a través de los auriculares. – mundeep

Respuesta

12

En Windows Vista y sus versiones posteriores, puede usar las notificaciones de llegada y retiro del dispositivo y recuperar el formato de punto final para determinar si el fabricante de la solución de audio considera un extremo en particular como "auricular".

Antes de Vista no había forma de determinar esta información.

1

Es posible - RealTek tiene una utilidad de bandeja de sistema que aparece una molesta una utilidad útil para ajustar el audio siempre que conecte algo a la toma de micrófono, tal vez la toma de auriculares es similar.

+1

Acabamos de obtener una computadora con una placa RealTek, sé lo que quieres decir con el icono de la bandeja. Lo que es extraño es que la aplicación tiene que preguntarte qué acabas de enchufar ... es decir, "acabo de conectar un auricular [] de micrófono []". De modo que tiene alguna forma de saber que conectaste algo, pero no lo que conectaste. Creerías que confiaría en los usuarios para conectar los auriculares a la toma de auriculares, el micrófono en la toma de micrófono, ¿no? –

+0

Según recuerdo, detecta el socket. ¿No es así? –

1

No, a menos que su tarjeta de sonido lo soporte, lo cual es dudoso.

Es concebible que algunas tarjetas de sonido tengan un microconmutador en ellas para detectar cuando un auricular está enchufado, o que pueden medir la impedancia de la señal para saber cuándo el circuito está cerrado. No he visto eso en ninguna tarjeta de sonido barata.

Ahora, si tiene un conector que se comparte con un micrófono (por ejemplo, un auricular), es posible que pueda detectar el "pop" en el canal del micrófono, pero me atrevería a decir que aún sería poco confiable. No sabría si lo estaba enchufado o quitado, solo que se había producido un cambio.

Personalmente, acabo de silenciar el sonido todo el tiempo, y solo lo enciendo cuando realmente quiero sonido.

2

Creo que no puede proporcionar una solución universal.

También señalo la solución de nray. La mayoría de las tarjetas de sonido Realtek, especialmente realtek en las placas principales Intel, tienen esta característica. Pero en ese caso, el hardware no es uno "Estándar". En otras palabras, en esas tarjetas de sonido debería haber un mecanismo especial para detectar el cambio en la resistencia sobre los nodos de los sockets de salida y "Fire an event"

Si tienes ese tipo de tarjeta de sonido + solo necesitas un trabajo, pero no la solución perfecta, solo modifica la rutina que llama al programa de configuración. (Un programa para silenciar/activar el sonido). Luego reemplace el programa configurer (Puede encontrarlo usando Process Explorer) con su nueva utilidad.

N.B No estoy 100% seguro de si podemos identificar el plug-in-plug claramente.

7

Muchos códecs de audio proporcionan "detección de conector", ese es probablemente el término que necesita para googlear.

Parece que en Vista, puede utilizar IMMDeviceEnumerator :: GetDefaultAudioEndpoint() y IMMDevice :: GetState() para comprobar el estado de un 'punto final'. También está el 'IKsJackDescription Interface'.

En XP puede probar 'waveInGetNumDevs' - el controlador puede informar 0 hasta que los auriculares estén enchufados. Consulte los comentarios en this discussion para obtener más información.

Cuestiones relacionadas