Хронометр в виджете домашнего экрана - неверный формат обратного отсчета

У меня есть виджет на главном экране, который имеет один хронометр в качестве элемента RemoteViews. Мне нужен этот хронометр для отсчета времени в будущем. Хронометр работает, но я заметил странное время форматирования на некоторых устройствах. Например, если осталось 10 минут и 5 секунд, у меня есть следующие выводы:

Huawei Mate 10 Lite (Android Oreo - API 26)
-10:05

Huawei G7, с леденцом на палочке (API 22)
00:-605 - общее оставшееся время здесь отображается в виде количества секунд.

Мой вопрос: есть ли способ, которым я могу предоставить свое форматирование, чтобы результат был одинаковым на всех устройствах.

ПРИМЕЧАНИЕ: мне это нужно для хронометра в виджете рабочего стола, а не внутри действия или фрагмента.

Изменить: Виджет обновляется из AlarmManager. На BroadcastReceiver у меня есть следующий код для обновления виджета.

protected void updateCountdownTimer(RemoteViews remoteViews, int index) {
        Calendar calendar = Calendar.getInstance();
        List<Time> timeList;
        if (index == -1) {
            calendar.add(Calendar.DATE, 1);
            TimesProvider.getProvider().setCurrentDate(calendar);
            index = 0;
        }
        timeList = TimesProvider.getProvider().getTimes();
        Time time = timeList.get(index);

        calendar.set(Calendar.HOUR_OF_DAY, time.getHour());
        calendar.set(Calendar.MINUTE, time.getMinute());
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);

        remoteViews.setChronometer(R.id.chronometer, SystemClock.elapsedRealtime() + calendar.getTimeInMillis() - System.currentTimeMillis(), null, true);
        remoteViews.setTextColor(R.id.chronometer, Color.CYAN);
    }

0 ответов

Другие вопросы по тегам