Как правильно отобразить время (мин: сек)? - PullRequest
0 голосов
/ 20 сентября 2019

Я кодирую приложение медиаплеера, но время (для панели поиска) отображается неправильно.Есть ли ошибка в расчете?Как я могу настроить время в коде?

private void updateSeekBar() {
    seekBar.setProgress((int)(((float)mediaPlayer.getCurrentPosition() / mediaFileLength)*100));
    if(mediaPlayer.isPlaying())
    {
        Runnable updater = new Runnable() {
            @Override
            public void run() {
                updateSeekBar();
                realtimeLength-=1000; // declare 1 second
                textView.setText(String.format("%d:%d", TimeUnit.MILLISECONDS.toMinutes(realtimeLength),
                        TimeUnit.MILLISECONDS.toSeconds(realtimeLength) -
                                TimeUnit.MILLISECONDS.toSeconds(TimeUnit.MILLISECONDS.toMinutes(realtimeLength))));

            }

        };
        handler.postDelayed(updater,1000); // 1 second
    }
}

Ответы [ 2 ]

0 голосов
/ 21 сентября 2019

Пожалуйста, передайте продолжительность в следующем методе, и он вернет вам отформатированный результат.

long secs = mediaPlayer.getDuration () / 1000;

public String makeShortTimeString(final Context context, long secs) {
    long hours, mins;
    hours = secs / 3600;
    secs %= 3600;
    mins = secs / 60;
    secs %= 60;

    String durationFormat = context.getResources().getString(
            hours == 0 ? R.string.durationformatshort : R.string.durationformatlong);
    return String.format(durationFormat, hours, mins, secs);
}

где durationformatshort =% 2 $d:% 3 $ 02d и длительность формата =% 1 $ d:% 2 $ 02d:% 3 $ 02d

0 голосов
/ 21 сентября 2019

Вы неправильно рассчитываете секунды.Вам нужно умножить минуты на 60, а затем вычесть их из общего количества секунд, чтобы получить секунды в этой минуте.

TimeUnit.MILLISECONDS.toSeconds(realtimeLength) - 60 * TimeUnit.MILLISECONDS.toMinutes(realtimeLength)

Это должно работать.Вы должны использовать Debugger, чтобы попытаться отладить, почему ваш вывод неверен.

...