2017-06-16 8 views
0

Ich mache einen Audio-Player, aber ich bin nicht in der Lage, die Suchleiste ohne Verzögerung zu aktualisieren. Bitte versuchen Sie diesen Code und helfen Sie mir!Nachlauf Sound beim Aktualisieren seekbar

private void updateProgress() {    //To update progress of seekbar 
    long currentPosition = mpintro.getCurrentPosition(); 

     txtstart.setText(String.format("%02d:%02d", 
       TimeUnit.MILLISECONDS.toMinutes(mpintro.getCurrentPosition()), 
       TimeUnit.MILLISECONDS.toSeconds(mpintro.getCurrentPosition()) - 
         TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) 
           mpintro.getCurrentPosition())))); 

    seekBar.setProgress((int) currentPosition); //To set seekbar to current position 
} 

public void playpause() 
{ 
    final int delay = 1000; //milliseconds 

    h.postDelayed(new Runnable(){ 
      public void run() { 
       updateProgress(); 
       h.postDelayed(this, 1000); 
      }; 
      }, delay); 
    } 

Antwort

1

Ändern der onProgressChanged Funktion als:

@Override 
public void onProgressChanged(SeekBar seekBar, int i, boolean fromUser) { 
    if(fromUser) { 
     mplayer.seekTo(i); 
    } 
} 

Dies liegt daran, wenn Ihr Update funtion die seekbar aktualisiert, es löst auch die auf onProgressChanged Funktion, was wiederum die seekbar ändert und die Audio-nacheilt. Fügen Sie also die if-Anweisung hinzu, um zu überprüfen, ob die Suchleiste nur vom Benutzer geändert wird.