Foro de elhacker.net

Programación => Java => Mensaje iniciado por: MC.cover en 21 Febrero 2016, 07:25 am



Título: Saber si termino de reproducirse archivo MP3 con la librería basicPlayer
Publicado por: MC.cover en 21 Febrero 2016, 07:25 am
Hola me gustaría saber si me podrían decir como saber si un archivo de audio mp3 siendo reproducido por la librería basicplayer termino de reproducirse.
Bueno miren tengo creado el método Opened y progress que son implementados a fuerza si queremos saber el estado de la canción y su proceso.

en el método opened obtengo una vez abierta la canción el largo en bytes que tiene. codigo:
Código
  1.    public void opened(Object stream, Map properties) {
  2.        if (properties.containsKey("audio.length.bytes")) {
  3.        bytesLength = Double.parseDouble(properties.get("audio.length.bytes").toString());
  4.        }
  5.    }

en progress atrapo el progreso total de la cancion tanto en % como en bytes codigo:

Código
  1.    public void progress(int bytesread, long microseconds, byte[] pcmdata, Map properties) {
  2.        float progressUpdate = (float) (bytesread * 1.0f / bytesLength * 1.0f);
  3.        int progressNow = (int) (bytesLength * progressUpdate);
  4.    }

mi problema radica en que hay algunas veces que no da el tiempo para llamar nuevamente al método progress por lo cual tengo un desfase de bytes entre el largo de bytes dado por opened y progress me gustaría saber como podría hacerle para que cuando los bytes dados por progress llege a ser casi iguales a los bytes dados por opened pueda mandar una acción por ejemplo poner mostrar el mensaje "termine de reproducirme", con casi iguales me refiero a una diferencia de por ejemplo 300 bytes