2014-01-30 43 views
1

如何使用forme“hh:mm:ss”在TextView中显示歌曲的当前时间?如何在TextView中显示歌曲的当前时间?

Runnable run = new Runnable() { 
     @Override 
     public void run() { 
      seekUpdation(); 
      compteurCurrentTime = mediaPlayer.getCurrentPosition()/1000; 
      showTimeCurrent(); 
     } 
    }; 

    public void seekUpdation() { 
     seekbar.setProgress(mediaPlayer.getCurrentPosition()); 
     seekHandler.postDelayed(run, 1000); 
    } 
private void showTimeCurrent() { 
//display current time of song in TextView with forme "hh:mm:ss" 
} 
+1

请参阅[如何正确显示MediaPlayer的位置/持续时间?](http://stackoverflow.com/questions/5548922/how-do-i-correctly-display-the-position-duration-of-一个媒体播放器)后也许帮助 –

+0

非常感谢你..它的工作。 –

回答

6

试试这个Handler

private Runnable mUpdateTimeTask = new Runnable() { 
    @Override 
    public void run() { 
     long totalDuration = MediaAdapter.getMediaPlayer().getDuration(); 
     long currentDuration = MediaAdapter.getMediaPlayer() 
       .getCurrentPosition(); 

     // Displaying Total Duration time 
     songTotalDurationLabel.setText("" 
       + utils.milliSecondsToTimer(totalDuration)); 
     // Displaying time completed playing 
     songCurrentDurationLabel.setText("" 
       + utils.milliSecondsToTimer(currentDuration)); 

     // Updating progress bar 
     int progress = (utils.getProgressPercentage(currentDuration, 
       totalDuration)); 
     // Log.d("Progress", ""+progress); 
     songProgressBar.setProgress(progress); 

     // Running this thread after 100 milliseconds 
     mHandler.postDelayed(this, 100); 
    } 
}; 

所有方法落实到上面的处理程序:

public String milliSecondsToTimer(long milliseconds){ 
    String finalTimerString = ""; 
    String secondsString = ""; 

    // Convert total duration into time 
     int hours = (int)(milliseconds/(1000*60*60)); 
     int minutes = (int)(milliseconds % (1000*60*60))/(1000*60); 
     int seconds = (int) ((milliseconds % (1000*60*60)) % (1000*60)/1000); 
     // Add hours if there 
     if(hours > 0){ 
      finalTimerString = hours + ":"; 
     } 

     // Prepending 0 to seconds if it is one digit 
     if(seconds < 10){ 
      secondsString = "0" + seconds; 
     }else{ 
      secondsString = "" + seconds;} 

     finalTimerString = finalTimerString + minutes + ":" + secondsString; 

    // return timer string 
    return finalTimerString; 
} 

,另一个是

public int getProgressPercentage(long currentDuration, long totalDuration){ 
    Double percentage = (double) 0; 

    long currentSeconds = (int) (currentDuration/1000); 
    long totalSeconds = (int) (totalDuration/1000); 

    // calculating percentage 
    percentage =(((double)currentSeconds)/totalSeconds)*100; 

    // return percentage 
    return percentage.intValue(); 
} 

希望这有助于

+0

虽然这不是一个好的解决方案。它会延迟UI,更好地使用'ScheduledExecutorService' –

相关问题