2017-12-10 7 views
0

So habe ich eine Suchleiste, die funktioniert, wenn ich es ziehe, beginnen die Songs von dieser Position zu spielen, aber was ich will ist, wenn ich die Suchleiste ziehen, will ich um meine Textansicht zu sehen, die die aktuelle Songposition anzeigt, wenn ich sie ziehe, so kann der Benutzer eine spezifische Zeit auswählen, um damit anzufangen.Wie aktualisiere ich Textview, die aktuelle Zeitposition von einem Song zeigt

Gerade jetzt, wenn ich die Suchleiste ziehen, ändert sich die Textansicht nicht und zeigt nur die letzte Position, als ich begann, es zu ziehen.

Dies ist mein Code

private Runnable mUpdateTime = new Runnable() { 
    @Override 
    public void run() { 
     long songCurrentTime = mediaPlayer.getCurrentPosition(); 
     long songTotalTime = mediaPlayer.getDuration(); 

     tvSongCurrentTime.setText(""+utilities.msToTimer(songCurrentTime)); 
     tvSongTotalTime.setText(""+utilities.msToTimer(songTotalTime)); 

     int progress = (int)(utilities.getProgressPercentage(songCurrentTime, songTotalTime)); 
     seekBar.setProgress(progress); 

     mHandler.postDelayed(this, 100); 
    } 
}; 

public void updateProgressBar(){ 
    mHandler.postDelayed(mUpdateTime, 100); 
} 

@Override 
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 

} 

@Override 
public void onStartTrackingTouch(SeekBar seekBar) { 
     mHandler.removeCallbacks(mUpdateTime); 
} 

@Override 
public void onStopTrackingTouch(SeekBar seekBar) { 
     mHandler.removeCallbacks(mUpdateTime); 
     int songTotalTime = mediaPlayer.getDuration() ; 
     int currentPosition = utilities.progressToTimer(seekBar.getProgress(), songTotalTime); 

     mediaPlayer.seekTo(currentPosition); 
     updateProgressBar(); 
} 

Hier können Sie sehen, was im

https://imgur.com/a/zEpWI

Die erste gif ist, was ich jetzt haben, und die zweite zu erreichen versuchen, auf ist, was ich erhalten möchte

BEARBEITEN;

Ich habe noch nicht herausgefunden, wie man das macht, weiß jemand, wie es geht? Ich denke, ich muss Code in die onProgressChanged, ich habe versucht, die Songs aktuelle Zeit und die Gesamtdauer, aber wie kann ich aktualisieren die Textansicht, wenn ich die Suchleiste scrollen, wie in den Gifs ich in den Beitrag hinzugefügt. https://imgur.com/a/zEpWI

+0

Es tut mir leid, wenn seine ein bisschen vage, was ich – Vince

+0

Ein kleiner Punkt wollen, sollten Sie nicht die Dauer des Song aktualisieren müssen alle 1/10 Sekunden. Man könnte annehmen, dass 'tvSongTotalTime' konstant ist. – Sam

+0

Was passiert, wenn Sie 'updateProgressBar();' in 'onStopTrackingTouch()' mit 'tvSongCurrentTime.setText (" "+ utilities.msToTimer (mediaPlayer.getCurrentPosition())) ersetzen;'? – Sam

Antwort

0

onProgressChanged Unter der Annahme ist, wenn die seekbar Position ändert:

@Override 
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
    if(fromUser) { 
     long songCurrentTime = mediaPlayer.getCurrentPosition(); 
     long songTotalTime = mediaPlayer.getDuration(); 

     tvSongCurrentTime.setText(""+utilities.msToTimer(songCurrentTime)); 
     tvSongTotalTime.setText(""+utilities.msToTimer(songTotalTime)); 
    } 
} 
+0

Versuchte Ihren Code, aber funktioniert nicht – Vince

+0

Ill hochladen ein gif, damit ich klarstellen kann, was ich meine – Vince

+0

https://imgur.com/a/zEpWI, hier erkläre ich, was ich meinte – Vince

Verwandte Themen