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.
private TimerTask task;
//variable de tipo entera encargada de contener el porcentaje de avance de la reproduccion del video
private Timer tiempo ;
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);
}
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".