diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 4c3df4f..4225645 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -89,12 +89,12 @@
diff --git a/app/src/main/java/com/philliphsu/clock2/MainActivity.java b/app/src/main/java/com/philliphsu/clock2/MainActivity.java
index 6168055..e028c8e 100644
--- a/app/src/main/java/com/philliphsu/clock2/MainActivity.java
+++ b/app/src/main/java/com/philliphsu/clock2/MainActivity.java
@@ -22,7 +22,7 @@ import android.widget.TextView;
import com.philliphsu.clock2.alarms.ui.AlarmsFragment;
import com.philliphsu.clock2.list.RecyclerViewFragment;
import com.philliphsu.clock2.settings.SettingsActivity;
-import com.philliphsu.clock2.stopwatch.StopwatchFragment;
+import com.philliphsu.clock2.stopwatch.ui.StopwatchFragment;
import com.philliphsu.clock2.timers.ui.TimersFragment;
import butterknife.Bind;
diff --git a/app/src/main/java/com/philliphsu/clock2/alarms/misc/AlarmController.java b/app/src/main/java/com/philliphsu/clock2/alarms/misc/AlarmController.java
index 2b34dcc..861e8c5 100644
--- a/app/src/main/java/com/philliphsu/clock2/alarms/misc/AlarmController.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/misc/AlarmController.java
@@ -11,7 +11,7 @@ import android.view.View;
import com.philliphsu.clock2.R;
import com.philliphsu.clock2.alarms.Alarm;
import com.philliphsu.clock2.ringtone.AlarmActivity;
-import com.philliphsu.clock2.ringtone.AlarmRingtoneService;
+import com.philliphsu.clock2.ringtone.playback.AlarmRingtoneService;
import com.philliphsu.clock2.alarms.background.PendingAlarmScheduler;
import com.philliphsu.clock2.alarms.background.UpcomingAlarmReceiver;
import com.philliphsu.clock2.alarms.data.AlarmsTableManager;
diff --git a/app/src/main/java/com/philliphsu/clock2/dialogs/RingtonePickerDialog.java b/app/src/main/java/com/philliphsu/clock2/dialogs/RingtonePickerDialog.java
index ee7388e..2e2b4bf 100644
--- a/app/src/main/java/com/philliphsu/clock2/dialogs/RingtonePickerDialog.java
+++ b/app/src/main/java/com/philliphsu/clock2/dialogs/RingtonePickerDialog.java
@@ -9,7 +9,7 @@ import android.support.annotation.Nullable;
import android.support.v7.app.AlertDialog;
import com.philliphsu.clock2.R;
-import com.philliphsu.clock2.ringtone.RingtoneLoop;
+import com.philliphsu.clock2.ringtone.playback.RingtoneLoop;
/**
* Created by Phillip Hsu on 9/3/2016.
diff --git a/app/src/main/java/com/philliphsu/clock2/model/ClockAppDatabaseHelper.java b/app/src/main/java/com/philliphsu/clock2/model/ClockAppDatabaseHelper.java
index 5c40263..ebb13d5 100644
--- a/app/src/main/java/com/philliphsu/clock2/model/ClockAppDatabaseHelper.java
+++ b/app/src/main/java/com/philliphsu/clock2/model/ClockAppDatabaseHelper.java
@@ -5,7 +5,7 @@ import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import com.philliphsu.clock2.alarms.data.AlarmsTable;
-import com.philliphsu.clock2.stopwatch.LapsTable;
+import com.philliphsu.clock2.stopwatch.data.LapsTable;
import com.philliphsu.clock2.timers.data.TimersTable;
/**
diff --git a/app/src/main/java/com/philliphsu/clock2/ringtone/AlarmActivity.java b/app/src/main/java/com/philliphsu/clock2/ringtone/AlarmActivity.java
index fa7715a..96a1fa9 100644
--- a/app/src/main/java/com/philliphsu/clock2/ringtone/AlarmActivity.java
+++ b/app/src/main/java/com/philliphsu/clock2/ringtone/AlarmActivity.java
@@ -10,6 +10,8 @@ import android.view.ViewGroup;
import com.philliphsu.clock2.R;
import com.philliphsu.clock2.alarms.Alarm;
import com.philliphsu.clock2.alarms.misc.AlarmController;
+import com.philliphsu.clock2.ringtone.playback.AlarmRingtoneService;
+import com.philliphsu.clock2.ringtone.playback.RingtoneService;
import com.philliphsu.clock2.util.TimeFormatUtils;
public class AlarmActivity extends RingtoneActivity {
diff --git a/app/src/main/java/com/philliphsu/clock2/ringtone/RingtoneActivity.java b/app/src/main/java/com/philliphsu/clock2/ringtone/RingtoneActivity.java
index fb29545..162d713 100644
--- a/app/src/main/java/com/philliphsu/clock2/ringtone/RingtoneActivity.java
+++ b/app/src/main/java/com/philliphsu/clock2/ringtone/RingtoneActivity.java
@@ -16,6 +16,7 @@ import android.widget.TextView;
import com.philliphsu.clock2.BaseActivity;
import com.philliphsu.clock2.R;
+import com.philliphsu.clock2.ringtone.playback.RingtoneService;
import com.philliphsu.clock2.util.LocalBroadcastHelper;
import butterknife.Bind;
diff --git a/app/src/main/java/com/philliphsu/clock2/ringtone/TimesUpActivity.java b/app/src/main/java/com/philliphsu/clock2/ringtone/TimesUpActivity.java
index 4e5f74a..0ee0f97 100644
--- a/app/src/main/java/com/philliphsu/clock2/ringtone/TimesUpActivity.java
+++ b/app/src/main/java/com/philliphsu/clock2/ringtone/TimesUpActivity.java
@@ -8,6 +8,8 @@ import android.os.SystemClock;
import android.support.v4.app.NotificationCompat;
import android.view.ViewGroup;
+import com.philliphsu.clock2.ringtone.playback.RingtoneService;
+import com.philliphsu.clock2.ringtone.playback.TimerRingtoneService;
import com.philliphsu.clock2.timers.ui.CountdownChronometer;
import com.philliphsu.clock2.timers.TimerController;
import com.philliphsu.clock2.timers.TimerNotificationService;
diff --git a/app/src/main/java/com/philliphsu/clock2/ringtone/AlarmRingtoneService.java b/app/src/main/java/com/philliphsu/clock2/ringtone/playback/AlarmRingtoneService.java
similarity index 98%
rename from app/src/main/java/com/philliphsu/clock2/ringtone/AlarmRingtoneService.java
rename to app/src/main/java/com/philliphsu/clock2/ringtone/playback/AlarmRingtoneService.java
index b17ae48..783f2db 100644
--- a/app/src/main/java/com/philliphsu/clock2/ringtone/AlarmRingtoneService.java
+++ b/app/src/main/java/com/philliphsu/clock2/ringtone/playback/AlarmRingtoneService.java
@@ -1,4 +1,4 @@
-package com.philliphsu.clock2.ringtone;
+package com.philliphsu.clock2.ringtone.playback;
import android.app.Notification;
import android.content.Intent;
diff --git a/app/src/main/java/com/philliphsu/clock2/ringtone/RingtoneLoop.java b/app/src/main/java/com/philliphsu/clock2/ringtone/playback/RingtoneLoop.java
similarity index 97%
rename from app/src/main/java/com/philliphsu/clock2/ringtone/RingtoneLoop.java
rename to app/src/main/java/com/philliphsu/clock2/ringtone/playback/RingtoneLoop.java
index 7e87b5a..e23e8a8 100644
--- a/app/src/main/java/com/philliphsu/clock2/ringtone/RingtoneLoop.java
+++ b/app/src/main/java/com/philliphsu/clock2/ringtone/playback/RingtoneLoop.java
@@ -1,4 +1,4 @@
-package com.philliphsu.clock2.ringtone;
+package com.philliphsu.clock2.ringtone.playback;
import android.content.Context;
import android.media.AudioManager;
diff --git a/app/src/main/java/com/philliphsu/clock2/ringtone/RingtoneService.java b/app/src/main/java/com/philliphsu/clock2/ringtone/playback/RingtoneService.java
similarity index 98%
rename from app/src/main/java/com/philliphsu/clock2/ringtone/RingtoneService.java
rename to app/src/main/java/com/philliphsu/clock2/ringtone/playback/RingtoneService.java
index a13860b..74f4f17 100644
--- a/app/src/main/java/com/philliphsu/clock2/ringtone/RingtoneService.java
+++ b/app/src/main/java/com/philliphsu/clock2/ringtone/playback/RingtoneService.java
@@ -1,4 +1,4 @@
-package com.philliphsu.clock2.ringtone;
+package com.philliphsu.clock2.ringtone.playback;
import android.app.Notification;
import android.app.PendingIntent;
@@ -16,6 +16,7 @@ import android.support.annotation.NonNull;
import android.util.Log;
import com.philliphsu.clock2.R;
+import com.philliphsu.clock2.ringtone.RingtoneActivity;
import com.philliphsu.clock2.util.LocalBroadcastHelper;
import java.util.concurrent.TimeUnit;
diff --git a/app/src/main/java/com/philliphsu/clock2/ringtone/TimerRingtoneService.java b/app/src/main/java/com/philliphsu/clock2/ringtone/playback/TimerRingtoneService.java
similarity index 98%
rename from app/src/main/java/com/philliphsu/clock2/ringtone/TimerRingtoneService.java
rename to app/src/main/java/com/philliphsu/clock2/ringtone/playback/TimerRingtoneService.java
index f638535..eecd772 100644
--- a/app/src/main/java/com/philliphsu/clock2/ringtone/TimerRingtoneService.java
+++ b/app/src/main/java/com/philliphsu/clock2/ringtone/playback/TimerRingtoneService.java
@@ -1,4 +1,4 @@
-package com.philliphsu.clock2.ringtone;
+package com.philliphsu.clock2.ringtone.playback;
import android.app.Notification;
import android.content.Intent;
diff --git a/app/src/main/java/com/philliphsu/clock2/stopwatch/StopwatchNotificationService.java b/app/src/main/java/com/philliphsu/clock2/stopwatch/StopwatchNotificationService.java
index 06b306e..dca322a 100644
--- a/app/src/main/java/com/philliphsu/clock2/stopwatch/StopwatchNotificationService.java
+++ b/app/src/main/java/com/philliphsu/clock2/stopwatch/StopwatchNotificationService.java
@@ -13,6 +13,8 @@ import com.philliphsu.clock2.ChronometerNotificationService;
import com.philliphsu.clock2.MainActivity;
import com.philliphsu.clock2.R;
import com.philliphsu.clock2.ChronometerDelegate;
+import com.philliphsu.clock2.stopwatch.data.AsyncLapsTableUpdateHandler;
+import com.philliphsu.clock2.stopwatch.ui.StopwatchFragment;
public class StopwatchNotificationService extends ChronometerNotificationService {
private static final String TAG = "StopwatchNotifService";
diff --git a/app/src/main/java/com/philliphsu/clock2/stopwatch/AsyncLapsTableUpdateHandler.java b/app/src/main/java/com/philliphsu/clock2/stopwatch/data/AsyncLapsTableUpdateHandler.java
similarity index 89%
rename from app/src/main/java/com/philliphsu/clock2/stopwatch/AsyncLapsTableUpdateHandler.java
rename to app/src/main/java/com/philliphsu/clock2/stopwatch/data/AsyncLapsTableUpdateHandler.java
index d64be6f..34cfd2d 100644
--- a/app/src/main/java/com/philliphsu/clock2/stopwatch/AsyncLapsTableUpdateHandler.java
+++ b/app/src/main/java/com/philliphsu/clock2/stopwatch/data/AsyncLapsTableUpdateHandler.java
@@ -1,10 +1,12 @@
-package com.philliphsu.clock2.stopwatch;
+package com.philliphsu.clock2.stopwatch.data;
import android.content.Context;
import android.content.Intent;
import com.philliphsu.clock2.AsyncDatabaseTableUpdateHandler;
import com.philliphsu.clock2.list.ScrollHandler;
+import com.philliphsu.clock2.stopwatch.Lap;
+import com.philliphsu.clock2.stopwatch.StopwatchNotificationService;
/**
* Created by Phillip Hsu on 8/9/2016.
diff --git a/app/src/main/java/com/philliphsu/clock2/stopwatch/LapCursor.java b/app/src/main/java/com/philliphsu/clock2/stopwatch/data/LapCursor.java
similarity index 89%
rename from app/src/main/java/com/philliphsu/clock2/stopwatch/LapCursor.java
rename to app/src/main/java/com/philliphsu/clock2/stopwatch/data/LapCursor.java
index 93a83c5..bbc5975 100644
--- a/app/src/main/java/com/philliphsu/clock2/stopwatch/LapCursor.java
+++ b/app/src/main/java/com/philliphsu/clock2/stopwatch/data/LapCursor.java
@@ -1,8 +1,9 @@
-package com.philliphsu.clock2.stopwatch;
+package com.philliphsu.clock2.stopwatch.data;
import android.database.Cursor;
import com.philliphsu.clock2.model.BaseItemCursor;
+import com.philliphsu.clock2.stopwatch.Lap;
/**
* Created by Phillip Hsu on 8/8/2016.
diff --git a/app/src/main/java/com/philliphsu/clock2/stopwatch/LapsCursorLoader.java b/app/src/main/java/com/philliphsu/clock2/stopwatch/data/LapsCursorLoader.java
similarity index 77%
rename from app/src/main/java/com/philliphsu/clock2/stopwatch/LapsCursorLoader.java
rename to app/src/main/java/com/philliphsu/clock2/stopwatch/data/LapsCursorLoader.java
index 13f79a7..f3bb8c3 100644
--- a/app/src/main/java/com/philliphsu/clock2/stopwatch/LapsCursorLoader.java
+++ b/app/src/main/java/com/philliphsu/clock2/stopwatch/data/LapsCursorLoader.java
@@ -1,8 +1,11 @@
-package com.philliphsu.clock2.stopwatch;
+package com.philliphsu.clock2.stopwatch.data;
import android.content.Context;
import com.philliphsu.clock2.model.SQLiteCursorLoader;
+import com.philliphsu.clock2.stopwatch.Lap;
+import com.philliphsu.clock2.stopwatch.data.LapCursor;
+import com.philliphsu.clock2.stopwatch.data.LapsTableManager;
/**
* Created by Phillip Hsu on 8/9/2016.
diff --git a/app/src/main/java/com/philliphsu/clock2/stopwatch/LapsTable.java b/app/src/main/java/com/philliphsu/clock2/stopwatch/data/LapsTable.java
similarity index 97%
rename from app/src/main/java/com/philliphsu/clock2/stopwatch/LapsTable.java
rename to app/src/main/java/com/philliphsu/clock2/stopwatch/data/LapsTable.java
index ad3425c..1fcee31 100644
--- a/app/src/main/java/com/philliphsu/clock2/stopwatch/LapsTable.java
+++ b/app/src/main/java/com/philliphsu/clock2/stopwatch/data/LapsTable.java
@@ -1,4 +1,4 @@
-package com.philliphsu.clock2.stopwatch;
+package com.philliphsu.clock2.stopwatch.data;
import android.database.sqlite.SQLiteDatabase;
diff --git a/app/src/main/java/com/philliphsu/clock2/stopwatch/LapsTableManager.java b/app/src/main/java/com/philliphsu/clock2/stopwatch/data/LapsTableManager.java
similarity index 96%
rename from app/src/main/java/com/philliphsu/clock2/stopwatch/LapsTableManager.java
rename to app/src/main/java/com/philliphsu/clock2/stopwatch/data/LapsTableManager.java
index 6836a64..9138d9a 100644
--- a/app/src/main/java/com/philliphsu/clock2/stopwatch/LapsTableManager.java
+++ b/app/src/main/java/com/philliphsu/clock2/stopwatch/data/LapsTableManager.java
@@ -1,10 +1,11 @@
-package com.philliphsu.clock2.stopwatch;
+package com.philliphsu.clock2.stopwatch.data;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import com.philliphsu.clock2.model.DatabaseTableManager;
+import com.philliphsu.clock2.stopwatch.Lap;
/**
* Created by Phillip Hsu on 8/8/2016.
diff --git a/app/src/main/java/com/philliphsu/clock2/stopwatch/ChronometerWithMillis.java b/app/src/main/java/com/philliphsu/clock2/stopwatch/ui/ChronometerWithMillis.java
similarity index 97%
rename from app/src/main/java/com/philliphsu/clock2/stopwatch/ChronometerWithMillis.java
rename to app/src/main/java/com/philliphsu/clock2/stopwatch/ui/ChronometerWithMillis.java
index 8133c49..8f85cca 100644
--- a/app/src/main/java/com/philliphsu/clock2/stopwatch/ChronometerWithMillis.java
+++ b/app/src/main/java/com/philliphsu/clock2/stopwatch/ui/ChronometerWithMillis.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.philliphsu.clock2.stopwatch;
+package com.philliphsu.clock2.stopwatch.ui;
import android.annotation.TargetApi;
import android.content.Context;
diff --git a/app/src/main/java/com/philliphsu/clock2/stopwatch/LapViewHolder.java b/app/src/main/java/com/philliphsu/clock2/stopwatch/ui/LapViewHolder.java
similarity index 95%
rename from app/src/main/java/com/philliphsu/clock2/stopwatch/LapViewHolder.java
rename to app/src/main/java/com/philliphsu/clock2/stopwatch/ui/LapViewHolder.java
index b6542b5..4c8d256 100644
--- a/app/src/main/java/com/philliphsu/clock2/stopwatch/LapViewHolder.java
+++ b/app/src/main/java/com/philliphsu/clock2/stopwatch/ui/LapViewHolder.java
@@ -1,4 +1,4 @@
-package com.philliphsu.clock2.stopwatch;
+package com.philliphsu.clock2.stopwatch.ui;
import android.view.View;
import android.view.ViewGroup;
@@ -6,6 +6,7 @@ import android.widget.TextView;
import com.philliphsu.clock2.list.BaseViewHolder;
import com.philliphsu.clock2.R;
+import com.philliphsu.clock2.stopwatch.Lap;
import butterknife.Bind;
diff --git a/app/src/main/java/com/philliphsu/clock2/stopwatch/LapsAdapter.java b/app/src/main/java/com/philliphsu/clock2/stopwatch/ui/LapsAdapter.java
similarity index 90%
rename from app/src/main/java/com/philliphsu/clock2/stopwatch/LapsAdapter.java
rename to app/src/main/java/com/philliphsu/clock2/stopwatch/ui/LapsAdapter.java
index 1f03558..3963947 100644
--- a/app/src/main/java/com/philliphsu/clock2/stopwatch/LapsAdapter.java
+++ b/app/src/main/java/com/philliphsu/clock2/stopwatch/ui/LapsAdapter.java
@@ -1,9 +1,11 @@
-package com.philliphsu.clock2.stopwatch;
+package com.philliphsu.clock2.stopwatch.ui;
import android.view.ViewGroup;
import com.philliphsu.clock2.list.BaseCursorAdapter;
import com.philliphsu.clock2.list.OnListItemInteractionListener;
+import com.philliphsu.clock2.stopwatch.Lap;
+import com.philliphsu.clock2.stopwatch.data.LapCursor;
/**
* Created by Phillip Hsu on 8/9/2016.
diff --git a/app/src/main/java/com/philliphsu/clock2/stopwatch/StopwatchFragment.java b/app/src/main/java/com/philliphsu/clock2/stopwatch/ui/StopwatchFragment.java
similarity index 97%
rename from app/src/main/java/com/philliphsu/clock2/stopwatch/StopwatchFragment.java
rename to app/src/main/java/com/philliphsu/clock2/stopwatch/ui/StopwatchFragment.java
index 06b2c12..899b51c 100644
--- a/app/src/main/java/com/philliphsu/clock2/stopwatch/StopwatchFragment.java
+++ b/app/src/main/java/com/philliphsu/clock2/stopwatch/ui/StopwatchFragment.java
@@ -1,4 +1,4 @@
-package com.philliphsu.clock2.stopwatch;
+package com.philliphsu.clock2.stopwatch.ui;
import android.animation.Animator;
import android.animation.ObjectAnimator;
@@ -21,6 +21,10 @@ import android.widget.SeekBar;
import com.philliphsu.clock2.R;
import com.philliphsu.clock2.list.RecyclerViewFragment;
+import com.philliphsu.clock2.stopwatch.Lap;
+import com.philliphsu.clock2.stopwatch.StopwatchNotificationService;
+import com.philliphsu.clock2.stopwatch.data.LapCursor;
+import com.philliphsu.clock2.stopwatch.data.LapsCursorLoader;
import com.philliphsu.clock2.util.ProgressBarUtils;
import java.lang.ref.WeakReference;
@@ -39,9 +43,9 @@ public class StopwatchFragment extends RecyclerViewFragment<
private static final String TAG = "StopwatchFragment";
// Exposed for StopwatchNotificationService
- static final String KEY_START_TIME = "start_time";
- static final String KEY_PAUSE_TIME = "pause_time";
- static final String KEY_CHRONOMETER_RUNNING = "chronometer_running";
+ public static final String KEY_START_TIME = "start_time";
+ public static final String KEY_PAUSE_TIME = "pause_time";
+ public static final String KEY_CHRONOMETER_RUNNING = "chronometer_running";
private ObjectAnimator mProgressAnimator;
private SharedPreferences mPrefs;
diff --git a/app/src/main/java/com/philliphsu/clock2/timers/ui/TimerViewHolder.java b/app/src/main/java/com/philliphsu/clock2/timers/ui/TimerViewHolder.java
index e194e7a..c05de5f 100644
--- a/app/src/main/java/com/philliphsu/clock2/timers/ui/TimerViewHolder.java
+++ b/app/src/main/java/com/philliphsu/clock2/timers/ui/TimerViewHolder.java
@@ -18,7 +18,7 @@ import android.widget.TextView;
import com.philliphsu.clock2.dialogs.AddLabelDialog;
import com.philliphsu.clock2.dialogs.AddLabelDialogController;
import com.philliphsu.clock2.timers.TimerController;
-import com.philliphsu.clock2.ringtone.TimerRingtoneService;
+import com.philliphsu.clock2.ringtone.playback.TimerRingtoneService;
import com.philliphsu.clock2.timers.data.AsyncTimersTableUpdateHandler;
import com.philliphsu.clock2.list.BaseViewHolder;
import com.philliphsu.clock2.list.OnListItemInteractionListener;
diff --git a/app/src/main/res/layout-land/fragment_stopwatch.xml b/app/src/main/res/layout-land/fragment_stopwatch.xml
index 99faed9..a628b79 100644
--- a/app/src/main/res/layout-land/fragment_stopwatch.xml
+++ b/app/src/main/res/layout-land/fragment_stopwatch.xml
@@ -15,7 +15,7 @@
android:orientation="horizontal"
android:layout_above="@+id/mini_fab_layout">
-
-
-