Posterior a indagar en varios repositorios y foros de internet al final hemos hallado la respuesta que te mostraremos a continuación.
Solución:
Escribí el siguiente código que funciona bien. Pero creo que solo funciona con .wav
formato.
public static synchronized void playSound(final String url)
new Thread(new Runnable()
// The wrapper thread is unnecessary, unless it blocks on the
// Clip finishing; see comments.
public void run()
try
Clip clip = AudioSystem.getClip();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(
Main.class.getResourceAsStream("/path/to/sounds/" + url));
clip.open(inputStream);
clip.start();
catch (Exception e)
System.err.println(e.getMessage());
).start();
Un mal ejemplo:
import sun.audio.*; //import the sun.audio package
import java.io.*;
//** add this into your application code as appropriate
// Open an input stream to the audio file.
InputStream in = new FileInputStream(Filename);
// Create an AudioStream object from the input stream.
AudioStream as = new AudioStream(in);
// Use the static class member "player" from class AudioPlayer to play
// clip.
AudioPlayer.player.start(as);
// Similarly, to stop the audio.
AudioPlayer.player.stop(as);
No quería tener tantas líneas de código solo para reproducir un maldito sonido simple. Esto puede funcionar si tiene el paquete JavaFX (ya incluido en mi jdk 8).
private static void playSound(String sound)
// cl is the ClassLoader for the current class, ie. CurrentClass.class.getClassLoader();
URL file = cl.getResource(sound);
final Media media = new Media(file.toString());
final MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.play();
Aviso: debe inicializar JavaFX. Una forma rápida de hacerlo es llamar al constructor de JFXPanel() una vez en su aplicación:
static
JFXPanel fxPanel = new JFXPanel();
Valoraciones y reseñas
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)