2010-10-13 72 views
11

Estoy tratando de codificar un cuadro de diálogo de error, y quiero que llame al sonido adecuado del sistema. ¿Hay alguna forma de acceder a los sonidos del sistema desde Java (es decir, sonido de inicio, pitido predeterminado, asterisco, detención crítica, etc.)?Sonidos del sistema en Java

Nota: que sé sobre java.awt.Toolkit.getDefaultToolkit().beep();

+0

¿Quiere reproducir melodías con el PC Speaker? ¿O solo causa un pitido? No sé cómo tocas, pero me gustaría saberlo. – Steven

+0

Sé cómo reproducir archivos de sonido, quiero saber cómo acceder a la interfaz predeterminada del sistema operativo suena – Supuhstar

Respuesta

15

Aquí ya go (exclusivamente para Windows :)

final Runnable runnable = 
    (Runnable) Toolkit.getDefaultToolkit().getDesktopProperty("win.sound.exclamation"); 
if (runnable != null) runnable.run(); 

Más sonidos para Windows (todas las páginas contienen el mismo contenido): Java 6, Java 7, Java 8. (¡Buena suerte para encontrar alguno para otro sistema operativo!)

3

Asumo que está hablando acerca de las ventanas sonidos del sistema? Mi mac no tiene un ruido de "parada crítica". ;-)

Tendrá que encontrar la ruta adecuada del sistema de archivos para esos archivos de sonido. Asumo que son archivos WAV así que algo como esto debería funcionar:

new JavaSoundAudioClip(new FileInputStream(new File("/tmp/go.wav"))).play(); 

El archivo puede tener una ruta como:

C:\WINDOWS\MEDIA\Microsoft Office 2000\EXPLODE.WAV 

NOTA: Esto respondió de inmediato a pesar de que el sonido ha sido "en cola" al dispositivo de audio. Puede llamar al stop() si necesita detenerlo.

Si necesita hacer algo más especial, eche un vistazo a this Java forum. Aquí hay algunos documentos que desglosan cómo usar el audio system more directly.

+0

Tenía la esperanza de un enfoque más universal/multiplataforma – Supuhstar

+0

Ah, luego encuentre los archivos de sonido en algún lugar e inclúyalos en su jar/guerra. Cada sistema operativo tiene sonidos muy diferentes (o ninguno) y, hasta donde yo sé, Java no proporciona un mecanismo estándar para activarlos. – Gray

+0

@Supuhstar Yo también, tal vez proporcione mis propios efectos de sonido. – jamie

Cuestiones relacionadas