使用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));