RemoteViews アイテムとして 1 つのクロノメーターを持つホーム画面ウィジェットがあります。将来のある時点からカウントダウンするには、このクロノメーターが必要です。クロノメーターは機能しますが、一部のデバイスで時刻の形式がおかしいことに気付きました。たとえば、残り 10 分 5 秒の場合、次の出力が得られます。
Huawei Mate 10 Lite (Android Oreo - API 26)
-10:05
Lollipop を搭載した 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);
}