В моем сервисе есть следующий код.
countDownTimer = new CountDownTimer(60000 * 3, 1000) {
@Override
public void onTick(long l) {
intentDSU.putExtra("remaind", TimeUnit.MILLISECONDS.toSeconds(l));
sendBroadcast(intentDSU);
}
@Override
public void onFinish() {
postHandler();
intentDSU.putExtra("remaind", 0);
sendBroadcast(intentDSU);
countDownTimer.start();
}
};
countDownTimer.start();
Это нормально работает, но когда я пытаюсь преобразовать секунды в минуты и оставшиеся секунды на моей активности
private void updateGUI(Intent intent){
if (intent.getExtras() != null){
long remaind = intent.getLongExtra("remaind", 0);
if (remaind == 0){
onRefresh();
}
long minutes = TimeUnit.SECONDS.toMinutes(remaind) - (TimeUnit.SECONDS.toHours(remaind)* 60);
long seconds = TimeUnit.SECONDS.toSeconds(remaind) - (TimeUnit.SECONDS.toMinutes(remaind) *60);
MenuItem menuItem = menu.findItem(R.id.action_timer);
if (menuItem != null){
if (minutes > 0){
menuItem.setTitle(String.format("%o min.", minutes));
}
else {
menuItem.setTitle(String.format("%o sec.", seconds));
}
}
}
}
Стал замечать необычные результаты, секунд начнутся 73 вместо 60. Понятия не имею, что не так?
попробуй это
long seconds = TimeUnit.MILLISECONDS.toSeconds(millis);
long sec=TimeUnit.MILLISECONDS.toSeconds(passmillitimer);
ваш код правильный, я думаю, у вас проблема в String.format ("% o min.", минут), а здесь String.format ("% o sec.", секунды).
Попробуйте использовать это.
MenuItem menuItem = menu.findItem(R.id.action_timer);
if (menuItem != null){
if (minutes > 0){
menuItem.setTitle(String.format("%s min.", Long.toString(minutes)));
}
else {
menuItem.setTitle(String.format("%s sec.", Long.toString(seconds)));
}
}