Merge pull request #468 from rawlin/#265

#265 Early dismissal of alarm
This commit is contained in:
Tibor Kaputa 2023-07-05 11:21:49 +02:00 committed by GitHub
commit 7abb8f89b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
50 changed files with 259 additions and 33 deletions

View File

@ -124,6 +124,10 @@
<receiver android:name=".receivers.HideAlarmReceiver" />
<receiver android:name=".receivers.DismissAlarmReceiver" />
<receiver android:name=".receivers.EarlyAlarmDismissalReceiver" />
<receiver
android:name=".receivers.BootCompletedReceiver"
android:exported="true">

View File

@ -27,14 +27,15 @@ 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 java.util.Calendar
import java.util.Date
import java.util.TimeZone
import kotlin.math.pow
import kotlin.time.Duration.Companion.minutes
val Context.config: Config get() = Config.newInstance(applicationContext)
@ -144,11 +145,26 @@ fun Context.setupAlarmClock(alarm: Alarm, triggerInSeconds: Int) {
val targetMS = System.currentTimeMillis() + triggerInSeconds * 1000
try {
AlarmManagerCompat.setAlarmClock(alarmManager, targetMS, getOpenAlarmTabIntent(), getAlarmIntent(alarm))
// show a notification to allow dismissing the alarm 10 minutes before it actually triggers
val dismissalTriggerTime = if (targetMS - System.currentTimeMillis() < 10.minutes.inWholeMilliseconds) {
System.currentTimeMillis() + 500
} else {
targetMS - 10.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)
}
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)
@ -390,6 +406,14 @@ fun Context.getHideAlarmPendingIntent(alarm: Alarm, channelId: String): PendingI
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) {

View File

@ -26,20 +26,24 @@ 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 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 OPEN_STOPWATCH_TAB_INTENT_ID = 9993
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 OPEN_APP_INTENT_ID = 9997
const val ALARM_NOTIF_ID = 9998
const val TIMER_RUNNING_NOTIF_ID = 10000
const val STOPWATCH_RUNNING_NOTIF_ID = 10001
const val EARLY_ALARM_DISMISSAL_INTENT_ID = 10002
const val EARLY_ALARM_NOTIF_ID = 10003
const val OPEN_TAB = "open_tab"
const val TAB_CLOCK = 0

View File

@ -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
)

View File

@ -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({

View File

@ -0,0 +1,51 @@
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.extensions.removeBit
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import java.util.Calendar
import kotlin.math.pow
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, false)
alarm.days = oldBitmask
}
private fun removeTodayFromBitmask(bitmask: Int): Int {
val calendar = Calendar.getInstance()
calendar.firstDayOfWeek = Calendar.MONDAY
val dayOfWeek = (calendar.get(Calendar.DAY_OF_WEEK) + 5) % 7
val todayBitmask = 2.0.pow(dayOfWeek).toInt()
return bitmask.removeBit(todayBitmask)
}
}

View File

@ -0,0 +1,58 @@
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 android.text.format.DateFormat
import androidx.core.app.NotificationCompat
import com.simplemobiletools.clock.R
import com.simplemobiletools.clock.extensions.getDismissAlarmPendingIntent
import com.simplemobiletools.clock.extensions.getNextAlarm
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
}
triggerEarlyDismissalNotification(context, alarmId)
}
private fun triggerEarlyDismissalNotification(context: Context, 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(context.getNextAlarm())
.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)
}
}

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">لم يتم العثور على موقتات</string>
<string name="add_timer">Add timer</string>
<string name="upcoming_alarm">التنبيه القادم</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">أجهزة ضبط الوقت قيد التشغيل</string>
<string name="timer_single_notification_label_msg">عداد الوقت لـ %s قيد التشغيل</string>
@ -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
-->
</resources>
</resources>

View File

@ -28,6 +28,7 @@
<string name="no_timers_found">No timers found</string>
<string name="add_timer">Add timer</string>
<string name="upcoming_alarm">Upcoming alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Timers are running</string>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Таймеры не знойдзены</string>
<string name="add_timer">Add timer</string>
<string name="upcoming_alarm">Маючы адбыцца будзільнік</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Таймеры запушчаны</string>
<string name="timer_single_notification_label_msg">Таймер для %s запушчаны</string>
@ -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
-->
</resources>
</resources>

View File

@ -29,6 +29,7 @@
<string name="no_timers_found">No timers found</string>
<string name="add_timer">Add timer</string>
<string name="upcoming_alarm">Upcoming alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Таймерите са включени</string>
<string name="timer_single_notification_label_msg">Таймерът за %s е включен</string>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">No s\'ha trobat cap temporitzador</string>
<string name="add_timer">Add timer</string>
<string name="upcoming_alarm">Pròxima alarma</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Els temporitzadors estan en marxa</string>
<string name="timer_single_notification_label_msg">El temporitzador per a %s està en marxa</string>
@ -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
-->
</resources>
</resources>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Nenalezeny žádné časovače</string>
<string name="add_timer">Přidat časovač</string>
<string name="upcoming_alarm">Nadcházející budík</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Časovače běží</string>
<string name="timer_single_notification_label_msg">Časovač pro %s běží</string>
@ -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
-->
</resources>
</resources>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">No timers found</string>
<string name="add_timer">Add timer</string>
<string name="upcoming_alarm">Upcoming alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Timers are running</string>
<string name="timer_single_notification_label_msg">Timer for %s is running</string>

View File

@ -28,6 +28,7 @@
<string name="no_timers_found">No timers found</string>
<string name="add_timer">Add timer</string>
<string name="upcoming_alarm">Upcoming alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Timers are running</string>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Keine Timer gefunden</string>
<string name="add_timer">Timer hinzufügen</string>
<string name="upcoming_alarm">Bevorstehender Alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Die Timer laufen</string>
<string name="timer_single_notification_label_msg">Timer für %s läuft</string>
@ -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
-->
</resources>
</resources>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Δεν βρέθηκαν χρονόμετρα</string>
<string name="add_timer">Προσθήκη χρονόμετρου</string>
<string name="upcoming_alarm">Επερχόμενη αφύπνιση</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Τα χρονόμετρα σε λειτουργία</string>
<string name="timer_single_notification_label_msg">Το χρονόμετρο για %s σε λειτουργία</string>

View File

@ -29,6 +29,7 @@
<string name="no_timers_found">No timers found</string>
<string name="add_timer">Add timer</string>
<string name="upcoming_alarm">Upcoming alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Timers are running</string>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">No se encontraron temporizadores</string>
<string name="add_timer">Add timer</string>
<string name="upcoming_alarm">Próxima alarma</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Los temporizadores están en marcha</string>
<string name="timer_single_notification_label_msg">El temporizador para %s está en marcha</string>
@ -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
-->
</resources>
</resources>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Ei leitud taimereid</string>
<string name="add_timer">Lisage taimer</string>
<string name="upcoming_alarm">Järgmine äratus</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Taimerid töötavad</string>
<string name="timer_single_notification_label_msg">%s taimer töötab</string>
@ -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
-->
</resources>
</resources>

View File

@ -28,6 +28,7 @@
<string name="no_timers_found">No timers found</string>
<string name="add_timer">Add timer</string>
<string name="upcoming_alarm">Upcoming alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Timers are running</string>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Ajastuksia ei löytynyt</string>
<string name="add_timer">Lisää ajastus</string>
<string name="upcoming_alarm">Ajastettu herätys</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Ajastuksia on käynnissä</string>
<string name="timer_single_notification_label_msg">%s ajastus on käynnissä</string>
@ -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
-->
</resources>
</resources>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Aucune minuterie trouvée</string>
<string name="add_timer">Ajouter une minuterie</string>
<string name="upcoming_alarm">Alarme à venir</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Les minuteries sont en marche</string>
<string name="timer_single_notification_label_msg">La minuterie de %s est en marche</string>
@ -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
-->
</resources>
</resources>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Non se atoparon temporizadores</string>
<string name="add_timer">Engadir temporizador</string>
<string name="upcoming_alarm">Próxima alarma</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Os temporizadores atopanse traballando</string>
<string name="timer_single_notification_label_msg">O temporizador para %s atopase traballando</string>
@ -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
-->
</resources>
</resources>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Nema brojača vremena</string>
<string name="add_timer">Dodaj brojač vremena</string>
<string name="upcoming_alarm">Nadolazeći alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Brojači su pokrenuti</string>
<string name="timer_single_notification_label_msg">Brojač za %s je pokrenut</string>
@ -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
-->
</resources>
</resources>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Nincsenek időzitők</string>
<string name="add_timer">Időzítő hozzáadása</string>
<string name="upcoming_alarm">Közelgő riasztás</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Az időzítő megy</string>
<string name="timer_single_notification_label_msg">A(z) %s időzítő fut</string>
@ -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
-->
</resources>
</resources>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Tidak ada pewaktu yang ditemukan</string>
<string name="add_timer">Tambahkan pewaktu</string>
<string name="upcoming_alarm">Alarm berikut</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Pewaktu sedang berjalan</string>
<string name="timer_single_notification_label_msg">Pewaktu untuk %s sedang berjalan</string>
@ -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
-->
</resources>
</resources>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Nessun contaminuti trovato</string>
<string name="add_timer">Aggiungi contaminuti</string>
<string name="upcoming_alarm">Allarme imminente</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">I contaminuti sono in funzione</string>
<string name="timer_single_notification_label_msg">Il contaminuti per %s è in funzione</string>
@ -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
-->
</resources>
</resources>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">No timers found</string>
<string name="add_timer">Add timer</string>
<string name="upcoming_alarm">Upcoming alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">‏טיימר פועל</string>
<string name="timer_single_notification_label_msg">טיימר עבור %s פועל</string>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">タイマーが見つかりません</string>
<string name="add_timer">タイマーを追加</string>
<string name="upcoming_alarm">今後のアラーム</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">タイマーが作動中</string>
<string name="timer_single_notification_label_msg">タイマー %s が作動中</string>
@ -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
-->
</resources>
</resources>

View File

@ -28,6 +28,7 @@
<string name="no_timers_found">No timers found</string>
<string name="add_timer">Add timer</string>
<string name="upcoming_alarm">Upcoming alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Timers are running</string>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">ടൈമറുകളൊന്നും കണ്ടെത്തിയില്ല</string>
<string name="add_timer">ടൈമർ ചേർക്കുക</string>
<string name="upcoming_alarm">Upcoming alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">ടൈമറുകൾ പ്രവർത്തിക്കുന്നു</string>
<string name="timer_single_notification_label_msg">%s-നുള്ള ടൈമർ പ്രവർത്തിക്കുന്നു</string>
@ -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
-->
</resources>
</resources>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Ingen timere funnet</string>
<string name="add_timer">Add timer</string>
<string name="upcoming_alarm">Kommende alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Timere er i gang</string>
<string name="timer_single_notification_label_msg">Timer for %s er i gang</string>
@ -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
-->
</resources>
</resources>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Geen timers</string>
<string name="add_timer">Timer toevoegen</string>
<string name="upcoming_alarm">Volgende wekker</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Timers lopen</string>
<string name="timer_single_notification_label_msg">Timer voor %s loopt</string>
@ -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
-->
</resources>
</resources>

View File

@ -32,6 +32,7 @@
<string name="upcoming_alarm">Upcoming alarm</string>
<string name="timers_notification_msg">سماں والے چالو کیتے جا رہے اے</string>
<string name="timer_single_notification_label_msg">؜%s ؜لئی سماں والا چالو کیتا جا رہا اے</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<plurals name="timer_notification_msg">
<item quantity="one">؜%d؜ سماں والا چالو کیتا جا رہا اے</item>
<item quantity="other">؜%d؜ سماں والے چالو کیتے جا رہے اے</item>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Nie znaleziono minutników</string>
<string name="add_timer">Dodaj minutnik</string>
<string name="upcoming_alarm">Nadchodzący alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Minutniki są uruchomione</string>
<string name="timer_single_notification_label_msg">Minutnik dla %s jest uruchomiony</string>
@ -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
-->
</resources>
</resources>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Nenhum temporizador encontrado</string>
<string name="add_timer">Adicionar temporizador</string>
<string name="upcoming_alarm">Próximo alarme</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Temporizadores em execução</string>
<string name="timer_single_notification_label_msg">O temporizador para %s está em execução</string>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Nenhum temporizador encontrado</string>
<string name="add_timer">Adicionar temporizador</string>
<string name="upcoming_alarm">Próximo alarme</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Temporizadores em curso</string>
<string name="timer_single_notification_label_msg">Temporizador para %s está em curso</string>
@ -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
-->
</resources>
</resources>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Nu au fost găsite temporizatoare</string>
<string name="add_timer">Adaugă temporizator</string>
<string name="upcoming_alarm">Upcoming alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Temporizatoarele sunt pornite</string>
<string name="timer_single_notification_label_msg">Temporizatorul de %s este pornit</string>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Таймеры отсутствуют</string>
<string name="add_timer">Добавить таймер</string>
<string name="upcoming_alarm">Предстоящий будильник</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Таймеры запущены</string>
<string name="timer_single_notification_label_msg">Таймер для %s запущен</string>
@ -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
-->
</resources>
</resources>

View File

@ -28,6 +28,7 @@
<string name="no_timers_found">Nenašli sa žiadne časovače</string>
<string name="add_timer">Pridať časovač</string>
<string name="upcoming_alarm">Nadchádzajúci budík</string>
<string name="early_alarm_dismissal">Predčasné zrušenie budíka</string>
<!--Timer-->
<string name="timers_notification_msg">Sú spustené časovače</string>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Ni časovnikov</string>
<string name="add_timer">Dodajte časovnik</string>
<string name="upcoming_alarm">Upcoming alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!-- Timer -->
<string name="timers_notification_msg">Tečejo časovniki</string>
<string name="timer_single_notification_label_msg">Časovnik za %s teče</string>

View File

@ -32,6 +32,7 @@
<string name="timers_notification_msg">Тајмери раде</string>
<string name="timer_single_notification_label_msg">Тајмер за %s је покренут</string>
<string name="new_timer">Нови тајмер</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<plurals name="timer_notification_msg">
<item quantity="one">%d тајмер ради</item>
<item quantity="few">%d тајмери раде</item>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Inga timers hittades</string>
<string name="add_timer">Lägg till timer</string>
<string name="upcoming_alarm">Kommande alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Timers är igång</string>
<string name="timer_single_notification_label_msg">Timer för %s är igång</string>
@ -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
-->
</resources>
</resources>

View File

@ -29,6 +29,7 @@
<string name="no_timers_found">No timers found</string>
<string name="add_timer">Add timer</string>
<string name="upcoming_alarm">Upcoming alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Timers are running</string>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Zamanlayıcı bulunamadı</string>
<string name="add_timer">Zamanlayıcı ekle</string>
<string name="upcoming_alarm">Yaklaşan alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Zamanlayıcılar çalışıyor</string>
<string name="timer_single_notification_label_msg">%s için zamanlayıcı çalışıyor</string>
@ -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
-->
</resources>
</resources>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">Таймерів не знайдено</string>
<string name="add_timer">Add timer</string>
<string name="upcoming_alarm">Майбутній будильник</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Таймери працюють</string>
<string name="timer_single_notification_label_msg">Таймер для %s працює</string>
@ -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
-->
</resources>
</resources>

View File

@ -29,6 +29,8 @@
<string name="no_timers_found">未找到计时器</string>
<string name="add_timer">添加计时器</string>
<string name="upcoming_alarm">即将到来的闹铃</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">计时器正在运行</string>
<string name="timer_single_notification_label_msg">%s 的计时器正在运行</string>
@ -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
-->
</resources>
</resources>

View File

@ -28,6 +28,7 @@
<string name="no_timers_found">No timers found</string>
<string name="add_timer">Add timer</string>
<string name="upcoming_alarm">Upcoming alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!--Timer-->
<string name="timers_notification_msg">Timers are running</string>

View File

@ -29,6 +29,7 @@
<string name="no_timers_found">No timers found</string>
<string name="add_timer">Add timer</string>
<string name="upcoming_alarm">Upcoming alarm</string>
<string name="early_alarm_dismissal">Early Alarm Dismissal</string>
<!-- Timer -->
<string name="timers_notification_msg">Timers are running</string>