gentoo linux, java, software libre y otras hierbas
Jul, 18 2008 - 5:16 pm

[codigo] Cargar y reproducir audio en Java

En esta ocasión explicaré un sencillo ejemplo de reproducción de audio en Java, tomado del libro How-to program in Java de Deitel. La clase que utilizamos para este tipo de propósitos es AudioClip, que posee tres simples métodos:

  • play(), para reproducir una vez el archivo que le tengamos asociado
  • loop(), para reproducir indefinidamente el archivo que le tengamos asociado
  • stop(), para detener el sonido que se está reproduciendo

Para iniciar un objeto AudioClip utilizamos el método getAudioClip, de la clase Applet, de la siguiente manera: getAudioClip(getDocumentBase(),”archivo.wav”).

El resultado…

El código…

// Cargar un clip de audio y reproducirlo.
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CargarAudioYReproducir extends JApplet {
   private AudioClip sonido1, sonido2, sonidoActual;
   private JButton reproducirSonido, sonidoContinuo, detenerSonido;
   private JComboBox seleccionarSonido;
   // cargar la imagen cuando el subprograma empiece a ejecutarse
   public void init()
   {
      Container contenedor = getContentPane();
      contenedor.setLayout( new FlowLayout() );
      String opciones[] = { "Welcome", "Hi" };
      seleccionarSonido = new JComboBox( opciones );
      seleccionarSonido.addItemListener(
         new ItemListener() {
            // detener sonido y cambiarlo por el que seleccionó el usuario
            public void itemStateChanged( ItemEvent e )
            {
               sonidoActual.stop();
               sonidoActual =
                  seleccionarSonido.getSelectedIndex() == 0 ? sonido1 : sonido2;
            }
         } // fin de la clase interna anónima
      ); // fin de la llamada al método addItemListener
      contenedor.add( seleccionarSonido );
      // establecer botones y manejador de eventos de botón
      ButtonHandler manejador = new ButtonHandler();
      reproducirSonido = new JButton( "Reproducir" );
      reproducirSonido.addActionListener( manejador );
      contenedor.add( reproducirSonido );
      sonidoContinuo = new JButton( "Continuo" );
      sonidoContinuo.addActionListener( manejador );
      contenedor.add( sonidoContinuo );
      detenerSonido = new JButton( "Detener" );
      detenerSonido.addActionListener( manejador );
      contenedor.add( detenerSonido );
      // cargar sonidos y establecer sonidoActual
      sonido1 = getAudioClip( getDocumentBase(), "welcome.wav" );
      sonido2 = getAudioClip( getDocumentBase(), "hi.au" );
      sonidoActual = sonido1;
   } // fin del método init
   // detener el sonido cuando el usuario cambie de página Web
   public void stop()
   {
      sonidoActual.stop();
   }
   // clase interna privada para manejar eventos de botón
   private class ButtonHandler implements ActionListener {
      // procesar eventos de reproducir, sonido continuo y detener
      public void actionPerformed( ActionEvent eventoAccion )
      {
         if ( eventoAccion.getSource() == reproducirSonido )
            sonidoActual.play();
         else if ( eventoAccion.getSource() == sonidoContinuo )
            sonidoActual.loop();
         else if ( eventoAccion.getSource() == detenerSonido )
            sonidoActual.stop();
      }
   } // fin de la clase ButtonHandler
} // fin de la clase CargarAudioYReproducir

Descargar código fuente

Etiquetas: java
Los ejercicios utilizados en este post están basados en ejemplos del libro Cómo programar en Java de Deitel, y por lo tanto están bajo la licencia que esta editorial disponga.

18 Comentarios | deja el tuyo

18 Comentarios en “[codigo] Cargar y reproducir audio en Java”

  1. David dice:

    Oye necesito de tu ayuda, hice un taductor de ingles a español en un arreglo vidimencional, pero necesito que la palabra que arroge la reprodusca, podrias ayudarme, te lo agradeceria.

  2. Cristian dice:

    Hola David…

    En ese caso es mejor usar algún software externo que vocalice cosas… y lo ejecutas desde tu programa.

    Un saludo!

¡Déjanos tu comentario!