1 package net.osdn.gokigen.joggingtimer;
3 import java.text.SimpleDateFormat;
4 import java.util.ArrayList;
6 import java.util.Locale;
8 import android.text.format.DateFormat;
9 import android.os.Parcel;
10 import android.os.Parcelable;
11 import android.os.SystemClock;
17 public class MyTimerCounter implements Parcelable, ITimerCounter
19 private boolean isTimerStopped = true;
20 private long startTime = 0;
21 private long stopTime = 0;
22 private List<Long> elapsedTime = null;
26 elapsedTime = new ArrayList<>();
31 * Converts time value from long to string
32 * @param millis time(milliseconds)
35 static CharSequence getTimeString(long millis)
37 int ms = (int) ((millis % 1000) / 100);
38 int sec = (int) (millis / 1000) % 60;
39 int minutes = (int) ((millis / (1000 * 60)) % 60);
40 int hours = (int) ((millis / (1000 * 60 * 60)) % 24);
44 // 1時間経過していない時は、時間表示は省略する
45 return (String.format(Locale.US,"%02d'%02d\"%d", minutes, sec, ms));
47 return (String.format(Locale.US,"%d:%02d'%02d\"%d", hours, minutes, sec, ms));
48 //return (DateFormat.format("hh:mm:ss.S", time));
52 * Is my timer running?
54 * @return true : running, false : stopped
57 public boolean isStarted()
59 return (!isTimerStopped);
71 startTime = SystemClock.elapsedRealtime();
74 elapsedTime.add(startTime);
75 isTimerStopped = false;
80 public void timeStamp()
84 elapsedTime.add(SystemClock.elapsedRealtime());
93 stopTime = SystemClock.elapsedRealtime();
94 elapsedTime.add(stopTime);
95 isTimerStopped = true;
111 public List<Long> getTimerList()
113 return (elapsedTime);
117 public int getElapsedCount()
119 return (elapsedTime.size());
123 public long getPastTime()
125 long currentTime = SystemClock.elapsedRealtime();
128 if (elapsedTime.size() == 0)
133 return (getLastElapsedTime());
135 return (currentTime - startTime);
139 public long getLastElapsedTime()
143 return ((elapsedTime.get(elapsedTime.size() - 1)) - startTime);
153 public long getCurrentElapsedTime()
155 long currentTime = SystemClock.elapsedRealtime();
158 return (currentTime - (elapsedTime.get(elapsedTime.size() - 1)));
164 return (currentTime - startTime);
168 public int describeContents()
174 public void writeToParcel(Parcel dest, int flags)
176 dest.writeInt(isTimerStopped ? 1 : 0);
177 dest.writeLong(startTime);
178 dest.writeLong(stopTime);
179 dest.writeList(elapsedTime);
182 public static final Parcelable.Creator<MyTimerCounter> CREATOR = new Parcelable.Creator<MyTimerCounter>()
184 public MyTimerCounter createFromParcel(Parcel in)
186 return (new MyTimerCounter(in));
189 public MyTimerCounter[] newArray(int size)
191 return (new MyTimerCounter[size]);
195 private MyTimerCounter(Parcel in)
199 isTimerStopped = (in.readInt() == 1);
200 startTime = in.readLong();
201 stopTime = in.readLong();
202 in.readList(elapsedTime, Long.class.getClassLoader());