使用Mediaplayer播放音频文件。

一切正常,但是音频的播放时间需要在textview中更新。

textview.setText(mediaplayer.getCurrentPosition()/100000.0).toString();


这给出了双精度值,但是如果结束时间超过一分钟,并且经过的时间为1分钟,则显示0:60 ...但应为1:00 ...

还有其他方法可以根据搜索栏进度显示经过的时间吗?

谢谢。

最佳答案

这有效-答案来自另一篇文章:
How do I correctly display the position/duration of a MediaPlayer?

DateFormat适用于日期,不适用于时间间隔。因此,如果位置为1秒,则数据格式将其解释为日期/时间是日历开始后的1秒。


private String getTimeString(long millis) {
    StringBuffer buf = new StringBuffer();

    int hours = millis / (1000*60*60);
    int minutes = ( millis % (1000*60*60) ) / (1000*60);
    int seconds = ( ( millis % (1000*60*60) ) % (1000*60) ) / 1000;

    buf
        .append(String.format("%02d", hours))
        .append(":")
        .append(String.format("%02d", minutes))
        .append(":")
        .append(tring.format("%02d", seconds));

    return buf.toString();
}


然后做类似的事情


totalTime.setText(getTimeString(duration));
currentTime.setText(getTimeString(position));

10-07 19:39
查看更多