Как правильно отображать позицию/продолжительность MediaPlayer?

Привет Я хочу отображать позицию игрока и продолжительность игрока в простом формате даты. то есть. 00:00:01/00:00:06. Первая часть - текущая позиция игрока, а вторая часть - продолжительность. Я использовал SimpleDateFormat, чтобы попытаться отобразить продолжительность и положение в этом формате, но он показывает мне результат как 05:30:00/05:30:06.

Вот код, который я использую:

time1 = new SimpleDateFormat("HH:mm:ss");
currentTime.setText("" + time1.format(player.getCurrentPosition());

Как правильно распечатать позицию и продолжительность? (Он показывает часы/минуты, которых не должно быть).

Прошу меня помочь, Свати Дарури.

Ответ 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));