1 package net.osdn.gokigen.joggingtimer.stopwatch;
3 import java.util.ArrayList;
6 import android.support.annotation.NonNull;
7 import android.util.Log;
13 public class MyTimerCounter implements ITimerCounter, IDatabaseReloadCallback
15 private final String TAG = toString();
16 //private static final long COUNTER_UPPERLIMIT = (80 / (1000 * 60 * 60)); // 80h
17 private boolean isTimerStopped = true;
18 private ICounterStatusNotify callback = null;
19 private long startTime = 0;
20 private long stopTime = 0;
21 private List<Long> elapsedTime = null;
22 private List<Long> referenceTime = null;
26 elapsedTime = new ArrayList<>();
31 * Is my timer running?
33 * @return true : running, false : stopped
36 public boolean isStarted()
38 return (!isTimerStopped);
42 public boolean isReset()
44 return ((isTimerStopped)&&(startTime == 0));
56 startTime = System.currentTimeMillis();
59 elapsedTime.add(startTime);
60 isTimerStopped = false;
61 Log.v(TAG, "start() startTime : " + startTime);
66 public long timeStamp()
71 timeToSet = System.currentTimeMillis();
72 elapsedTime.add(timeToSet);
82 stopTime = System.currentTimeMillis();
83 elapsedTime.add(stopTime);
84 isTimerStopped = true;
100 public List<Long> getTimerList()
102 return (elapsedTime);
106 public List<Long> getReferenceTimeList()
108 return (referenceTime);
112 public int getElapsedCount()
114 return (elapsedTime.size());
118 public long getPastTime()
120 long currentTime = System.currentTimeMillis();
123 if (elapsedTime.size() == 0)
128 return (getLastElapsedTime());
130 return (currentTime - startTime);
134 public long getLastElapsedTime()
138 return ((elapsedTime.get(elapsedTime.size() - 1)) - startTime);
148 public long getCurrentElapsedTime()
150 long currentTime = System.currentTimeMillis();
153 return (currentTime - (elapsedTime.get(elapsedTime.size() - 1)));
159 return (currentTime - startTime);
163 public long getStartTime()
169 public long getStopTime()
175 public void setCallback(ICounterStatusNotify callback)
177 this.callback = callback;
181 public void dataIsReloaded(@NonNull ArrayList<Long> timelist)
185 long startTime = timelist.get(0);
186 long pastTime = System.currentTimeMillis() - startTime;
187 Log.v(TAG, "pastTime : " + pastTime);
188 this.startTime = startTime;
190 elapsedTime = new ArrayList<>(timelist);
192 isTimerStopped = false;
193 if (callback != null)
195 callback.counterStatusChanged(true);
205 public void referenceDataIsReloaded(ArrayList<Long> timelist)
209 referenceTime = null;
210 if (timelist != null)
212 referenceTime = new ArrayList<>(timelist);
213 if (callback != null)
215 callback.counterStatusChanged(false);
217 Log.v(TAG, "reference lap time : " + referenceTime.size());
226 public interface ICounterStatusNotify
228 void counterStatusChanged(boolean forceStartTimer);