Mostrando entradas con la etiqueta JSE. Mostrar todas las entradas
Mostrando entradas con la etiqueta JSE. Mostrar todas las entradas

domingo, 12 de mayo de 2013

Sonido en Java

See in English



Para colocar sonido a nuestra aplicación de escritorio en java, tenemos a nuestra disposición varias alternativas, sin embargo yo he hecho una clase sencilla para esa labor, la cual me ha servido para muchos proyectos.

Dicha clase es la siguiente:


  public class hiloSonido extends Thread{
        
           
            private Clip sonido;
            private boolean seguir;
            
        

         public hiloSonido(String rutaArchivo){
           
            seguir=true;
            try {
                sonido = AudioSystem.getClip();
                sonido.open(AudioSystem.getAudioInputStream(new File(rutaArchivo)));
                
            } catch (UnsupportedAudioFileException ex) {
              
                Logger.getLogger(ReproduceSonido.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
               
                Logger.getLogger(ReproduceSonido.class.getName()).log(Level.SEVERE, null, ex);
            } catch (LineUnavailableException ex) {
               
                Logger.getLogger(ReproduceSonido.class.getName()).log(Level.SEVERE, null, ex);
            }
         }
         
        @Override
         public void run(){
              
            sonido.start();
              
            // Espera mientras se esté reproduciendo.
            do{
                try {
                Thread.sleep(500);
                } catch (InterruptedException ex) {
                Logger.getLogger(ReproduceSonido.class.getName()).log(Level.SEVERE, null, ex);
                }
                
            }while (seguir && sonido.isActive());
            
            if(sonido.isActive()){
                sonido.stop();
            }
            
            // Se cierra el clip.
            sonido.close();
          
         
         }
        
        public void parar(){
            seguir=false;
        }
         
     }  



Para utilizar esta clase solo debemos hacer algo similar o igual a lo siguiente:


//...


// Ejemplo de ruta en Windows: C:\ruta\archivo_de_audio.wav
// Ejemplo de ruta en Linux: /home/usuario/archivo_de_audio.wav

hiloSonido obj = new hiloSonido("/home/usuario/archivo_de_audio.wav");
obj.start();

//...