Ответ 1
DateFormat
работает для дат, а не для временных интервалов. Поэтому, если вы получаете позицию в 1 секунду, DateFormat интерпретирует это как означающую, что дата/время составляет 1 секунду после начала календаря (это 1 января 1970 года).
Вам нужно сделать что-то вроде
private String getTimeString(long millis) {
StringBuffer buf = new StringBuffer();
int hours = (int) (millis / (1000 * 60 * 60));
int minutes = (int) ((millis % (1000 * 60 * 60)) / (1000 * 60));
int seconds = (int) (((millis % (1000 * 60 * 60)) % (1000 * 60)) / 1000);
buf
.append(String.format("%02d", hours))
.append(":")
.append(String.format("%02d", minutes))
.append(":")
.append(String.format("%02d", seconds));
return buf.toString();
}
И затем сделайте что-то вроде
totalTime.setText(getTimeString(duration));
currentTime.setText(getTimeString(position));