Curso de JavaFX | 12. Insertar sonido

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

En esta lección aprenderemos a insertar y reproducir sonidos en JavaFX utilizando las clases Media y MediaPlayer. Esto permitirá enriquecer nuestras aplicaciones con efectos de sonido o música de fondo.

Carga de ficheros locales

Preparación del proyecto

  1. Crear la carpeta para los archivos de sonido:
    • En la raíz de tu proyecto (o dentro de src), crea una carpeta llamada sound.
    • Coloca dentro el archivo de sonido que quieras utilizar. Por ejemplo: HakunaMatataItMeansNoWorries.mp3.
  2. Formato del archivo de sonido:
    • Asegúrate de que el archivo esté en un formato compatible, como MP3 o WAV.
String musicFile = "sound/HakunaMatataItMeansNoWorries.mp3"; 
Media sound = new Media(new File(musicFile).toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(sound);
mediaPlayer.play();

sound será una carpeta creada en la raíz de nuestro proyecto.

Explicación del código:

  1. Media:
    • Crea un objeto de tipo Media para cargar el archivo de sonido.
    • Es necesario convertir la ruta del archivo a formato URI con .toURI().toString().
  2. MediaPlayer:
    • Es el reproductor que gestiona la reproducción del sonido (iniciar, pausar, detener, etc.).
    • El método .play() inicia la reproducción.

Reproducir un sonido desde internet

Para reproducir un archivo de sonido alojado en un servidor remoto, simplemente pasa la URL al objeto Media:

import javafx.application.Application;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.stage.Stage;

public class SonidoDesdeInternet extends Application {

@Override
public void start(Stage primaryStage) {
    // URL del archivo de sonido
    String musicURL = "https://pablomonteserin.com/res/html5/ex/HakunaMatataItMeansNoWorries.mp3";

    // Crear el objeto Media
    Media sound = new Media(musicURL);

    // Crear y reproducir el MediaPlayer
    MediaPlayer mediaPlayer = new MediaPlayer(sound);
    mediaPlayer.play();
}

public static void main(String[] args) {
    launch(args);
}

}

Opciones avanzadas con MediaPlayer

Pausar y detener la reproducción:

mediaPlayer.pause(); // Pausar
mediaPlayer.stop();  // Detener

Controlar el volumen:

mediaPlayer.setVolume(0.5); // Rango entre 0.0 y 1.0

Repetir el sonido en bucle:

mediaPlayer.setCycleCount(MediaPlayer.INDEFINITE); // Reproducción infinita

Detectar el final de la reproducción:

mediaPlayer.setOnEndOfMedia(() -> System.out.println("¡Reproducción terminada!"));

Con esta lección, ya puedes agregar sonidos a tus aplicaciones JavaFX. ¡Prueba a incluir música de fondo o efectos de sonido para hacer tus proyectos más interactivos y atractivos! 🎵

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.