Páginas

NIMADRES

Reproductor de Audio en Java (Gráfico)

Un reproductor de audio digital es un dispositivo que no almacena , organiza y reproduce archivos de audio digital. Comúnmente se le denomina reproductor de MP3, reproductor MP3, o simplemente MP3 (debido a la ubicuidad del formato *.mp3), pero los reproductores de audio digital reproducen a menudo otros formatos de archivo como algunos otro formatos propietarios aparte de MP3, por ejemplo Windows Media Audio (WMA) y Advanced Audio Coding (AAC) así como formatos totalmente libres de patentes o son abiertos, como Ogg Vorbis, FLAC, y Speex (todo parte del proyecto abierto de multimedia Ogg). Algunos reproductores soportan tecnología DRM restrictiva que son parte de algunos formatos propietarios, como WMA DRM, que a menudo forman parte de ciertos sitios de descargas de pago.

En este caso El reproductor que hice solamente abre archivos con extencion "WAV" o "MID" entre otros, para poder hacer un reproductor de audio "MP3", "OGG", "WMA" se necesitan decargar API's de la libreria de Java, es por eso que solo hice este, el mas sencillo que solo reproduce los archivos y es de la libreria Estandard de Java, mismo que se puede compilar desde consola y no necesita nada mas.










Aunque esta simple, se puede empezar con este para después mejorarlo y hacer uno con una mayor estructura.
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JOptionPane;

public final class Reproductor extends JFrame implements ActionListener{
    private JButton botonPlay = new JButton();
    private JButton botonStop = new JButton();
    private JButton botonBuscar = new JButton("buscar");
    private JPanel panel = new JPanel();
    private JTextArea area = new JTextArea();
    private Sonido musica = new Sonido();
    private String texto, cadena;
    private JLabel label = new JLabel("Reproductor de Audio Java");
    
    public Reproductor(){
        initComponents();
        setTitle("NIMADRES");
        setBounds(150, 150, 550, 170);
        setResizable(false);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }
    public void initComponents(){
        label.setBounds(60, 0, 300, 50);
        label.setFont(new Font("chiller",1,30));
        label.setForeground(Color.red);
        panel.setLayout(null);
        botonPlay.setBounds(50, 50, 60, 60);
        botonStop.setBounds(130, 50, 60, 60);
        botonPlay.setIcon(new ImageIcon(getClass().getResource("play.png")));
        botonPlay.setBackground(Color.black);
        botonStop.setIcon(new ImageIcon(getClass().getResource("stop.png")));
        botonStop.setBackground(Color.black);
        botonBuscar.setBounds(200, 50, 90, 60);
        botonBuscar.setBackground(Color.black);
        botonBuscar.setForeground(Color.red);
        botonBuscar.setFont(new Font("chiller",1,25));
        panel.setBackground(Color.black);
        area.setBounds(380, 20, 200, 100);
        area.setEditable(false);
        area.setBackground(Color.black);
        area.setForeground(Color.red);
        area.setFont(new Font("chiller",1,20));
        panel.add(label);
        panel.add(botonPlay);
        panel.add(botonStop);
        panel.add(botonBuscar);
        panel.add(area);
        add(panel);
        botonPlay.addActionListener(this);
        botonStop.addActionListener(this);
        botonBuscar.addActionListener(this);
    }
    public void actionPerformed(ActionEvent e) {
        if(e.getSource().equals(botonPlay)){
            area.setText("Reproduciendo:\n"+ texto);
            musica.playSound(cadena);
        }
        if(e.getSource().equals(botonStop)){
            area.setText("Stop");
            musica.Stop();
        }
        if(e.getSource().equals(botonBuscar)){
            JFileChooser fileChooser = new JFileChooser();
            int returnValue = fileChooser.showOpenDialog(null);
            if (returnValue == JFileChooser.APPROVE_OPTION) {
                File selectedFile = fileChooser.getSelectedFile();
                texto = selectedFile.getName();
                try {
                    cadena = selectedFile.getAbsolutePath();
                } catch (Exception ex) {
                    Logger.getLogger(Reproductor.class.getName()).
                            log(Level.SEVERE, null, ex);
                }
                System.out.println(selectedFile.getName());
                area.setText("Reproduciendo: \n" + texto);
                System.out.println(cadena);
            }
        }
    }
    class Sonido{
        Clip clip;
        AudioInputStream inputStream;
        public Sonido(){
        }
        public synchronized void playSound(final String url){
            new Thread(new Runnable() { 
                public void run() {
                    try {
                        clip = AudioSystem.getClip();
                        inputStream = AudioSystem.
                                getAudioInputStream(new File(url));
                        clip.open (inputStream);
                        clip.start();
                    }
                    catch (Exception e) {
                        if(e.getMessage() != null){
                            JOptionPane.showMessageDialog(null
                                ,"Archivo no Compatible"
                                ,"Fatal Error"
                            ,JOptionPane.ERROR_MESSAGE);
                            System.err.println(e.getMessage());
                        }
                        else{
                            JOptionPane.showMessageDialog(null
                                ,"No hay Archivo seleccionado"
                                ,"Fatal Error"
                            ,JOptionPane.ERROR_MESSAGE);
                            System.err.println(e.getMessage());
                        }
                    }
                }
            }).start();
        }
        public void Stop(){
            try {
                clip.stop();
                clip.close();
            } catch (Exception e){
            }
        }
    }
}
Ahora solo falta el archivo "Main.java" para finalizar.
import javax.swing.JFrame;
public class Main {

    public static void main(String[] args) {
        JFrame.setDefaultLookAndFeelDecorated(true);
        Reproductor r = new Reproductor();
    }
}
Estas son las imágenes que utilice para hacer los botones.



1 comentario: