I have a problem with AlarmManager
, for example, if I set an Alarm to 16:00 and another to 16:30 only the second is generating the notification, different from the second. I made some rather confusing conversions to manipulate the schedule, but it's certainly working. Here is the section where you saved the Alarm information:
//ATIVAÇÃO DO ALARME BASEADO NO HORÁRIO QUE O USUÁRIO DESEJAR
Intent intent = new Intent("ALARME_DISPARADO");
PendingIntent p = PendingIntent.getBroadcast(this, 0, intent, 0);
//cal = Calendar.getInstance();
//Abaixo faço a conversão das horas e minutos digitados pelo usuário para Millis e depois somo tudo
horasint = new SimpleDateFormat("HH");//Pegando somente o valor "hora"
resulhora = new Date(System.currentTimeMillis());
minutosint = new SimpleDateFormat("mm");//Pegando somente o valor "minuto"
resulminutos = new Date(System.currentTimeMillis());
String inthora = ""+horasint.format(resulhora);//Salvando o valor hora em uma string
String intminutos = ""+minutosint.format(resulminutos);//Salvando o valor minuto em uma string
long horamilli = Integer.parseInt(inthora) * 3600000;//Convertendo a string hora para inteiro e convertendo para Millisegundos
long minutosmilli = Integer.parseInt(intminutos) * 60000;//Convertendo a string minuto para inteiro e convertendo para Millisegundos
long paraMEIA_NOITE = (24*3600000) - (horamilli + minutosmilli);//Subtraindo 24h do horário atual em Millisegundos para saber quanto tempo falta para 00:00h
long x = System.currentTimeMillis() - (24*3600000); //Subtraindo o horário atual por 24h em Milisegundos
long y = x + paraMEIA_NOITE;//Adicionando quanto falta para meia noite porém está incompleto faltando a parte que lhe pedi ajuda agora
//COLOCAR CONDIÇÕES AQUI PARA CASO SEJA NO DIA SEGUINTE, OU DOIS DEPOIS, ASSIM SUCESSIVAMENTE
if(auxdia == day)//Domingo - Domingo
{
long z = y + (Integer.parseInt(edhorario.getText().toString())*3600000) + (Integer.parseInt(edminutos.getText().toString())*60000);//Adicionando a hora que o usuário digitou
cal.setTimeInMillis(z);
long teste = z;
Toast.makeText(this, "- Hora Marcada: "+teste+"\n\n- Hora Atual: "+System.currentTimeMillis(), Toast.LENGTH_LONG).show();
}
else if(auxdia == day + 1)//Tal dia - Um dia depois
{
long z = y + (24*3600000) + (Integer.parseInt(edhorario.getText().toString())*3600000) + (Integer.parseInt(edminutos.getText().toString())*60000);//Adicionando a hora que o usuário digitou
cal.setTimeInMillis(z);
long teste = z;
Toast.makeText(this, "- Hora Marcada: "+teste+"\n\n- Hora Atual: "+System.currentTimeMillis(), Toast.LENGTH_LONG).show();
}
else if(auxdia == day + 2)//Tal dia - Dois dias depois
{
long z = y + (2*(24*3600000)) + (Integer.parseInt(edhorario.getText().toString())*3600000) + (Integer.parseInt(edminutos.getText().toString())*60000);//Adicionando a hora que o usuário digitou
cal.setTimeInMillis(z);
long teste = z;
Toast.makeText(this, "- Hora Marcada: "+teste+"\n\n- Hora Atual: "+System.currentTimeMillis(), Toast.LENGTH_LONG).show();
}
else if(auxdia == day + 3)//Tal dia - Três dias depois
{
long z = y + (3*(24*3600000)) + (Integer.parseInt(edhorario.getText().toString())*3600000) + (Integer.parseInt(edminutos.getText().toString())*60000);//Adicionando a hora que o usuário digitou
cal.setTimeInMillis(z);
long teste = z;
Toast.makeText(this, "- Hora Marcada: "+teste+"\n\n- Hora Atual: "+System.currentTimeMillis(), Toast.LENGTH_LONG).show();
}
else if(auxdia == day + 4)//Tal dia - Quatro dias depois
{
long z = y + (4*(24*3600000)) + (Integer.parseInt(edhorario.getText().toString())*3600000) + (Integer.parseInt(edminutos.getText().toString())*60000);//Adicionando a hora que o usuário digitou
cal.setTimeInMillis(z);
long teste = z;
Toast.makeText(this, "- Hora Marcada: "+teste+"\n\n- Hora Atual: "+System.currentTimeMillis(), Toast.LENGTH_LONG).show();
}
else if(auxdia == day + 5)//Tal dia - Cinco dias depois
{
long z = y + (5*(24*3600000)) + (Integer.parseInt(edhorario.getText().toString())*3600000) + (Integer.parseInt(edminutos.getText().toString())*60000);//Adicionando a hora que o usuário digitou
cal.setTimeInMillis(z);
long teste = z;
Toast.makeText(this, "- Hora Marcada: "+teste+"\n\n- Hora Atual: "+System.currentTimeMillis(), Toast.LENGTH_LONG).show();
}
else if(auxdia == day + 6)//Tal dia - Seis dias depois
{
long z = y + (6*(24*3600000)) + (Integer.parseInt(edhorario.getText().toString())*3600000) + (Integer.parseInt(edminutos.getText().toString())*60000);//Adicionando a hora que o usuário digitou
cal.setTimeInMillis(z);
long teste = z;
Toast.makeText(this, "- Hora Marcada: "+teste+"\n\n- Hora Atual: "+System.currentTimeMillis(), Toast.LENGTH_LONG).show();
}
//cal.add(Calendar.SECOND, 0);
AlarmManager alarme = (AlarmManager) getSystemService(ALARM_SERVICE);
alarme.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), p);
//alarme.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 10000, p);