Je veux utiliser un gestionnaire d'alarmes dans mon activité. J'ai mis en place une alarme dans la méthode onPause de l'activité principale comme ceci,
Intent intent= new Intent(namaz_vakti_activity.this, namaz_vakti_activity.class);
PendingIntent sender = PendingIntent.getActivity(this, 1234567, intent,Intent.FLAG_ACTIVITY_NEW_TASK);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
eltime=Calendar.getInstance().getTime().getHours()*60+Calendar.getInstance().getTime().getMinutes();
eltime=(long)(Sun_Rise*60)-eltime;
if (eltime<0)
eltime=eltime+24*60;
eltime=eltime-pre_time;
if (eltime<=0)
eltime=eltime+24*60;
if (uyandirma)
{
am.set(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis()+eltime*60000, sender);
Toast.makeText(this,"Uyandirma saati "+ConvertTime(Sun_Rise-pre_time/60.0),Toast.LENGTH_SHORT).show();
}
else
{
am.cancel(sender);
}
namaz_vakti_activity est mon activité principale. Les méthodes onPause et onResume lui appartiennent.
J'utilise également un wakelock à la méthode onResume pour empêcher le mode sommeil de se produire.
pm = (PowerManager)this.getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK |PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE,"namaz_vakti_activity");
wl.acquire();
Le but principal de ce code est de relancer mon activité principale (namaz_vakti_activitiy) à un moment précis. Si l'appareil n'est pas en mode veille, le code fonctionne bien. Cependant, s'il est en mode sommeil, il donne une erreur et cesse de fonctionner. Je pense que la solution est simple, et je suis dans le blidness de code.