如何在TextView中显示歌曲的当前时间?

时间:2014-01-30 04:25:25

标签: android media-player

如何使用forme“hh:mm:ss”在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 个答案:

答案 0 :(得分:8)

试试这个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();
}

希望这有帮助