Configuración de notificaciones programadas en Android | Por Siva Ganesh Kantamani | Marzo de 2022
Comencemos por programar una alerta, AlarmManager
Las clases nos ayudan a realizar operaciones basadas en el tiempo fuera del alcance de la aplicación. Supongamos que puede programar una alarma para recordar a los usuarios que tomen su medicamento a una hora determinada del día.
También puede programar repeticionesnorteg Alertas con el intervalo de tiempo seleccionado. Esto es útil en una variedad de situaciones, como recordar a los usuarios que tomen sus medicamentos o mantenerse hidratados durante un período de tiempo.
alarma de una sola vez
Comencemos con una alerta única única (no repetitiva).Para configurar la alarma primero, necesitamos crear AlarmManager
La instancia de la clase es la siguiente:
private var alarmMgr: AlarmManager? = nullalarmMgr = context.getSystemService(Context.ALARM_SERVICE) as? AlarmManager?
Entonces necesitamos crear una intención pendiente para llamar BroadcastReceiver
Allí podemos hacer lo que queramos como mostrar una notificación al usuario en nuestro caso.Ahora, vamos a crear un simple BroadcastReceiver
por nombre AlarmReceiver
Como sigue:
class AlarmReceiver : BroadcastReceiver() {override fun onReceive(p0: Context?, p1: Intent?) {
TODO("Not yet implemented")
}
}
Ahora es el momento de crear intentos pendientes para desencadenar AlarmReceiver
. Echa un vistazo a:
val alarmIntent = Intent(this, AlarmReceiver::class.java)
val pendingIntent = PendingIntent.getBroadcast(
context,
requestCode,
alarmIntent,
PendingIntent.FLAG_UPDATE_CURRENT
)
Finalmente, es hora de configurar la alarma. Para esto, necesitamos tres cosas, el tipo de alerta, el tiempo de activación en milisegundos y la intención pendiente. Los dos últimos son en su mayoría autoexplicativos, mientras que al entrar en el tipo de alerta, AlarmManager
Hay cuatro tipos disponibles:
ELAPSED_REALTIME
— Activa una intención suspendida basada en el tiempo transcurrido desde que se inició el dispositivo, pero no activa el dispositivo. El tiempo transcurrido incluye cualquier momento en que el dispositivo esté inactivo.ELAPSED_REALTIME_WAKEUP
— Despierte el dispositivo y active un intento de suspensión después de un período de tiempo determinado después de que se inicie el dispositivo.RTC
— Activa una intención pendiente en un momento dado, pero no activa el dispositivo.RTC_WAKEUP
— Despierte el dispositivo en un momento dado para invocar una intención pendiente.
Configuremos una alarma que se dispare después de un minuto.
alarmMgr?.set(
AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 60 * 1000,
alarmIntent
)
Repetir alarma
La programación de alertas recurrentes es muy similar a las alertas únicas.La única diferencia es mencionar el intervalo entre la alerta y el uso setRepeating
reemplazar set
. Echa un vistazo a:
alarmMgr?.setRepeating(
AlarmManager.RTC_WAKEUP,
SystemClock.elapsedRealtime() + 60 * 1000,,
1000 * 60 * 15,
alarmIntent
)
El código anterior activa una alarma después de un minuto y la repite cada 15 minutos.