1 package com.timjohnstondev.timer;
2
3 public class CountDownTimer
4 {
5 public static final int COUNTER_DEFAULT = 30 * 60;
6 private boolean isRunning;
7 private long remainingTime;
8 private long lastUpdate;
9
10 public CountDownTimer()
11 {
12 this(COUNTER_DEFAULT);
13 }
14
15 public CountDownTimer(final int initialValue)
16 {
17 initialize(initialValue);
18 }
19
20 public final void initialize(final int initialValue)
21 {
22 remainingTime = initialValue * 1000;
23 }
24
25 public final void start()
26 {
27 lastUpdate = System.currentTimeMillis();
28 isRunning = true;
29 }
30
31 public final void stop()
32 {
33 lastUpdate = System.currentTimeMillis();
34 isRunning = false;
35 }
36
37 public final int getRemainingSeconds()
38 {
39 if (isRunning)
40 {
41 final long now = System.currentTimeMillis();
42 remainingTime -= now - lastUpdate;
43 lastUpdate = now;
44
45 if (remainingTime <= 500)
46 {
47 remainingTime = 0;
48 stop();
49 }
50 }
51 return (int) ((remainingTime + 500) / 1000);
52 }
53
54 public final boolean isRunning()
55 {
56 return isRunning;
57 }
58 }