Aller au contenu

Désactivation d'alarmes sous Android


manu001

Recommended Posts

Bonjour,

J'ai besoin d'implémenter un gestionnaire d'alarme pour une application que je développe.

Sachant que c'est la première je recontre certaines difficultés.

J'ai regardé l'application "Open Alarm Clock" (https://play.google.com/store/apps/details?id=za.co.neilson.alarm) dont le développeur a publier le code source sur Github:

https://github.com/SheldonNeilson/Android-Alarm-Clock

Je n'arrive pas à comprendre comment les alarmes sont désactivées.

Cette application est assez basique (mais fonctionnelle). On peut y définir certaines alarmes en activant ou désactivant celles que l'on désire.

Alarm cancellation (or activation) is managed by function onstartCommand in za.co.neilson.alarm.service.AlarmService

La désactivation d'une alarme est gérée par la fonction onstartCommand dans la classe za.co.neilson.alarm.service.AlarmService.java

Voici le bout de code qui gère cette désactivation (dans le else):

This is the piece of code that doing it (else condition):

Context monContexte = getApplicationContext();
Intent myIntent = new Intent(getApplicationContext(), AlarmAlertBroadcastReciever.class);
myIntent.putExtra("alarm", new Alarm());

PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, myIntent,PendingIntent.FLAG_CANCEL_CURRENT); 
AlarmManager alarmManager = (AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);

alarmManager.cancel(pendingIntent);

I can't understand, how Android knows which alarm to disable if you have several alarms. There is no id. The getApplicationContext gives the context of the global application, and Alarm object in extra is empty.

Je n'arrive pas à comprendre comment Android sait quelle alarme est à désactivé si il y en a plusieurs. Il n'y a pas de gestion d'id à ce nivreau.

la fonction getApplicationContext retour le contexte global de l'application.

L'objet Alarm passé dans les extras est vide.

C'est fou, je me tire les cheveux mais je n'arrive pas à comprendre. Je suis sur que l'explication est toute bête. Mais je dois l'être encore plus.

Merci pour votre aide.

Manu

Lien vers le commentaire
Partager sur d’autres sites

La désactivation d'une alarme se fait en fournissant à la méthode cancel un Intent (via le PendingIntent) identique à celui qui avait été fourni lors de l'enregistrement de l'alarme.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...