2008-11-06 9 views
18

Quiero alertar al usuario en una aplicación Swing de ciertos eventos con un bip de altavoz de PC, ya que no en cada PC hay una tarjeta de sonido con un altavoz conectado. (Al menos en mi PC de trabajo no hay altavoz, con una razón. :-) ¿Cómo puedo hacer esto?Cómo hacer ruido en el altavoz de la PC con Java

ACTUALIZACIÓN: java.awt.Toolkit.getDefaultToolkit(). Beep() parece que normalmente genera un sonido en la tarjeta de sonido. Solo usa el altavoz si no hay una tarjeta de sonido activa. Imprimir un valor ASCII 7 funciona solo si la aplicación se inicia en un terminal, que al menos una aplicación Swing generalmente no lo es. Entonces, la pregunta sigue abierta.

+2

Solo para observar, tengo una nueva PC que no tiene un parlante interno. –

+0

@Jonathan S. - No sabía que tales cosas existieran. ¿Es una computadora portátil? –

+0

Si construyes el tuyo, obviamente no puedes conectar el parlante, pero no conozco ninguno que no tenga uno.Son muy necesarios para la depuración de problemas de la placa base (códigos de sonido), entre otras cosas. – rmeador

Respuesta

20

Toolkit.getDefaultToolkit().beep();

+0

El pitido no funciona como pretendía el asker; usa un sonido de error determinado por OS. –

2

valor ASCII 7 es un pitido. Así que solo imprime ese personaje.

+0

Esto puede o no funcionar dependiendo de cómo se inicia la aplicación. Si se lanza aparte de un terminal normal, el intérprete no interpretará la impresión. La solución de Mmyers es más flexible. –

7

Prueba esto:

java.awt.Toolkit.getDefaultToolkit().beep(); 

Funcionó para mí, aunque no estoy seguro de si este era el pitido del altavoz de PC o algún pitido generada OS.

+1

Funciona en OS X, también. Reproduce el sonido de alerta de tu sistema. –

+0

Estoy bastante seguro de que en Windows, si no tiene instalado un controlador de tarjeta de sonido/tarjeta de sonido y pasa algo que requiere ese tipo de sonido, el altavoz del sistema emite un pitido. –

+0

El pitido no funciona como pretendía el asker; usa un sonido de error determinado por OS. –

4

leí en alguna parte que es necesario utilizar un C/C++ DLL y conectarlo con JNI, para hacer que el trabajo, .. enlace está desconectado

Ok he encontrado lo que buscas un

http://pyx4j.com/pyx4j-native/index.html

que pyx4j nativo proyecto es una colección de envoltorios Java para funciones de windows como hora y pitido. Ahora solo funciona en Windows.

NativeThreadDump - Enviar a CtrlBreak Evento proceso actual

Bip - Hacer un sonido mediante los altavoces del PC

FileUtil - El acceso y modificar la hora de creación del archivo. Se utiliza en com.pyx4j.log.RollingFileAppender

NativeTimer - contador de rendimiento de alta resolución Sistema utilizado antes de Java 5

3

Aparte de la señal acústica se puede tratar JFugue.

JFugue es una API Java de código abierto para programar música sin las complejidades de MIDI.

+0

Gracias por la respuesta, pero ¿JFugue puede hacer un sonido en el Altavoz de la PC incluso si hay una Tarjeta de sonido? Si no, esto no responde la pregunta. ;-) –

0
{ 
    If (whatever you named the file) = true 
    Then 
    Process.Start ("C:\Windows\Media\{whatever you named the file}) 
    } 

Utilizo eso en C#. Es tarde para mí, el código no es exactamente exacto antes de que la gente critique esta publicación. Coloque un directorio de escritura para nombrar una carpeta y declararla como la ubicación predeterminada. Mueva el sonido de su elección a esta carpeta y reproducirá el tono de audio. Configure el temporizador en Java para reproducir el sonido cada 2 segundos para llamar la atención de las personas. Espero que esto ayude ya que estoy aprendiendo a mi mismo!

+0

Al menos debe mencionar que es una respuesta solo de Windows, no una respuesta general de Java. –

Cuestiones relacionadas