diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e91f62f9..04e87a2f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -124,6 +124,10 @@ + + + + diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Context.kt index 403cdf03..438f2d44 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Context.kt @@ -27,14 +27,13 @@ import com.simplemobiletools.clock.models.Alarm import com.simplemobiletools.clock.models.MyTimeZone import com.simplemobiletools.clock.models.Timer import com.simplemobiletools.clock.models.TimerState -import com.simplemobiletools.clock.receivers.AlarmReceiver -import com.simplemobiletools.clock.receivers.HideAlarmReceiver -import com.simplemobiletools.clock.receivers.HideTimerReceiver +import com.simplemobiletools.clock.receivers.* import com.simplemobiletools.clock.services.SnoozeService import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.* import java.util.* import kotlin.math.pow +import kotlin.time.Duration.Companion.minutes val Context.config: Config get() = Config.newInstance(applicationContext) @@ -144,11 +143,23 @@ fun Context.setupAlarmClock(alarm: Alarm, triggerInSeconds: Int) { val targetMS = System.currentTimeMillis() + triggerInSeconds * 1000 try { AlarmManagerCompat.setAlarmClock(alarmManager, targetMS, getOpenAlarmTabIntent(), getAlarmIntent(alarm)) + + // Trigger a notification to dismiss the alarm 5 minutes before the alarm if the screen is on + val dismissalTriggerTime = if (targetMS - System.currentTimeMillis() < (5.minutes.inWholeMilliseconds))(System.currentTimeMillis() + 500) else targetMS - (5.minutes.inWholeMilliseconds) + AlarmManagerCompat.setExactAndAllowWhileIdle(alarmManager, 0, dismissalTriggerTime, getEarlyAlarmDismissalIntent(alarm)) } catch (e: Exception) { showErrorToast(e) } } +fun Context.getEarlyAlarmDismissalIntent(alarm: Alarm): PendingIntent { + val intent = Intent(this, EarlyAlarmDismissalReceiver::class.java).apply { + putExtra(ALARM_ID, alarm.id) + putExtra(ALARM_TIME, alarm.timeInMinutes) + } + return PendingIntent.getBroadcast(this, EARLY_ALARM_DISMISSAL_INTENT_ID, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE) +} + fun Context.getOpenAlarmTabIntent(): PendingIntent { val intent = getLaunchIntent() ?: Intent(this, SplashActivity::class.java) intent.putExtra(OPEN_TAB, TAB_ALARM) @@ -379,6 +390,14 @@ fun Context.getHideAlarmPendingIntent(alarm: Alarm): PendingIntent { return PendingIntent.getBroadcast(this, alarm.id, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE) } +fun Context.getDismissAlarmPendingIntent(alarmId: Int, notificationId: Int): PendingIntent { + val intent = Intent(this, DismissAlarmReceiver::class.java).apply { + putExtra(ALARM_ID, alarmId) + putExtra(NOTIFICATION_ID, notificationId) + } + return PendingIntent.getBroadcast(this, alarmId, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE) +} + fun Context.getAlarmNotification(pendingIntent: PendingIntent, alarm: Alarm): Notification { val soundUri = alarm.soundUri if (soundUri != SILENT) { diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Constants.kt index 1ab0759d..4135416c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Constants.kt @@ -26,18 +26,23 @@ const val WAS_INITIAL_WIDGET_SET_UP = "was_initial_widget_set_up" const val TABS_COUNT = 4 const val EDITED_TIME_ZONE_SEPARATOR = ":" const val ALARM_ID = "alarm_id" +const val NOTIFICATION_ID = "notification_id" +const val ALARM_TIME = "alarm_time" const val DEFAULT_ALARM_MINUTES = 480 const val DEFAULT_MAX_ALARM_REMINDER_SECS = 300 const val DEFAULT_MAX_TIMER_REMINDER_SECS = 60 const val SIMPLE_PHONE = "Simple_Phone" const val ALARM_NOTIFICATION_CHANNEL_ID = "Alarm_Channel" +const val EARLY_ALARM_DISMISSAL_CHANNEL_ID = "Early Alarm Dismissal" const val PICK_AUDIO_FILE_INTENT_ID = 9994 const val REMINDER_ACTIVITY_INTENT_ID = 9995 const val OPEN_ALARMS_TAB_INTENT_ID = 9996 const val OPEN_STOPWATCH_TAB_INTENT_ID = 9993 const val OPEN_APP_INTENT_ID = 9998 +const val EARLY_ALARM_DISMISSAL_INTENT_ID = 9999 const val ALARM_NOTIF_ID = 9998 +const val EARLY_ALARM_NOTIF_ID = 9999 const val TIMER_RUNNING_NOTIF_ID = 10000 const val STOPWATCH_RUNNING_NOTIF_ID = 10001 diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/models/Alarm.kt b/app/src/main/kotlin/com/simplemobiletools/clock/models/Alarm.kt index b9b4ada5..37092f77 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/models/Alarm.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/models/Alarm.kt @@ -1,4 +1,12 @@ package com.simplemobiletools.clock.models -data class Alarm(var id: Int, var timeInMinutes: Int, var days: Int, var isEnabled: Boolean, var vibrate: Boolean, var soundTitle: String, - var soundUri: String, var label: String) +data class Alarm( + var id: Int, + var timeInMinutes: Int, + var days: Int, + var isEnabled: Boolean, + var vibrate: Boolean, + var soundTitle: String, + var soundUri: String, + var label: String +) diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/AlarmReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/AlarmReceiver.kt index a1e7b7cc..20c0c1b5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/AlarmReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/AlarmReceiver.kt @@ -16,6 +16,7 @@ import com.simplemobiletools.clock.extensions.* import com.simplemobiletools.clock.helpers.ALARM_ID import com.simplemobiletools.clock.helpers.ALARM_NOTIFICATION_CHANNEL_ID import com.simplemobiletools.clock.helpers.ALARM_NOTIF_ID +import com.simplemobiletools.clock.helpers.EARLY_ALARM_NOTIF_ID import com.simplemobiletools.commons.extensions.showErrorToast import com.simplemobiletools.commons.helpers.isOreoPlus @@ -25,6 +26,8 @@ class AlarmReceiver : BroadcastReceiver() { val id = intent.getIntExtra(ALARM_ID, -1) val alarm = context.dbHelper.getAlarmWithId(id) ?: return + context.hideNotification(EARLY_ALARM_NOTIF_ID) // hide early dismissal notification if not already dismissed + if (context.isScreenOn()) { context.showAlarmNotification(alarm) Handler().postDelayed({ diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/DismissAlarmReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/DismissAlarmReceiver.kt new file mode 100644 index 00000000..36bee5c7 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/DismissAlarmReceiver.kt @@ -0,0 +1,52 @@ +package com.simplemobiletools.clock.receivers + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import com.simplemobiletools.clock.extensions.* +import com.simplemobiletools.clock.helpers.ALARM_ID +import com.simplemobiletools.clock.helpers.NOTIFICATION_ID +import com.simplemobiletools.clock.models.Alarm +import com.simplemobiletools.commons.helpers.ensureBackgroundThread +import java.util.* + +class DismissAlarmReceiver: BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + val alarmId = intent.getIntExtra(ALARM_ID, -1) + val notificationId = intent.getIntExtra(NOTIFICATION_ID, -1) + if (alarmId == -1) return + + context.hideNotification(notificationId) + + ensureBackgroundThread { + context.dbHelper.getAlarmWithId(alarmId)?.let { alarm -> + context.cancelAlarmClock(alarm) + scheduleNextAlarm(alarm, context) + if (alarm.days < 0) { + context.dbHelper.updateAlarmEnabledState(alarm.id, false) + context.updateWidgets() + } + } + } + + } + + private fun scheduleNextAlarm(alarm: Alarm, context: Context) { + val oldBitmask = alarm.days + alarm.days = removeTodayFromBitmask(oldBitmask) + context.scheduleNextAlarm(alarm, true) + alarm.days = oldBitmask + } + + private fun removeTodayFromBitmask(bitmask: Int): Int { + val calendar = Calendar.getInstance() + var dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - Calendar.MONDAY // This will give values from 0 (Monday) to 6 (Sunday) + + if (dayOfWeek < 0) { // Adjust for Calendar.MONDAY being 2 + dayOfWeek += 7 + } + + val todayBitmask = 1 shl dayOfWeek // This will shift the number 1 to the left by dayOfWeek places, creating a bitmask for today + return bitmask and todayBitmask.inv() // This will return a new bitmask without today included + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/EarlyAlarmDismissalReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/EarlyAlarmDismissalReceiver.kt new file mode 100644 index 00000000..6897519e --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/EarlyAlarmDismissalReceiver.kt @@ -0,0 +1,66 @@ +package com.simplemobiletools.clock.receivers + +import android.app.Notification +import android.app.NotificationChannel +import android.app.NotificationManager +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import androidx.core.app.NotificationCompat +import com.simplemobiletools.clock.R +import com.simplemobiletools.clock.extensions.getDismissAlarmPendingIntent +import com.simplemobiletools.clock.extensions.getOpenAlarmTabIntent +import com.simplemobiletools.clock.helpers.* +import com.simplemobiletools.commons.helpers.isOreoPlus +import java.text.SimpleDateFormat +import java.util.* + +class EarlyAlarmDismissalReceiver : BroadcastReceiver() { + + override fun onReceive(context: Context, intent: Intent) { + val alarmId = intent.getIntExtra(ALARM_ID, -1) + if (alarmId == -1) return + val alarmTime = intent.getIntExtra(ALARM_TIME, -1) + triggerEarlyDismissalNotification(context, alarmTime, alarmId) + } + + private fun triggerEarlyDismissalNotification(context: Context, alarmTime: Int, alarmId: Int) { + + val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + if (isOreoPlus()) { + NotificationChannel(EARLY_ALARM_DISMISSAL_CHANNEL_ID, context.getString(R.string.early_alarm_dismissal), NotificationManager.IMPORTANCE_DEFAULT).apply { + setBypassDnd(true) + setSound(null, null) + notificationManager.createNotificationChannel(this) + } + } + val dismissIntent = context.getDismissAlarmPendingIntent(alarmId, EARLY_ALARM_NOTIF_ID) + val contentIntent = context.getOpenAlarmTabIntent() + val notification = NotificationCompat.Builder(context) + .setContentTitle(context.getString(R.string.upcoming_alarm)) + .setContentText(getNotificationTimeString(alarmTime)) + .setSmallIcon(R.drawable.ic_alarm_vector) + .setPriority(Notification.PRIORITY_LOW) + .addAction(0, context.getString(R.string.dismiss), dismissIntent) + .setContentIntent(contentIntent) + .setSound(null) + .setAutoCancel(true) + .setChannelId(EARLY_ALARM_DISMISSAL_CHANNEL_ID) + .build() + + notificationManager.notify(EARLY_ALARM_NOTIF_ID, notification) + } + + /** + * Gets the time at which the alarm is going to fire. + * eg: "Sun 1:30 pm" + */ + private fun getNotificationTimeString(alarmTime: Int): String { + val calendar = Calendar.getInstance() + val triggerTime = ((alarmTime - getCurrentDayMinutes()) * 60) - calendar.get(Calendar.SECOND) + val targetMs = System.currentTimeMillis() + (triggerTime * 1000) + val sdf = SimpleDateFormat("EEE h:mm a", Locale.getDefault()) + return sdf.format(Date(targetMs)) + } + +} diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 8a160b4b..9c5c55de 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -29,6 +29,8 @@ لم يتم العثور على موقتات Add timer التنبيه القادم + Early Alarm Dismissal + أجهزة ضبط الوقت قيد التشغيل عداد الوقت لـ %s قيد التشغيل @@ -55,4 +57,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index b182d782..3800c953 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -28,6 +28,7 @@ No timers found Add timer Upcoming alarm + Early Alarm Dismissal Timers are running diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml index 71132cce..ed066f39 100644 --- a/app/src/main/res/values-be/strings.xml +++ b/app/src/main/res/values-be/strings.xml @@ -29,6 +29,8 @@ Таймеры не знойдзены Add timer Маючы адбыцца будзільнік + Early Alarm Dismissal + Таймеры запушчаны Таймер для %s запушчаны @@ -53,4 +55,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 6fecafb9..c4c9b4fd 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -29,6 +29,7 @@ No timers found Add timer Upcoming alarm + Early Alarm Dismissal Таймерите са включени Таймерът за %s е включен diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 0feb9c29..5381bc8a 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -29,6 +29,8 @@ No s\'ha trobat cap temporitzador Add timer Pròxima alarma + Early Alarm Dismissal + Els temporitzadors estan en marxa El temporitzador per a %s està en marxa @@ -51,4 +53,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 9c701cb4..8395843a 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -29,6 +29,8 @@ Nenalezeny žádné časovače Přidat časovač Nadcházející budík + Early Alarm Dismissal + Časovače běží Časovač pro %s běží @@ -52,4 +54,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-cy/strings.xml b/app/src/main/res/values-cy/strings.xml index 1f213628..25ea9963 100644 --- a/app/src/main/res/values-cy/strings.xml +++ b/app/src/main/res/values-cy/strings.xml @@ -29,6 +29,8 @@ No timers found Add timer Upcoming alarm + Early Alarm Dismissal + Timers are running Timer for %s is running diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 4fd9d7ba..6ed0e5de 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -28,6 +28,7 @@ No timers found Add timer Upcoming alarm + Early Alarm Dismissal Timers are running diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 3a564247..fc80339b 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -29,6 +29,8 @@ Keine Timer gefunden Timer hinzufügen Bevorstehender Alarm + Early Alarm Dismissal + Die Timer laufen Timer für %s läuft @@ -51,4 +53,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index ddb5113c..e56fb7a2 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -29,6 +29,8 @@ Δεν βρέθηκαν χρονόμετρα Προσθήκη χρονόμετρου Επερχόμενη αφύπνιση + Early Alarm Dismissal + Τα χρονόμετρα σε λειτουργία Το χρονόμετρο για %s σε λειτουργία diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml index 2dc612d7..c8ff59a1 100644 --- a/app/src/main/res/values-eo/strings.xml +++ b/app/src/main/res/values-eo/strings.xml @@ -29,6 +29,7 @@ No timers found Add timer Upcoming alarm + Early Alarm Dismissal Timers are running diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 48a18951..64a914fe 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -29,6 +29,8 @@ No se encontraron temporizadores Add timer Próxima alarma + Early Alarm Dismissal + Los temporizadores están en marcha El temporizador para %s está en marcha @@ -52,4 +54,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index ad0152af..691641cf 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -29,6 +29,8 @@ Ei leitud taimereid Lisage taimer Järgmine äratus + Early Alarm Dismissal + Taimerid töötavad %s taimer töötab @@ -51,4 +53,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index ece09303..385f4e54 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -28,6 +28,7 @@ No timers found Add timer Upcoming alarm + Early Alarm Dismissal Timers are running diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 93216b8f..6a0f2186 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -29,6 +29,8 @@ Ajastuksia ei löytynyt Lisää ajastus Ajastettu herätys + Early Alarm Dismissal + Ajastuksia on käynnissä %s ajastus on käynnissä @@ -51,4 +53,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 7d150ae7..a6241ac1 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -29,6 +29,8 @@ Aucune minuterie trouvée Ajouter une minuterie Alarme à venir + Early Alarm Dismissal + Les minuteries sont en marche La minuterie de %s est en marche @@ -52,4 +54,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 0522b2bc..c14fe365 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -29,6 +29,8 @@ Non se atoparon temporizadores Engadir temporizador Próxima alarma + Early Alarm Dismissal + Os temporizadores atopanse traballando O temporizador para %s atopase traballando @@ -51,4 +53,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 30c2cbfb..bcf60c66 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -29,6 +29,8 @@ Nema brojača vremena Dodaj brojač vremena Nadolazeći alarm + Early Alarm Dismissal + Brojači su pokrenuti Brojač za %s je pokrenut @@ -52,4 +54,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 25392f97..373d252c 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -29,6 +29,8 @@ Nincsenek időzitők Időzítő hozzáadása Közelgő riasztás + Early Alarm Dismissal + Az időzítő megy A(z) %s időzítő fut @@ -51,4 +53,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index d9e3b213..f30ceaff 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -29,6 +29,8 @@ Tidak ada pewaktu yang ditemukan Tambahkan pewaktu Alarm berikut + Early Alarm Dismissal + Pewaktu sedang berjalan Pewaktu untuk %s sedang berjalan @@ -50,4 +52,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index e92c354d..1d76d7c9 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -29,6 +29,8 @@ Nessun contaminuti trovato Aggiungi contaminuti Allarme imminente + Early Alarm Dismissal + I contaminuti sono in funzione Il contaminuti per %s è in funzione @@ -52,4 +54,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index b3dde4cb..2662556e 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -29,6 +29,8 @@ No timers found Add timer Upcoming alarm + Early Alarm Dismissal + ‏טיימר פועל טיימר עבור %s פועל diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index f8b4eea8..906fd135 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -29,6 +29,8 @@ タイマーが見つかりません タイマーを追加 今後のアラーム + Early Alarm Dismissal + タイマーが作動中 タイマー %s が作動中 @@ -50,4 +52,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 0f2fb5b3..40f499a5 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -28,6 +28,7 @@ No timers found Add timer Upcoming alarm + Early Alarm Dismissal Timers are running diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index ba90bbdf..b81006c8 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -29,6 +29,8 @@ ടൈമറുകളൊന്നും കണ്ടെത്തിയില്ല ടൈമർ ചേർക്കുക Upcoming alarm + Early Alarm Dismissal + ടൈമറുകൾ പ്രവർത്തിക്കുന്നു %s-നുള്ള ടൈമർ പ്രവർത്തിക്കുന്നു @@ -51,4 +53,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index 34bf849c..9c3acda7 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -29,6 +29,8 @@ Ingen timere funnet Add timer Kommende alarm + Early Alarm Dismissal + Timere er i gang Timer for %s er i gang @@ -51,4 +53,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 8e9b3bc9..16e9c6fa 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -29,6 +29,8 @@ Geen timers Timer toevoegen Volgende wekker + Early Alarm Dismissal + Timers lopen Timer voor %s loopt @@ -51,4 +53,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-pa-rPK/strings.xml b/app/src/main/res/values-pa-rPK/strings.xml index 30d0c332..15ed6acf 100644 --- a/app/src/main/res/values-pa-rPK/strings.xml +++ b/app/src/main/res/values-pa-rPK/strings.xml @@ -32,6 +32,7 @@ Upcoming alarm سماں والے چالو کیتے جا رہے اے ؜‫%s‬‬ ؜لئی سماں والا چالو کیتا جا رہا اے + Early Alarm Dismissal ؜‫%d‬؜ سماں والا چالو کیتا جا رہا اے ؜‫%d‬؜ سماں والے چالو کیتے جا رہے اے diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 4e361945..f14708ad 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -29,6 +29,8 @@ Nie znaleziono minutników Dodaj minutnik Nadchodzący alarm + Early Alarm Dismissal + Minutniki są uruchomione Minutnik dla %s jest uruchomiony @@ -53,4 +55,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 25f69672..be1478c0 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -29,6 +29,8 @@ Nenhum temporizador encontrado Adicionar temporizador Próximo alarme + Early Alarm Dismissal + Temporizadores em execução O temporizador para %s está em execução diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index cb42aa34..2cc6a250 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -29,6 +29,8 @@ Nenhum temporizador encontrado Adicionar temporizador Próximo alarme + Early Alarm Dismissal + Temporizadores em curso Temporizador para %s está em curso @@ -52,4 +54,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 4fd36b8c..8cb1db96 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -29,6 +29,8 @@ Nu au fost găsite temporizatoare Adaugă temporizator Upcoming alarm + Early Alarm Dismissal + Temporizatoarele sunt pornite Temporizatorul de %s este pornit diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index f99f6a7a..fc18a29d 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -29,6 +29,8 @@ Таймеры отсутствуют Добавить таймер Предстоящий будильник + Early Alarm Dismissal + Таймеры запущены Таймер для %s запущен @@ -53,4 +55,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 83276e54..33c552f5 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -28,6 +28,7 @@ Nenašli sa žiadne časovače Pridať časovač Nadchádzajúci budík + Early Alarm Dismissal Sú spustené časovače diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index d3c7dc42..119b8db5 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -29,6 +29,8 @@ Ni časovnikov Dodajte časovnik Upcoming alarm + Early Alarm Dismissal + Tečejo časovniki Časovnik za %s teče diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 7f4cccfa..1fce73a6 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -32,6 +32,7 @@ Тајмери раде Тајмер за %s је покренут Нови тајмер + Early Alarm Dismissal %d тајмер ради %d тајмери раде diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 0309448a..f12042e0 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -29,6 +29,8 @@ Inga timers hittades Lägg till timer Kommande alarm + Early Alarm Dismissal + Timers är igång Timer för %s är igång @@ -51,4 +53,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index 2dc612d7..c8ff59a1 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -29,6 +29,7 @@ No timers found Add timer Upcoming alarm + Early Alarm Dismissal Timers are running diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index dad28a57..38200c6e 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -29,6 +29,8 @@ Zamanlayıcı bulunamadı Zamanlayıcı ekle Yaklaşan alarm + Early Alarm Dismissal + Zamanlayıcılar çalışıyor %s için zamanlayıcı çalışıyor @@ -51,4 +53,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 22d1a197..7f3ddaeb 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -29,6 +29,8 @@ Таймерів не знайдено Add timer Майбутній будильник + Early Alarm Dismissal + Таймери працюють Таймер для %s працює @@ -53,4 +55,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 8efb2ff3..9f4c52e3 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -29,6 +29,8 @@ 未找到计时器 添加计时器 即将到来的闹铃 + Early Alarm Dismissal + 计时器正在运行 %s 的计时器正在运行 @@ -50,4 +52,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 46fc8fd8..f210f82c 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -28,6 +28,7 @@ No timers found Add timer Upcoming alarm + Early Alarm Dismissal Timers are running diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f20088f8..37f0c6ae 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -29,6 +29,7 @@ No timers found Add timer Upcoming alarm + Early Alarm Dismissal Timers are running