Fazendo um programa de alarme - não funciona
Eu estou tentando fazer um programa de alarme. Até agora, escrevi uma atividade na qual o usuário pode selecionar a hora em que deseja que o alarme seja acionado. Isso está funcionando bem. Agora eu preciso usar o gerenciador de alarmes para dizer ao sistema operacional para chamar um pouco do meu código em um determinado ponto no futuro. Apenas para testar isso de uma maneira crua, adicionei o seguinte código que é executado quando pressiono um botão de teste na minha atividade principal:
Intent intent = new Intent(getApplicationContext(), to_call_when_alarm_goes_off.class);
PendingIntent pIntent = PendingIntent.getBroadcast(getApplicationContext(),0, intent, 0);
AlarmManager alarms = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarms.cancel(pIntent);
alarms.setRepeating(
AlarmManager.RTC_WAKEUP,
System.currentTimeMillis()+1000,
AlarmManager.INTERVAL_DAY,
pIntent);
Isso deve significar que algum código chamado to_call_when_alarm_goes_off será executado um segundo depois que eu pressionar o botão .... Agora, isso é onde estou um pouco confuso. Não sei bem como / onde configurar "to_call_when_alarm_goes_off". O que eu fiz foi simplesmente adicionar uma nova classe ao meu projeto da seguinte forma:
package com.mycompany.alarmprogram;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class to_call_when_alarm_goes_off extends BroadcastReceiver
{
@Override
public void onReceive(Context arg0, Intent arg1)
{
// TODO Auto-generated method stub
Log.i("ALARM","TIME TO WAKE UP!!!");
}
}
Todo o código é compilado e, quando pressiono o botão, todo o código do primeiro trecho de código é executado sem travar - mas, um segundo depois, o código do receptor de broadcast não é executado. Claramente eu estou entendendo mal alguma coisa.