Estoy trabajando con un software de manejo de SMS, basado en Java y quiero reproducir un sonido de bip/alerta cada vez que recibimos un mensaje. Intenté buscar en las bibliotecas de java.sound y no pude encontrar nada. No sé si usar la forma de applet de reproducir un sonido estará bien en una aplicación java. ¿Hay algún sonido predefinido en cualquier biblioteca de Java que podamos llamar en una aplicación? ¡Cualquier apuntador será apreciado!¿Cómo se reproduce un sonido (alerta) en una aplicación java?
Respuesta
Usted puede echar un vistazo al método pitido dentro de la clase Toolkit, como se muestra here
La ruta del applet debe estar bien (y es muy sencillo). Para evitar crear una instancia de Applet, puede usar el método estático newAudioClip
y luego llamar al play()
en el AudioClip
creado.
URL url = getClass().getResource("/foo/bar/sound.wav");
AudioClip clip = Applet.newAudioClip(url);
clip.play();
Si desea utilizar el paquete de sonido para reproducir un archivo de sonido arbitraria, puede utilizar el paquete javax.sound.sampled
. Aquí está el código que jugará un archivo de sonido:
private void playSound(File f) { Runnable r = new Runnable() { private File f; public void run() { playSoundInternal(this.f); } public Runnable setFile(File f) { this.f = f; return this; } }.setFile(f); new Thread(r).start(); } private void playSoundInternal(File f) { try { AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(f); try { Clip clip = AudioSystem.getClip(); clip.open(audioInputStream); try { clip.start(); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } clip.drain(); } finally { clip.close(); } } catch (LineUnavailableException e) { e.printStackTrace(); } finally { audioInputStream.close(); } } catch (UnsupportedAudioFileException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
¿Puede explicar por qué necesitamos el hilo para dormir después de llamar a clip.start()? – lucks
Ha pasado un tiempo desde que escribí este código, pero supongo que probablemente funcione igual de bien con un 'Thread.yield()'. –
Me refería a por qué tenemos que bloquear en primer lugar, pero me di cuenta de que es probablemente porque cerramos la línea antes de que termine de jugar – lucks
Puede generar su propio sonido si busca algo menos aburrido que un pitido() sin un archivo de sonido externo.
import javax.sound.sampled.*;
public class SoundUtils {
public static float SAMPLE_RATE = 8000f;
public static void tone(int hz, int msecs)
throws LineUnavailableException
{
tone(hz, msecs, 1.0);
}
public static void tone(int hz, int msecs, double vol)
throws LineUnavailableException
{
byte[] buf = new byte[1];
AudioFormat af =
new AudioFormat(
SAMPLE_RATE, // sampleRate
8, // sampleSizeInBits
1, // channels
true, // signed
false); // bigEndian
SourceDataLine sdl = AudioSystem.getSourceDataLine(af);
sdl.open(af);
sdl.start();
for (int i=0; i < msecs*8; i++) {
double angle = i/(SAMPLE_RATE/hz) * 2.0 * Math.PI;
buf[0] = (byte)(Math.sin(angle) * 127.0 * vol);
sdl.write(buf,0,1);
}
sdl.drain();
sdl.stop();
sdl.close();
}
public static void main(String[] args) throws Exception {
SoundUtils.tone(1000,100);
Thread.sleep(1000);
SoundUtils.tone(100,1000);
Thread.sleep(1000);
SoundUtils.tone(5000,100);
Thread.sleep(1000);
SoundUtils.tone(400,500);
Thread.sleep(1000);
SoundUtils.tone(400,500, 0.2);
}
}
experimentos sonoros más aquí: Produce special sound effect
- 1. ¿Cómo se reproduce el sonido TICK predeterminado?
- 2. ¿Cómo se reproduce un archivo de sonido en una aplicación Metro de Windows 8 con WinRT?
- 3. ¿Cómo se reproduce un sonido en flash AS3 cuando termina?
- 4. Determine cuándo se reproduce un sonido fuerte en C#
- 5. Recibir notificaciones cuando se reproduce un sonido en OpenAL
- 6. ¿Cómo se reproduce el sonido de la biblioteca en AS3?
- 7. ¿Cómo se reproduce el sonido tap de iPhone?
- 8. ¿Cómo se reproduce el sonido lo antes posible?
- 9. HTML5 Audio - El sonido sólo se reproduce una vez
- 10. ¿Cómo se reproduce el archivo 3gp en Java?
- 11. APNS sin insignia/Alerta/Sonido
- 12. iPhone: ¿Cómo se reproduce un sonido de notificación local alto independientemente de la configuración del volumen?
- 13. UILocalNotification reproduce el sonido de los documentos de la aplicación
- 14. ¿Cómo se presenta un mensaje de alerta simple en java?
- 15. ¿Cómo disparo la alerta de sonido en OSX usando Cocoa?
- 16. ¿Cómo se reproduce el sonido en una llamada telefónica con Android?
- 17. ¿Cómo se reproduce el sonido cuando se hace clic en el botón en Android?
- 18. ¿Cómo se reproduce el sonido del clic del teclado en un teclado personalizado?
- 19. ¿Cómo se reproduce audio en una extensión?
- 20. ¿Reproduce el sonido predeterminado de notificaciones locales al mostrar UIAlertView?
- 21. ¿Cómo se reproduce el video en Java Swing?
- 22. ¿Cómo se reproduce un AudioClip largo?
- 23. WP7 Diálogo de alerta
- 24. Inicio lento para AVAudioPlayer la primera vez que se reproduce un sonido
- 25. Componente flash Flowplayer reproduce sonido pero no video
- 26. ¿Reproduce un AudioBufferSourceNode dos veces?
- 27. WebView con video incrustado se reproduce en segundo plano
- 28. ¿Cómo se reproduce MIDI en el iPhone?
- 29. Reproduce el archivo de sonido cuando se hace clic en la imagen
- 30. ¿Cómo se reproduce un archivo GIF en Android?
idea de por qué esta respuesta no es ampliamente utilizado? Parece extremadamente simple y útil ... – RaKXeR