[Desenvolvimento] Como agendar alarmes e lembretes através da APP

2

Olá pessoal, tudo bom?

Neste post, escrevo sobre como agendar alarmes e lembretes no Windows Phone através de uma APP que você esteja desenvolvendo. A técnica é bastante simples, pois podemos contar com classes praticamente prontas para esse fim, mas antes de iniciarmos a codificação, é importante entendermos qual a diferença entre ALARMES e LEMBRETES para o WP.

Alarmes (Alarm): Quando você agenda um alarme para o Windows Phone, isso significa dizer que você está planejando ser avisado sobre algum evento que você não pode esquecer ou deixar de fazer de jeito nenhum. Seu funcionamento é parecido ao de um despertador, ou seja, ficará emitindo avisos sonoros (o desenvolvedor pode escolher qual som irá tocar) ininterruptamente até que o dono do telefone tenha que interferir e então notar a mensagem de aviso que lhe está sendo passado.

alarm-wp

Lembretes (Reminder): Os lembretes são parecidos com os alarmes, mas o aviso sonoro ocorre apenas uma vez no momento em que o mesmo foi agendado, porém permite que o usuário reagende o lembre para um novo período de tempo e também lhe é dada a opção de tocar no lembrete e então ser redirecionado para uma determinada parte da APP que gerou o lembrete, por exemplo, caso você estivesse utilizando um leitor de RSS para ler alguma notícia e decidisse agendar a leitura de tal notícia para mais tarde, nesse caso, o desenvolvedor poderia preparar o lembrete para permitir que quando o mesmo fosse disparado pelo agendamento o usuário pudesse tocá-lo para ser direcionado diretamente para a porção da APP que permitiria a leitura da notícia agendada.

reminder-wp

Bem, agora que entendemos a diferença entre alarmes e lembretes, vamos verificar como codifica-los:

Implementando alarmes

1
2
3
4
5
6
7
8
9
10
11
private void btnAlarm_Click(object sender, RoutedEventArgs e)
{
  Alarm alarm = new Alarm("Alarm")
  {
    BeginTime = DateTime.Now.AddMinutes(1),
    Content = "Exemplo de Alarme !!!",
    RecurrenceType = RecurrenceInterval.None,
    Sound = new Uri("/Assets/AirHorn.mp3", UriKind.Relative)
  };
  ScheduledActionService.Add(alarm);
}

Implementando lembretes

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
private void btnReminder_Click(object sender, RoutedEventArgs e)
{
  var schedule = ScheduledActionService.Find("Lembrete");
  if (schedule == null)
  {
    Reminder reminder = new Reminder("Lembrete")
    {
      BeginTime = DateTime.Now.AddSeconds(30),
      Title = "Blog do Eduardo H. Rizo",
      Content = "Teste de Lembrete...",
      RecurrenceType = RecurrenceInterval.None,
      NavigationUri = new Uri("/ReminderPage.xaml?msg=Detalhes do Lembrete", UriKind.Relative)
    };
    ScheduledActionService.Add(reminder);
  }
  else
  {
    if (MessageBox.Show("O lembrete já está agendado. Deseja substituir?", "Aviso", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
    {
      Reminder reminder = (Reminder)schedule;
      reminder.BeginTime = DateTime.Now.AddSeconds(30);
      reminder.Content = "Teste de Lembrete Alterado...";
      ScheduledActionService.Replace(reminder);
    }
  }
}

disketteDownload do exemplo

 

Grande abraço !
Eduardo Henrique Rizo (@eduardorizo)

Post Relacionado: 

Fonte: Blog do Eduardo H. Rizo

Share.

About Author

Bacharel em Ciência da Computação pela FIPP/Unoeste, Pós-Graduado em Desenvolvimento de Sistemas Web, Segurança da Informação e Avaliação do Ensino e da Aprendizagem, Professor universitário e responsável pelo setor de desenvolvimento de sistemas web da Universidade do Oeste Paulista. MCP e MCPS pela Microsoft e nas horas vagas dedica um pouco do seu tempo escrevendo posts técnicos sobre desenvolvimento de sistemas web, windows phone, gerenciamento de servidores e outros assuntos para a comunidade.

  • Igor Paes

    OFF depois do WP8.1 meu alarme e os lembretes do calendário pararam de funcionar, e quando funcionam, mostram as atividades duplicadas. Mais alguém está tendo esse problema?

    • Henrique Almeida

      Duplicada aqui só as fotos, desde o WP 8.0.