Artigo WebMobile 24 - Agendamento de execução no Android

Este artigo aborda o tema Agendamento de execução no Android através da criação de uma aplicação que dispara alarmes em horários pré-programados.

 

Esse artigo faz parte da revista WebMobile edição 24. Clique aqui para ler todos os artigos desta edição

 

Clique aqui para ler este artigo em PDF

 

 

 

Android

Agendamento de execução no Android

Desenvolvendo uma aplicação de alarmes

 

De que se trata o artigo:

Este artigo aborda o tema Agendamento de execução no Android através da criação de uma aplicação que dispara alarmes em horários pré-programados. Aqui vamos ver como agendar estes alarmes no sistema operacional e como armazená-los em banco de dados.

 

Para que serve:

Desenvolver aplicações onde certas rotinas executam em um determinado horário ou data. Sendo possível agendar rotinas de leitura de banco, envio de e-mail, download de arquivos de mídia e serviços de áudio, por exemplo.

 

Em que situação o tema é útil:

Quando se deseja programar a execução de uma atividade ou serviço para um momento específico no tempo, como iniciar um download durante a madrugada ou despertar você com sua música predileta pela manhã.

 

Em várias situações precisamos agendar a execução de uma aplicação e às vezes isto deve acontecer mesmo que o handset esteja “dormindo”. Exemplos comuns são o alarme ou despertador do celular, uma agenda de atividades que lhe avisa quando é chegada a hora de realizá-las ou até mesmo um processo de download ou atualização que deve ser rodado à noite.

Neste artigo você vai descobrir como agendar execuções e como programá-las com o Android, acompanhando a construção de uma aplicação de agendamento de atividades.

Conhecendo a aplicação

Para abordar o assunto proposto será desenvolvida uma aplicação de Alarmes capaz de avisar ao usuário sobre uma atividade qualquer, como ligar para um amigo ou lembrar o aniversário de alguém.

Muitos recursos podem ser utilizados em uma aplicação como esta. Um bom exemplo inicial é definir o tempo de agendamento no período de 24 horas, não permitir a seleção de sons de alarme e a adição de informações sobre o evento. Com isto, teremos uma aplicação capaz de alertar o usuário que determinada hora do presente dia chegou.

Focando neste objetivo, seremos capazes de compreender a essência do que nos propomos a fazer (vide Figura 1).

Para tanto, será utilizado o android.app.AlarmManager, uma classe que fornece acesso aos serviços de alarme do sistema. Ela possibilita o agendamento de execução de uma aplicação para algum ponto no futuro. Quando o alarme ocorre, é feito o broadcast do Intent registrado, automaticamente inicializando a aplicação alvo se esta não estiver rodando (ler Nota DevMan 1). Alarmes registrados são ignorados quando o dispositivo está dormindo (mas podem opcionalmente acordar o dispositivo), e são apagados caso for desligado ou reiniciado. Para outras operações de agendamento (ticks, timeouts, etc.) é mais vantajoso o uso de android.os.Handler.

 

Nota DevMan 1. Os alarmes nesta aplicação são definidos como Intents no Android. Todo Intent precisa ser registrado no sistema. Este registro é feito e mantido pelo Android, não necessitando de qualquer persistência fornecida pelo desenvolvedor.

 

Tendo em vista que os alarmes registrados são apagados ao desligar ou reiniciar o handset, é necessária uma forma persistente de armazenamento destes alarmes. Para isso, nada melhor do que o SQLite para resolver o problema.

Figura 1. Ocorrência do alarme às 9 horas da manhã

 

Então, para desenvolver nossa aplicação, precisaremos de três atividades, uma para listar os alarmes agendados (possibilitar o acesso ao cadastro, edição e exclusão de alarmes), outra para efetivamente agendar o alarme e, finalmente, uma atividade representativa do alarme (cuja tela é apresentada na Figura 1).

Além destas atividades estarão presentes outras duas classes destinadas ao gerenciamento do banco de dados e utilidades (entre elas o agendamento de execução). Com a aplicação estudada, vamos ao desenvolvimento.

Começando o projeto

A primeira tarefa a realizar é a criação do projeto. Para tanto, suponho que você esteja fazendo uso do Eclipse com ADT. Este plugin lhe pergunta o nome do projeto, qual o pacote e a atividade principal do mesmo. Por hora vamos nomear o projeto de AlarmProject, fornecer como pacote com.webmobile.alarm e como atividade principal AlarmHome.

Ao confirmar a criação do projeto, o arquivo AndroidManifest.xml será criado com as definicões primárias para o funcionamento da aplicação. Não podemos esquecer que utilizaremos outras atividades além desta que acabamos de criar, e para não editar várias vezes o mesmo arquivo, desde já deixamos tudo preparado. Modifique o AndroidManifest.xml de sua aplicação para que equivalha à Listagem 1.

 

Listagem 1. Código do arquivo AndroidManifest.xml

01.<?xml version="1.0" encoding="utf-8"?>

02.<manifest xmlns:android="http://schemas.android.com/apk/res/android"

03.package="com.webmobile.alarm"

04.android:versionCode="1"

05.android:versionName="1.0.0""

[...] continue lendo...

Artigos relacionados