IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Déclencher un Broadcast Receiver à 23h59 précise


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Par défaut Déclencher un Broadcast Receiver à 23h59 précise
    Bonjour,

    Je souhaite effectuer une action journalière à 23h59.

    Existe-t-il un Broadcast Receiver sur l'heure ? D'un autre côté, je trouve que ça peut être un peu trop consommateur d'écouter chaque minute non ?

    Quelqu'un saurait-il m'indiquer une façon efficace de gérer cela ?

    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 216
    Par défaut
    salut,

    tu peux faire une alarme répétitive en mettant comme intervale une journée:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Intent intent = new Intent(this,<ta classe BroadcastReceiver>.class );
     
    PendingIntent pending_intent = PendingIntent.getBroadcast(this, 0, intent, 0);
     
    AlarmManager alarme_manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    alarme_manager.setRepeating(AlarmManager.RTC_WAKEUP, date.getTimeInMillis(), AlarmManager.INTERVAL_DAY , pending_intent);

    ta date doit etre parametré sur 23H59.

    après tu crée une classe qui va recevoir ton intent :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class <nom de ta classe> extends BroadcastReceiver{
     
    	@Override
    	public void onReceive(Context cont, Intent intent) 
            {
                <tes actions>
            }

    le nom de ta classe doit etre celui que tu as mis dans ton intent.

    puis tu ajoute dans ton manifest:

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <receiver android:name="<le chemin vers ta classe BroadcastReceiver>" android:process=":remote" />

    et normalement c'est bon.

    tiens au jus.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Par défaut
    Bonjour et merci de la réponse,
    je n'ai pas encore testé parce que j'ai deux questions puisque l'on parle d'alarme :
    - est-ce qu'il y a l’icône du réveil dans la barre de notification ?
    - est ce que le téléphone sonne ?

    Sinon, j'ai pensé a détecter le changement de jour, c'est à dire recevoir une notification lorsqu'on change de date à minuit. Dans ce cas j'aurais pris la date et l'heure de l'évènement - 1 minute, ce qui me ramène à 23h59.
    Mais je n'ai pas trouvé comment détecter ce changement de date

    est-ce que cette solution aurait été meilleure ?

    Je teste celle ci tout de même

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 216
    Par défaut
    bonjour,

    il n'y a pas de raison que ton alarme que tu crée dans ton appli affiche une notification ( sauf si tu dit au système d'afficher une notification (que se soit réveil ou autre)).

    il n'y a pas plus de raison que ton téléphone sonne a moins que tu dise au système de faire sonner ton téléphone lors de l’exécution de ton alarme.

    en fait, quand tu crée ton réveil c'est l'application qui dit d'afficher une notification, puis lorsque le système diffuse l'intent a l'heure de ton AlarmManager, ton application pour le réveil exécute le code de la classe de l'intent qui fait sonner ton téléphone.

    dans ton appli, si tu lui dit pas d'afficher une notification, ni de faire sonner ton téléphone, il y a aucune raison qu'il le fasse.

    après pour ta deuxième solution, je vois pas comment faire pour "récupérer" le fait que l'on change de date sans passer par une AlarmManager.
    en plus, si tu écoute le fait que l'on change de date, c'est au moment du changement de date, donc tu peux pas exécuter a -1 minute puisque c'est déjà passé.

    donc je pense pas que ce soit une meilleure solution puisque je pense pas qu'elle puisse fonctionner.

    après si tu veux réduire la conso, tu peux utiliser :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    alarme_manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, date.getTimeInMillis(), AlarmManager.INTERVAL_DAY , pending_intent);

    mais ça peut décaler le déclenchement d' un quart d'heure je crois et je sais pas si ça consomme beaucoup moins.

    tiens au jus.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Par défaut
    D'accord je comprends mieux.

    Mais est ce que le fait de mettre "RTC_WAKEUP" va allumer le tel s'il est éteint ou est ce que l'évènement va être pris en compte mais le téléphone reste éteint ?

    Merci encore

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 216
    Par défaut
    re bonjour,

    ça va juste le faire sortir de la veille, si le téléphone es éteint ça ne fera rien.

    tu peux mettre "AlarmManager.RTC" il ne sortira pas le téléphone de la veille.

    tiens au jus.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Démarrer une activité à partir d'un broadcast receiver
    Par auxiliaire dans le forum Android
    Réponses: 2
    Dernier message: 31/05/2011, 12h23
  2. broadcast receiver activity
    Par jojo_ol76 dans le forum Android
    Réponses: 2
    Dernier message: 22/03/2011, 09h57
  3. Déclencher un script à une date précise
    Par sebac dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/09/2010, 21h32
  4. déclencher une action à une heure précise
    Par thor76160 dans le forum C#
    Réponses: 2
    Dernier message: 05/09/2009, 15h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo