Skip to content
proyecto AlarmManager (3)

Proyecto AlarmManager

En este tutorial vamos a desarrollar una sencilla aplicación Android, que nos servirá como ejercicio práctico para ver la implementación de la clase AlarmManager. En ella utilizaremos esta clase, y la clase Thread, para programar tareas en segundo plano.

Puedes descargar todo el código de este proyecto al final de este tutorial

La estructura de la aplicación estará formada por:

  • Una clase MainActivity que heredará de Activity, donde se definirán los elementos visuales y eventos encargados de realizar las diferentes llamadas. Estas ejecutarán tareas en background, y programarán el lanzamiento de dichas tareas, de manera repetida, en intervalos de tiempo elegidos por el usuario, o en una hora determinada.
  • También definiremos una clase llamada PlanificarTareas, que heredará de la clase base BroadcastReceiver, encargada de recibir los diferentes intents lanzados por la tarea en segundo plano.

A nivel de Layout será necesario añadir los siguientes elementos (sólo se mencionarán los elementos que intervienen en la planificación de tareas):

Layout proyecto AlarmManager

  • Dos componentes de tipo ImageButton encargados de programar la repetición de la alarma en un intervalo de tiempo indicado por el usuario, o programar la ejecución de la tarea a una hora determinada.
  • Un componente de tipo TimePicker para programar la tarea a una hora específica.
  • Un componente de tipo EditText (tipo de entrada «número») para indicar cada cuántos segundos queremos que se repita la tarea en segundo plano
  • Dos componentes de tipo TextView para mostrar la hora programada o el intervalo de tiempo, en segundos, para la repetición de la tarea, además de mostrar el estado de progreso de la misma.
  • Además será necesario definir un componente de tipo ProgressBar para mostrar el progreso de la tarea lanzada, utilizando la clase Thread en conjunto con la clase Handler (esta última estará encargada de comunicar y refrescar la UIThread o hilo principal con los cambios).

TareasSegundoPlano/src/com.academiaandroid.tareassegundoplano/MainActivity.java

En primer lugar se enlazan los componentes con los recursos definidos a nivel de layout, dónde podemos destacar el uso del componente ProgressBar para mostrar una tarea en ejecución, y el componente TimePicker y EditText, para programar la ejecución de las tareas.

 

Posteriormente se define el evento encargado de controlar si el botón con la imagen del reloj ha sido pulsado, para la programación de una tarea, con la hora indicada por el usuario en el componente TimePicker:

 

Otro de los eventos a comentar, sería el lanzado por el botón con la imagen de dos flechas, a modo de recarga, indicando en el componente EditText, el tiempo en segundo que deseamos como intervalo de repetición de la alarma programada:

 

 

En primer lugar crearemos un clase que herede de BroadcastReceiver:

public class PlanificarTareas extends BroadcastReceiver{

Posteriormente se sobrescribirá el método OnReceive desde dónde se invocará al método que ejecute la tarea en segundo plano:

 

Como podemos comprobar en la imagen siguiente, se ha definido un TableLayout, con varios tableRow, encargados de mostrar de manera ordenada los diferentes componentes que comentamos a continuación:

  • El componente TimePicker, permitirá programar una tarea a una hora indicada.
  • Los diferentes componentes de tipo ImageButton permiten programar una tarea una hora concreta, o su repetición en un intervalo de tiempo indicado.
  • El componente ProgressBar es el encargado de mostrar el progreso de la tarea, actualizando el porcentaje de progreso en el componente TextView (‘Sin Progreso’).
  • Por último, se define un componente EditText, que recogerá el valor en segundos, del intervalo de repetición entre tarea y tarea.

Proyecto AlarmManager (2)

 

 

Programación de tareas en segundo plano con las clases Thread, Handler y AlarmManager.

Como se puede comprobar en la imagen, se programa una tarea a las 2:49 PM y se pulsa el botón con la imagen del reloj. En el reloj del dispositivo se puede apreciar que dicha alarma funciona correctamente:

proyecto AlarmManager (3)

 

Repetición de tareas en segundo plano con las clases Thread, Handler y AlarmManager.

En la siguiente imagen se aprecia cómo se ha establecido un tiempo de 35 segundos como intervalo de repetición entre tarea y tarea, pulsando el botón de recarga:

Proyecto AlarmManager (4)

Descarga

Pincha aquí para descargar el código de este proyecto

Download

Esta entrada tiene 5 comentarios

    1. Hola Roberto,
      no sabemos si entendemos bien tu comentario dado que en esta web tienes gran cantidad de contenidos formativos sobre programación Android. Aquí tienes las temáticas que hemos tratado hasta ahora: http://academiaandroid.com/tematicas-series-de-publicaciones/
      También tienes nuestros cursos online, que abarcan desde una iniciación (aprender los fundamentos de programar en Java y Programación Orientada a Objetos que es básico antes de iniciarse en Android y que continuaría con nuestro curso para aprender a desarrollar Apps para Android) a formación más especializados, por ejemplo en bases de datos para Android. En este enlace tienes los cursos disponibles: http://academiaandroid.com/cursos-formacion/

      Por supuesto si buscas en Internet, encontrarás más documentación sobre Java y Android. Depende de lo quieras ya puedes elegir.

      Saludos

  1. Me ayudo mucho este blog, ahora lo que estoy buscando es que me salga una pantalla aun que el telefono este bloqueado, es decir, algo asi como cuando programas una alarma en el relog y cuando llega la hora comienza a sonar y aunq ue el telefono este bloquedo te manda la pantalla que te permite cancelar la alarma

    gracias por su ayuda
    Saludos

Los comentarios están cerrados.

Volver arriba
Esta web usa cookies para su correcto funcionamiento. No hay cookies de publicidad, aunque algunos de los contenidos mostrados (videos o documentos insertados) están alojados en servicios externos (Youtube, Vimeo, Box...) que sí pueden implementar sus propias cookies. También se ha incluido en pruebas un Agente AI que incluye sus propias cookies   
Privacidad