Quem disse que java nao toca mp3 !?

6 respostas
E

Frame Principal

package pkg.teste;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.MalformedURLException;
import javax.media.CannotRealizeException;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;


public class TocarAudio extends JFrame {

	private JButton tocar , parar , selecionar;
    private Container c = getContentPane();
    private JPanel painel ;
    private Audio audio = new Audio();
	Player player = null;
    
    public TocarAudio() {
	       
	   this.setTitle(" Storm ");
	   this.setLocation(260,100);
	   this.setSize(600,450);
	   c.setLayout(null);
	   c.setBackground(Color.black);
	  
	   //Manager.setHint( Manager.LIGHTWEIGHT_RENDERER , true );
	   
	   
	   
	   tocar = new JButton("play");
	   tocar.addActionListener(new AcaoBotao());
	   tocar.setBounds(185,370,85,25);
	   
	   parar = new JButton("stop");
	   parar.addActionListener(new AcaoBotao());
	   parar.setBounds(285,370,85,25);
	   
	   selecionar = new JButton("find");
	   selecionar.setBounds(20,370,150,25);
	   selecionar.addActionListener(new AcaoBotao());
	
	   painel = new JPanel();
	   painel.setBorder(BorderFactory.createLineBorder(Color.blue,2));
	   painel.setBounds(16,20,550,330);
	   //painel.setVisible(true);
		
	   
	   c.add(tocar);
	   c.add(parar);
	   c.add(selecionar);
       
	   //c.add(painel);
	   
	   this.setVisible(true);
	   
	   
	}
	
	public void adicionarComponente(JPanel p){
		
		c.add(p);
		
	}
	

private class AcaoBotao implements ActionListener  {
   
	   JFileChooser arqMusica = null ;
	 
	  	   
		public void actionPerformed(ActionEvent e)  {
			 

			
			if(e.getSource() == tocar){
				
				    try {
				        
				    	if(audio.getAudioMP3() != null ){
				    		player = Manager.createRealizedPlayer(audio.getAudioMP3());
				    		//Component video = player.getVisualComponent();
				    		Component controle = player.getControlPanelComponent() ;
				    		painel.add(controle,BorderLayout.SOUTH);
				    		adicionarComponente(painel);
				    		repaint();
				    		player.start();
				    	}
				    	
				    	
				    	
					} catch (NoPlayerException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					} catch (IOException e2) {
						// TODO Auto-generated catch block
						e2.printStackTrace();
					} catch (CannotRealizeException e3) {
						// TODO Auto-generated catch block
						
						e3.printStackTrace();
					
					}
				    
			//		JOptionPane.showMessageDialog(null," Você clicou no botao " + ((JButton) e.getSource()).getActionCommand(),"Janela de Boato",JOptionPane.INFORMATION_MESSAGE);
				
			}
			
			if(e.getSource() == parar){
				
				JOptionPane.showMessageDialog(null," Você clicou no botao " + ((JButton) e.getSource()).getActionCommand(),"Janela de Boato",JOptionPane.INFORMATION_MESSAGE);
				
			}
			
			if(e.getSource() == selecionar){
				
	                 arqMusica = new JFileChooser();
	                 
	                 int resultado = arqMusica.showOpenDialog(null);
	                 
	                 if(resultado == JFileChooser.APPROVE_OPTION){
	                
	                	 try {
	                         			
	                		 audio.setAudioMP3(arqMusica.getSelectedFile().toURL());
     
	                		 //adicionarComponente(painel);
						     
	                		 //repaint();
						     
	                	 } catch (MalformedURLException e1) {
				
	                		 JOptionPane.showMessageDialog( null , " Erro ao criar URL " , " Erro " , JOptionPane.ERROR_MESSAGE );
	                	 }
	                 
	                 }
	            }
			
		
		}	
	
}//fim da classe
	
	
	public static void main(String arg[]){
	
		TocarAudio t = new TocarAudio();
		t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	
}
Classe Audio
package pkg.teste;

import java.net.URL;
import javax.swing.JPanel;


public class Audio extends JPanel {

	private URL audioMP3 = null ;	
	

	public URL getAudioMP3() {
	
		return audioMP3;
	
	}

	
	
	
	public void setAudioMP3(URL audioMP3) {
	
		this.audioMP3 = audioMP3;
	
	}
}

6 Respostas

D

Coleguinha…qual jdk vc usou???

beijo.

E

É jdk1.5.0_06

Mas vc tem que puxar a api do site da sun(player) …blza ?

Abração .

D

ah…
blz!
valeu!

beijo

D

olá colega…eu testei sua aplicação aqui…mas nao consegui nada…(a não ser que tenha faltado alguma coisa)…
bom, baixei o JMF 2.1.1, extrai, instalei a pasta dentro da pasta do meu JDK, adicionei ao classpath da aplicação…mas…qdo tento fazer ele executar uma MP3, dá o seguinte erro:

Unable to handle format: mpeglayer3, 44100.0 Hz, 16-bit, Stereo, LittleEndian, Signed, 16000.0 frame rate, FrameSize=32768 bits
Failed to realize: com.sun.media.PlaybackEngine@6e3d60
Error: Unable to realize com.sun.media.PlaybackEngine@6e3d60

Segundo o forum da Sun…

Hello,
Check here if your audio file format is supported. I don't think the mp3 audio files r supported by JMF.
http://java.sun.com/products/java-media/jmf/2.1.1/formats.html

Try and see if there r other third party tools that support mp3 file formats.

pode me dizer se falta mais alguma lib ou plugin?
valeu,.

F

Diana, por acaso vc conseguiu resolver seu problema ??? Eu estou com o mesmo problema e gostaria de uma dica pra resolver ele !!!

Vlwss !!!

I

Deve-se instalar o JMF (Java Media Framework) com o plug-in MP3 para tocar.

Criado 31 de julho de 2006
Ultima resposta 18 de dez. de 2006
Respostas 6
Participantes 4