En esta quinta parte del tutorial "reproductor de videos en java", se implementara un simple "ProgressBar" o Barra de Progreso, esta barra se usa para mostrar el progreso en la reproduccion de un video, su implementacion es bastante sencilla y para ello se añadiran nuevos metodos en la clase "paneldevideo.java", los metodos son startAnimation(), encargada de comenzar la animacion del progressbar y mostrarla en la interfaz, stopAnimation(), como su nombre lo dice, detiene la animacion.
Tambien se añadiran nuevos variables, a continuacion se detalla su uso:
// Clase abstracta, nos permitira implementar la animacion, gracias a su metodo run()
private TimerTask task;
//variable de tipo entera encargada de contener el porcentaje de avance de la reproduccion del video
private TimerTask task;
//variable de tipo entera encargada de contener el porcentaje de avance de la reproduccion del video
private int frame = 0;
//Un temporizador
private Timer tiempo ;
private Timer tiempo ;
// variable de tipo int que nos permite especificar la velocidad de la animacion, un valor de 1000 = 1 segundo
private int speed = 100;
private int speed = 100;
El primer metodo a implementar es el metodo startAnimation(), a este metodo se le pasa como parametro un objeto JProgressBar, luego se crea una nueva instancia del Timer y se implementa la animacion con el TimerTask.
//comienza la animacion y actualiza el JProgressBar
public void startAnimation(final JProgressBar b){
//creamos una instancia para el Timer
tiempo = new Timer();
task = new TimerTask(){
public void run(){
//calculamos el tiempo de la animacion por 100%
frame = (int) Math.round((mediaPlayer.getMediaTime().getSeconds() * 100)/mediaPlayer.getDuration().getSeconds());
//cuando ambos sean iguales quiere decir que el video a alcanzado el final de la reproduccion
if(mediaPlayer.getMediaTime().getSeconds() == mediaPlayer.getDuration().getSeconds()){
frame=100; // 100%
STOP();//SE DETIENE Y DESTRUYE EL MEDIA PLAYER
stopAnimation(b);//se detiene la animacion
}
else // sino
{
// se actualiza el nuevo valor del JProgressBar
b.setValue(frame);
//Obtiene la longitud en segundos del archivo de video
System.out.println("Tiempo total del video: " + mediaPlayer.getDuration().getSeconds() + " segundos");
//Obtiene el tiempo en segundos del video en reproduccion
System.out.println("Rate: " + mediaPlayer.getMediaTime().getSeconds() + "segundos");
//Tiempo transcurrido
System.out.println("Tiempo de reproduccion: " + frame + "% de 100%");
}
}
};
// se inicia la animacion
tiempo.schedule(task,0, speed);
}
Para obtener el tiempo total en segundos del video en cuestion se utiliza [PLAYER].getDuration().getSeconds(), este metodo nos devuelve un valor double.
Para obtener el tiempo transcurrido desde que se inicio la reproduccion del video se utiliza el metodo [PLAYER].getMediaTime().getSeconds(), este tambien devuelve un valor double.
Estos dos metodos son suficientes para construir la animacion del progressbar.
El metodo para detener la animacion es:
//detiene la animacion
public void stopAnimation(final JProgressBar b){
tiempo.cancel();
task.cancel();
b.setValue(0);
}
Este metodo detiene el Timer, TimerTask y coloca el valor del JProgressBar en "cero".
El videotutorial
Nota: Para una mejor comprension de este videotutoial se recomienda pasar por los anteriores tutoriales, ya que muchas cosas se pasan por alto, para asi no estar repitiendo lo mismo a cada rato. gracias