2010-10-14 12 views
5

Tengo un código de Android para transmitir un archivo de audio desde Internet y reproducir la transmisión después de 10 segundos.¿Cómo puedo usar OnSeekBarChangeListener de SeekBar para buscar un punto específico en un objeto MediaPlayer?

Estoy usando un SeekBar para ver el estado del almacenamiento en búfer y el estado de reproducción. Quiero reproducir el audio comenzando desde el medio de la transmisión en búfer. Para eso, muevo el punto de SeekBar al centro, pero no puedo reproducir el audio desde el medio; volverá y comenzará desde el principio. ¿Cómo puedo obtener la posición buscada y cómo puedo reproducir el audio desde esa posición en particular?

Aquí está mi código SeekBar. ¿Cómo puedo hacer que este código use OnSeekBarChangeListener correctamente?

seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 

    @Override 
    public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) { 
     // TODO Auto-generated method stub 
     if (arg2 && mediaPlayer.isPlaying()) { 
      //myProgress = oprogress; 
      arg1=mediaPlayer.getCurrentPosition(); 
      mediaPlayer.seekTo(arg1); 
     } 
    } 

    @Override 
    public void onStartTrackingTouch(SeekBar seekBar) { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void onStopTrackingTouch(SeekBar seekBar) { 
     // TODO Auto-generated method stub 
    } 

}); 

Respuesta

1
arg1=mediaPlayer.getCurrentPosition(); 
mediaPlayer.seekTo(arg1); 

que están obligando al jugador a buscar a la posición actual, y no a la positon reajustada por el SeekBar

Retire la línea: arg1=mediaPlayer.getCurrentPosition(); y debería funcionar. Por supuesto, después de MediaPlayer.prepare() establecer SeekBar.setMax(MediaPlayer.getDuration()), por lo que la búsqueda será precisa.

0

Creo que tienes que hacer un hilo ... Tengo un código dado a continuación que puedes intentar implementar.

public void run() { 
    try 
    { 
     while(song1.getDuration()!=song1.getCurrentPosition()) 
     { 
      skbar.setProgress(song1.getCurrentPosition()); 
      //bStop.setText(song1.getCurrentPosition()); 
     } 
     if (song1.getDuration()==song1.getCurrentPosition()) 
      Log.v("log","Sanket"); 
     t.suspend(); 
    } 
    catch (Exception e) 
    { 
     Log.e("log",e.toString()); 
    } 
} 
Cuestiones relacionadas