diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png
new file mode 100644
index 0000000..94ce025
Binary files /dev/null and b/app/src/main/ic_launcher-playstore.png differ
diff --git a/app/src/main/java/com/example/smartalarm/ui/alarm/AlarmRingActivity.kt b/app/src/main/java/com/example/smartalarm/ui/alarm/AlarmRingActivity.kt
index 2223899..7210314 100644
--- a/app/src/main/java/com/example/smartalarm/ui/alarm/AlarmRingActivity.kt
+++ b/app/src/main/java/com/example/smartalarm/ui/alarm/AlarmRingActivity.kt
@@ -159,18 +159,50 @@ class AlarmRingActivity : AppCompatActivity() {
private fun snoozeAlarm() {
snoozeCount++
- // Schedule snooze (typically 5 minutes)
- val snoozeIntent = android.content.Intent(this, AlarmService::class.java).apply {
- putExtras(intent)
+ // Save statistics with snooze count
+ val stats = Statistics(
+ id = statisticsId,
+ alarmId = alarmId,
+ triggeredAt = triggeredTime,
+ stoppedAt = null, // Not stopped yet, just snoozed
+ snoozedCount = snoozeCount,
+ stopMethod = "snooze"
+ )
+
+ lifecycleScope.launch {
+ try {
+ if (statisticsId > 0) {
+ statisticsViewModel.updateStatistics(stats)
+ } else {
+ statisticsId = statisticsViewModel.saveStatistics(stats) as? Long ?: 0L
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
}
+ // Stop current alarm service
stopService(android.content.Intent(this, AlarmService::class.java))
- // Reschedule for 5 minutes later
- lifecycleScope.launch {
- delay(5 * 60 * 1000) // 5 minutes
- startForegroundService(snoozeIntent)
- }
+ // Schedule snooze alarm for 5 minutes later
+ val handler = android.os.Handler(android.os.Looper.getMainLooper())
+ handler.postDelayed({
+ val snoozeIntent = android.content.Intent(applicationContext, AlarmService::class.java).apply {
+ putExtra("ALARM_ID", alarmId)
+ putExtra("ALARM_LABEL", intent.getStringExtra("ALARM_LABEL") ?: "Alarm")
+ putExtra("SHAKE_TO_STOP", shakeToStop)
+ putExtra("SHAKE_INTENSITY", shakeIntensity)
+ putExtra("GRADUAL_MODE", intent.getBooleanExtra("GRADUAL_MODE", false))
+ putExtra("VIBRATE", intent.getBooleanExtra("VIBRATE", true))
+ putExtra("RINGTONE_URI", intent.getStringExtra("RINGTONE_URI"))
+ }
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ startForegroundService(snoozeIntent)
+ } else {
+ startService(snoozeIntent)
+ }
+ }, 5 * 60 * 1000) // 5 minutes
finish()
}
diff --git a/app/src/main/res/drawable/bg_badge_gradual.xml b/app/src/main/res/drawable/bg_badge_gradual.xml
new file mode 100644
index 0000000..492a0ba
--- /dev/null
+++ b/app/src/main/res/drawable/bg_badge_gradual.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_badge_shake.xml b/app/src/main/res/drawable/bg_badge_shake.xml
new file mode 100644
index 0000000..2adfd37
--- /dev/null
+++ b/app/src/main/res/drawable/bg_badge_shake.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_shake_settings.xml b/app/src/main/res/drawable/bg_shake_settings.xml
new file mode 100644
index 0000000..f4d1384
--- /dev/null
+++ b/app/src/main/res/drawable/bg_shake_settings.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml
index 07d5da9..ca3826a 100644
--- a/app/src/main/res/drawable/ic_launcher_background.xml
+++ b/app/src/main/res/drawable/ic_launcher_background.xml
@@ -1,170 +1,74 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ xmlns:android="http://schemas.android.com/apk/res/android">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_alarm_ring.xml b/app/src/main/res/layout/activity_alarm_ring.xml
index e6ac047..d93c94b 100644
--- a/app/src/main/res/layout/activity_alarm_ring.xml
+++ b/app/src/main/res/layout/activity_alarm_ring.xml
@@ -62,9 +62,12 @@
android:id="@+id/btnDismiss"
android:layout_width="0dp"
android:layout_height="64dp"
- android:text="Dismiss"
+ android:text="DISMISS"
android:textSize="18sp"
+ android:textColor="@android:color/white"
app:cornerRadius="32dp"
+ app:strokeColor="@android:color/white"
+ app:strokeWidth="2dp"
app:layout_constraintBottom_toTopOf="@id/btnSnooze"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@@ -74,12 +77,16 @@
android:id="@+id/btnSnooze"
android:layout_width="0dp"
android:layout_height="64dp"
- android:text="Snooze"
+ android:text="SNOOZE"
android:textSize="18sp"
+ android:textColor="@android:color/white"
+ app:strokeColor="@android:color/white"
+ app:strokeWidth="2dp"
app:cornerRadius="32dp"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
-
\ No newline at end of file
+
+
diff --git a/app/src/main/res/layout/fragment_alarm_edit.xml b/app/src/main/res/layout/fragment_alarm_edit.xml
index 084a84e..9ded1ab 100644
--- a/app/src/main/res/layout/fragment_alarm_edit.xml
+++ b/app/src/main/res/layout/fragment_alarm_edit.xml
@@ -109,9 +109,11 @@
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp"
- android:background="@drawable/bg_badge"
+ android:background="@drawable/bg_shake_settings"
android:visibility="gone"
android:layout_marginTop="8dp"
+ android:layout_marginStart="16dp"
+ android:layout_marginEnd="16dp"
app:layout_constraintTop_toBottomOf="@id/switchShakeToStop">
+ android:textSize="14sp"
+ android:textColor="@android:color/white"
+ android:textStyle="bold"/>
+ android:layout_marginTop="8dp"
+ android:progressTint="?attr/colorPrimary"
+ android:thumbTint="?attr/colorPrimary"/>
diff --git a/app/src/main/res/layout/item_alarm.xml b/app/src/main/res/layout/item_alarm.xml
index 3928f2a..6a1c5d7 100644
--- a/app/src/main/res/layout/item_alarm.xml
+++ b/app/src/main/res/layout/item_alarm.xml
@@ -18,7 +18,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="08:00"
- android:textSize="48sp"
+ android:textSize="42sp"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
@@ -27,7 +27,8 @@
android:id="@+id/switchEnabled"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintTop_toTopOf="@id/tvTime"
+ app:layout_constraintBottom_toBottomOf="@id/tvTime"
app:layout_constraintEnd_toEndOf="parent"/>
@@ -46,56 +49,68 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Mon, Tue, Wed, Thu, Fri"
- android:textSize="14sp"
+ android:textSize="12sp"
android:textColor="?android:attr/textColorSecondary"
- android:layout_marginTop="4dp"
+ android:layout_marginTop="2dp"
+ android:singleLine="true"
+ android:ellipsize="end"
app:layout_constraintTop_toBottomOf="@id/tvLabel"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/btnDelete"/>
-
+ app:layout_constraintEnd_toStartOf="@id/btnDelete">
-
+
-
+
+
+
+
+
-
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
similarity index 56%
rename from app/src/main/res/mipmap-anydpi/ic_launcher_round.xml
rename to app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
index 6f3b755..c4a603d 100644
--- a/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -1,6 +1,5 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp
index c209e78..2447477 100644
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.webp and b/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp
new file mode 100644
index 0000000..a76c7c7
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
index b2dfe3d..7cb63a7 100644
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp
index 4f0f1d6..ce5eb6b 100644
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.webp and b/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp
new file mode 100644
index 0000000..dc4e059
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
index 62b611d..d136666 100644
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
index 948a307..c6dfa46 100644
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp
new file mode 100644
index 0000000..234b0da
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
index 1b9a695..e5302f0 100644
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
index 28d4b77..dc299ab 100644
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp
new file mode 100644
index 0000000..bb07c51
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
index 9287f50..8b67e97 100644
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
index aa7d642..b70be66 100644
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp
new file mode 100644
index 0000000..1afdba6
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
index 9126ae3..46b91e9 100644
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 3e1382b..0dfa58c 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -9,4 +9,12 @@
#FFFFFFFF
#FF2196F3
#FF1976D2
+
+
+ #FFE0B2
+ #B2DFDB
+
+
+ #424242
+ #2196F3
\ No newline at end of file