2010-10-14 19 views
5

Ho un codice Android per trasmettere un file audio da Internet e riprodurre il flusso dopo 10 secondi.Come posso utilizzare OnSeekBarChangeListener di SeekBar per cercare un punto specifico in un oggetto MediaPlayer?

Sto utilizzando un SeekBar per visualizzare lo stato del buffer e lo stato di riproduzione. Voglio riprodurre l'audio a partire dal centro del flusso bufferizzato. Per questo, sposto il punto SeekBar al centro, ma non riesco a riprodurre l'audio dal centro; tornerà indietro e ricomincerà dall'inizio. Come posso ottenere la posizione cercata e come posso riprodurre l'audio da quella particolare posizione?

Ecco il mio codice SeekBar. Come posso fare in modo che questo codice usi correttamente OnSeekBarChangeListener?

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 
    } 

}); 

risposta

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

si stanno costringendo il giocatore a cercare alla posizione corrente, e non alla positon riaccordata dal SeekBar

Rimuovere la riga: arg1=mediaPlayer.getCurrentPosition(); e dovrebbe funzionare. Ovviamente dopo MediaPlayer.prepare() impostare SeekBar.setMax(MediaPlayer.getDuration()), quindi la ricerca sarà accurata.

0

Penso che devi fare una discussione ... Ho un codice sotto riportato che puoi provare a implementare.

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()); 
    } 
} 
Problemi correlati