Olá amigos!
Alguem poderia me dar uma ajudinha com isso aqui?
O problema está em doStart () e doStop ()
Estou tentando, após a alteração de
player.setStopTime (new Time(4.0)); // em doStart
e
player.setMidiaTime (new Time(1.0)); // em doStop
fazer com que o audio passe a ser executado nestes novos pontos.
Só que isso não está ocorrendo e eu não consigo ver onde estou errando.
O som antes de um novo start toca normalmente, mas não sai nestes novos pontos.
Agradeço antecipadamente qualquer ajuda.
Fonte:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.net.*;
import javax.media.*;
import javax.media.protocol.DataSource;
import javax.media.format.FormatChangeEvent;
class GUIPlayerB extends JFrame implements ActionListener, ControllerListener
{
// conteudo principal
Component visualComponent = null;
Component controlComponent = null;
Player player = null;
// abre o arquivo de midia, adiciona os ControllerListener
private void doOpen ()
{
doReset ();
try
{
player = Manager.createPlayer ( new URL ( "file:test.mpg") );
}
catch (Exception ex)
{
System.err.println ("Handler " + ex);
}
player.addControllerListener (this);
player.realize ();
}
// realizeCompleteEvent. Adiciona os controlers
void realizeCompleteEvent ()
{
controlComponent = player.getControlPanelComponent ();
if (controlComponent != null)
{
getContentPane ().add (BorderLayout.SOUTH, controlComponent);
}
pack ();
player.prefetch ();
}
// Remove os Components e desaloca midia.
private void doReset ()
{
if (controlComponent != null)
{
getContentPane ().remove (controlComponent);
}
if (player != null)
{
player.stop ();
player.deallocate ();
}
pack ();
}
private void doStart ()
{
if (player != null)
{
player.setStopTime (new Time(4.0));
player.start ();
}
}
private void doStop ()
{
if (player != null)
{
player.stop ();
player.setMediaTime (new Time(1.0));
}
}
// sai do programa
private void exiting ()
{
player.stop ();
player.deallocate ();
System.exit (0);
}
// Controle de eventos da mídia
public void controllerUpdate (ControllerEvent e)
{
//System.out.println (e);
//System.out.println ( ""+ mediaPlayer1.getMediaNanoseconds() );
if (e instanceof ControllerEvent)
{
System.out.println ( "ControllerEvent:" ) ;
if( e instanceof StopTimeChangeEvent )
{
System.out.println ( "-StopTimeChangeEvent" ) ;
}
if( e instanceof RateChangeEvent )
{
System.out.println ( "-RateChangeEvent" ) ;
}
if( e instanceof MediaTimeSetEvent )
{
System.out.println ( "-MediaTimeSetEvent" ) ;
}
if( e instanceof DurationUpdateEvent )
{
System.out.println ( "-DurationUpdateEvent" ) ;
}
if( e instanceof ControllerClosedEvent )
{
System.out.println ( "-ControllerClosedEvent" ) ;
}
if( e instanceof AudioDeviceUnavailableEvent )
{
System.out.println ( "-AudioDeviceUnavailableEvent" ) ;
}
if( e instanceof FormatChangeEvent )
{
System.out.println ( "-FormatChangeEvent" ) ;
if( e instanceof SizeChangeEvent )
{
System.out.println ( "--SizeChangeEvent" ) ;
}
}
if( e instanceof CachingControlEvent )
{
System.out.println ( "-CachingControlEvent" ) ;
if( e instanceof DataLostErrorEvent )
{
System.out.println ( "--DataLostErrorEvent" ) ;
}
if( e instanceof ControllerErrorEvent )
{
System.out.println ( "--ControllerErrorEvent" ) ;
if( e instanceof ConnectionErrorEvent )
{
System.out.println ( "---ConnectionErrorEvent" ) ;
}
if( e instanceof InternalErrorEvent )
{
System.out.println ( "---InternalErrorEvent" ) ;
}
if( e instanceof ResourceUnavailableEvent )
{
System.out.println ( "---ResourceUnavailableEvent" ) ;
}
}
}
// indica que o Controller mudou de estado
if( e instanceof TransitionEvent )
{
System.out.println ("-TransitionEvent:");
if( e instanceof ConfigureCompleteEvent )
{
System.out.println ("--ConfigureCompleteEvent");
}
if (e instanceof PrefetchCompleteEvent)
{
System.out.println ("--PrefetchCompleteEvent");
}
if (e instanceof RealizeCompleteEvent)
{
//*******************************************
realizeCompleteEvent ();
System.out.println ("--RealizeCompleteEvent");
}
if (e instanceof StartEvent)
{
System.out.println ("--StartEvent");
}
if (e instanceof StopEvent )
{
System.out.println ("--StopEvent");
if (e instanceof DataStarvedEvent)
{
System.out.println ("---DataStarvedEvent");
}
if (e instanceof DeallocateEvent)
{
System.out.println ("---DeallocateEvent");
}
if (e instanceof EndOfMediaEvent)
{
//**************************************
doStop () ;
System.out.println ("---EndOfMediaEvent");
}
if (e instanceof RestartingEvent)
{
System.out.println ("---RestartingEvent");
}
if (e instanceof StopAtTimeEvent)
{
System.out.println ("---StopAtTimeEvent");
}
if (e instanceof StopByRequestEvent)
{
System.out.println ("---StopByRequestEvent");
}
}
}
}
System.out.println ( "----------------" ) ;
}
//**********************************************
// todos abaixo sao sem importancia no momento
//**********************************************
private void makeMenuBar ()
{
JMenuBar mb = new JMenuBar ();
JMenuItem openItem = new JMenuItem ("Open");
openItem.addActionListener (this);
mb.add (openItem);
JMenuItem resetItem = new JMenuItem ("Reset");
resetItem.addActionListener (this);
mb.add (resetItem);
JMenuItem exitItem = new JMenuItem ("Exit");
exitItem.addActionListener (this);
mb.add (exitItem);
setJMenuBar (mb);
}
// eventos dos menus
public void actionPerformed (ActionEvent e)
{
String cmd = e.getActionCommand ();
if (cmd.equals ("Open"))
{
doOpen ();
}
else if (cmd.equals ("Reset"))
{
doReset ();
}
else if (cmd.equals ("Exit"))
{
exiting ();
}
}
GUIPlayerB ()
{
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
makeMenuBar ();
doReset ();
pack ();
}
public static void main (String[] args)
{
GUIPlayerB gp = new GUIPlayerB ();
gp.setVisible (true);
}
}