Como criar AlarmManager no Android

Postado em por Wolmir Cezer Garbin em Android | 194 Visualizações
Última atualização em:

Neste post veja como criar um AlarmManager no Android usando Kotlin

O que é AlarmManager?

A melhor definição e que descreve corretamente sua função é a seguinte:

AlarmManager é uma classe que permite registar um Intent para lançar a sua aplicação, serviço ou BroadcastReceiver, a determinado dia e hora.

Podemos entender isso como um agendamento de uma tarefa. Qual tarefa? Isso é a sua intenção que ira definir o que deseja fazer naquele momento.

Para entender melhor vamos a um exemplo pratico de um AlarmManager que executa uma simples chamada a um BroadcastReceiver.

Chamando um BroadcastReceiver

Este exemplo apenas chama um BroadcastReceiver para executar o método de recebimento da ação onReceive.

Para isso primeiro precisamos criar uma intenção e agendar no AlarmManager, podemos fazer isso usando o seguinte código de dentro de qualquer Activity de sua aplicação:

val intent = Intent("EXECUTAR_ALARME")
val pIntent = PendingIntent.getBroadcast(this, 0, intent, 0)

val alarme = getSystemService(ALARM_SERVICE) as AlarmManager
alarme.setRepeating(AlarmManager.RTC_WAKEUP, 1, 60, pIntent)

O próximo passo é criar a classe que implemente a interface BroadcastReceiver, que por sua vez nos obriga a implementar o método onReceive que será executado a cada chamada.

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent


class SampleAlarmReceiver : BroadcastReceiver() {

    override fun onReceive(c: Context, i: Intent) {

    }
}

Por fim, você precisa adicionar ao arquivo AndroidManifest.xml entre as tags application o seguinte xml:

<receiver android:name=".SampleAlarmReceiver">
    <intent-filter>
        <action android:name="EXECUTAR_ALARME" />

        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</receiver>

Note que no action presente no receiver passamos o texto EXECUTAR_ALARME que foi informado na intenção que será executada quando o AlarmManager disparar a ação.

Pronto, a cada minuto será executado o método onReceiver a sua classe SampleAlarmReceiver, sendo possível executar qualquer ação.

Mostrando uma notificação no Android

Caso queira mostrar uma notificação no Android, adicione o seguinte código dentro do método onReceive:

val mBuilder = NotificationCompat.Builder(c, "123")
        .setSmallIcon(R.drawable.launcher_icon)
        .setContentTitle("Title")
        .setContentText("Executando um AlarmManager")
        .setAutoCancel(true)

val mNotificationManager = c.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
mNotificationManager.notify(100, mBuilder.build())

A classe completa fica assim:

import android.app.NotificationManager
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.support.v4.app.NotificationCompat


class SampleAlarmReceiver : BroadcastReceiver() {


    override fun onReceive(c: Context, i: Intent) {
        val mBuilder = NotificationCompat.Builder(c, "123")
                .setSmallIcon(R.drawable.launcher_icon)
                .setContentTitle("Title")
                .setContentText("Executando um AlarmManager")
                .setAutoCancel(true)

        val mNotificationManager = c.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
        mNotificationManager.notify(100, mBuilder.build())
    }

}

Lembrando que neste post todo o código foi escrito utilizando Kotlin, mas você pode utilizar java sem problema algum, o resultado será o mesmo.

Qualquer dúvida deixe nos comentários.


Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Wolmir Cezer Garbin

Wolmir Cezer Garbin


Sou formado em Desenvolvimento de Sistemas para Internet pela faculdade Mater Dei e Pós graduado em Desenvolvimento de sistemas em Java pela UTFPR. Trabalho a mais de 9 anos com desenvolvimento em Java, Android e Web utilizando as principais tecnologias do mercado. Atuo como professor na faculdade Mater Dei, programador na Garbo Software e criador do Receitas de Código.

Ver mais

Code Conference

Esta é uma conferência de código realizada na cidade de Pato Branco para dissiminar tendências e informações sobre programação e novas tecnológias

Veja mais sobre o Code Conference

Publique seu post no Receitas de Código

Agora você pode publicar seu post no Receitas de Código e compartilhar seu conhecimento com muitas pessoas!

Quero publicar