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 :

Alarme répétitive ne se lance pas


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 Alarme répétitive ne se lance pas
    bonjour,

    j'ai un problème avec des alarmes répétitive, aucune des deux ne se lance. voici mon code:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    	public void action_valider(View v){
     
    		Intent action_debut = new Intent(this,alarme_receveur.class);
     
    		if(((RadioButton) findViewById(R.id.rdb_sonnerie_debut)).isChecked()){
    			action_debut.setAction("normal");	
    		}
     
    		if(((RadioButton) findViewById(R.id.rdb_vibreur_debut)).isChecked()){
    			action_debut.setAction("vibrate");	
    		}
     
    		if(((RadioButton) findViewById(R.id.rdb_silencieux_debut)).isChecked()){
    			action_debut.setAction("silent");	
    		}
     
    		chuut_alarm_debut = PendingIntent.getBroadcast(this, 0, action_debut, 0);
    		alarme_debut.setInexactRepeating(alarmtype, heure_debut.getTimeInMillis(), repetition, chuut_alarm_debut);
     
    		if(swh_selection.isChecked())
    		{
    			Intent action_fin = new Intent(this,alarme_receveur.class);
     
    			if(((RadioButton) findViewById(R.id.rdb_sonnerie_fin)).isChecked()){
    				action_debut.setAction("normal");	
    			}
     
    			if(((RadioButton) findViewById(R.id.rdb_vibreur_fin)).isChecked()){
    				action_debut.setAction("vibrate");	
    			}
     
    			if(((RadioButton) findViewById(R.id.rdb_silencieux_fin)).isChecked()){
    				action_debut.setAction("silent");	
    			}
     
    			chuut_alarm_fin = PendingIntent.getBroadcast(this, 0, action_fin, 0);
    			alarme_fin.setInexactRepeating(alarmtype, heure_fin.getTimeInMillis(), repetition, chuut_alarm_fin);
    		}
     
     
    	}

    aucune des alarmes ne marche et rien ne se passe, LogCat ne montre rien a l'heure des alarmes.

    j'ai testé avec des alarmes (simple) voici le code des alarmes:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
          alarme_debut.set(alarmtype, heure_debut.getTimeInMillis(), chuut_alarm_debut);
     
          alarme_fin.set(alarmtype, heure_fin.getTimeInMillis(), chuut_alarm_fin);

    la première alarme se lance bien mais la seconde fait planter l'appli, voici le LogCat au moment de la deuxième alarme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    03-24 02:14:00.033: W/Trace(2933): Unexpected value from nativeGetEnabledTags: 0
    03-24 02:14:00.043: D/AndroidRuntime(2933): Shutting down VM
    03-24 02:14:00.043: W/dalvikvm(2933): threadid=1: thread exiting with uncaught exception (group=0x40a70930)
    03-24 02:14:00.293: E/AndroidRuntime(2933): FATAL EXCEPTION: main
    03-24 02:14:00.293: E/AndroidRuntime(2933): java.lang.RuntimeException: Unable to start receiver com.bibi.chuut.alarme_receveur: java.lang.NullPointerException
    03-24 02:14:00.293: E/AndroidRuntime(2933): 	at android.app.ActivityThread.handleReceiver(ActivityThread.java:2383)
    03-24 02:14:00.293: E/AndroidRuntime(2933): 	at android.app.ActivityThread.access$1500(ActivityThread.java:141)
    03-24 02:14:00.293: E/AndroidRuntime(2933): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1310)
    03-24 02:14:00.293: E/AndroidRuntime(2933): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    03-24 02:14:00.293: E/AndroidRuntime(2933): 	at android.os.Looper.loop(Looper.java:137)
    03-24 02:14:00.293: E/AndroidRuntime(2933): 	at android.app.ActivityThread.main(ActivityThread.java:5039)
    03-24 02:14:00.293: E/AndroidRuntime(2933): 	at java.lang.reflect.Method.invokeNative(Native Method)
    03-24 02:14:00.293: E/AndroidRuntime(2933): 	at java.lang.reflect.Method.invoke(Method.java:511)
    03-24 02:14:00.293: E/AndroidRuntime(2933): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    03-24 02:14:00.293: E/AndroidRuntime(2933): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    03-24 02:14:00.293: E/AndroidRuntime(2933): 	at dalvik.system.NativeStart.main(Native Method)
    03-24 02:14:00.293: E/AndroidRuntime(2933): Caused by: java.lang.NullPointerException
    03-24 02:14:00.293: E/AndroidRuntime(2933): 	at com.bibi.chuut.alarme_receveur.onReceive(alarme_receveur.java:18)
    03-24 02:14:00.293: E/AndroidRuntime(2933): 	at android.app.ActivityThread.handleReceiver(ActivityThread.java:2376)
    03-24 02:14:00.293: E/AndroidRuntime(2933): 	... 10 more
    03-24 02:14:00.753: W/Trace(2911): Unexpected value from nativeGetEnabledTags: 0
    quand je lance mon appli dans l'émulateur, j'ai plein de ligne identique a la première, c'est grave docteur ?

    D'après ce que je comprend du LogCat, il y aurais un problème avec ma classe alarme_receveur, mais je comprend pas quoi et pourquoi ca marche pour la première et pas la deuxième.

    Merci de votre aide.

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Oui:
    com.bibi.chuut.alarme_receveur.onReceive(alarme_receveur.java:18)
    Dans le fichier "alarm_receveur.java", ligne 18, fonction "onReceive", utilisation d'un objet null.

  3. #3
    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,

    j'ai trouvé l'erreur, dans la condition if() pour créer la deuxieme alarme, l'intent que je modifié était toujours le premier. apres correction les alarmes simple fonctionnent toute les deux.

    quand je veux mettre des alarmes répétitives, aucune ne fonctionne. voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	int alarmtype = AlarmManager.RTC;
    	long repetition = AlarmManager.INTERVAL_DAY;
                 alarme_debut.setInexactRepeating(alarmtype, heure_debut.getTimeInMillis(), repetition, chuut_alarm_debut);
                 alarme_fin.setInexactRepeating(alarmtype, heure_fin.getTimeInMillis(), repetition, chuut_alarm_fin);
    dans le LogCat rien ne se passe.

    je pense que le problème vient de mon déclenchement des alarmes puisque c'est la seule chose qui change entre les alarmes simple qui fonctionnent et les alarmes répétitive (ou il faut modifier autre chose ? le manifeste peut être ?).

    Meri de votre aide.

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Attention au setInexactRepeating....il se peut que l'alarme se cale dans une fenetre de réveil du téléphone (15 minutes par exemple).

    La version "RTC" (pourquoi passer par une variable d'ailleurs ?) ne réveille d'ailleurs pas le device (l'alarme se déclenchera alors quand le device sera manipulé par l'utilisateur).


    Pour finir, attention, les "PendingIntent" définissent l'alarme... Donc chaque alarme doit avoir son propre "PendingIntent".
    En particulier le "requestCode" doit être différent pour chaque alarme.

  5. #5
    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
    Citation Envoyé par nicroman
    Attention au setInexactRepeating....il se peut que l'alarme se cale dans une fenetre de réveil du téléphone (15 minutes par exemple).
    pardon mais je comprend pas.

    Citation Envoyé par nicroman
    La version "RTC" (pourquoi passer par une variable d'ailleurs ?) ne réveille d'ailleurs pas le device (l'alarme se déclenchera alors quand le device sera manipulé par l'utilisateur).
    pour la version "RTC" je passe par une variable car c'est comme ca qu'ils font dans le livre que j'ai (Android 4 développement d'application avancée) et comme c'est la première fois que j'utilise des alarmes je fais exactement comme eux.
    dans le livre ils disent que ca déclenche la PendingIntent sans sortir l'appareil du mode veille. (je voulais pas "déranger" l'utilisateur lors du déclenchement)
    je vais testé avec RTC_WAKEUP.

    Citation Envoyé par nicroman
    Pour finir, attention, les "PendingIntent" définissent l'alarme... Donc chaque alarme doit avoir son propre "PendingIntent".
    c'est le cas.

    Citation Envoyé par nicroman
    En particulier le "requestCode" doit être différent pour chaque alarme.
    tu veux dire la classe de mon Intent ? c'est quoi le "requestCode" ?

    j'ai testé avec :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    		Intent action_debut = new Intent(this,alarme_receveur.class);
     
    		if(((RadioButton) findViewById(R.id.rdb_sonnerie_debut)).isChecked()){
    			action_debut.setAction("normal");	
    		}
     
    		if(((RadioButton) findViewById(R.id.rdb_vibreur_debut)).isChecked()){
    			action_debut.setAction("vibrate");	
    		}
     
    		if(((RadioButton) findViewById(R.id.rdb_silencieux_debut)).isChecked()){
    			action_debut.setAction("silent");	
    		}
     
    		chuut_alarm_debut = PendingIntent.getBroadcast(this, 0, action_debut, 0);
    		alarme_debut.setInexactRepeating(AlarmManager.RTC_WAKEUP, heure_debut.getTimeInMillis(), AlarmManager.INTERVAL_DAY, chuut_alarm_debut);
     
    		if(swh_selection.isChecked())
    		{
    			Intent action_fin = new Intent(this,alarme_receveur.class);
     
    			if(((RadioButton) findViewById(R.id.rdb_sonnerie_fin)).isChecked()){
    				action_fin.setAction("normal");	
    			}
     
    			if(((RadioButton) findViewById(R.id.rdb_vibreur_fin)).isChecked()){
    				action_fin.setAction("vibrate");	
    			}
     
    			if(((RadioButton) findViewById(R.id.rdb_silencieux_fin)).isChecked()){
    				action_fin.setAction("silent");	
    			}
     
    			chuut_alarm_fin = PendingIntent.getBroadcast(this, 0, action_fin, 0);
    			alarme_fin.setInexactRepeating(AlarmManager.RTC_WAKEUP, heure_fin.getTimeInMillis(), AlarmManager.INTERVAL_DAY, chuut_alarm_fin);
    		}

    j'ai défini l'heure de la première alarme a 15H49, et la deuxième a 15H50, les deux alarmes se sont effectuées a 15H52.30 ????

    j'ai testé avec setRepeating(), ca a bien fonctionné, mais dans mon livre ils disent que ca consomme plus de batterie, c'est vraiment beaucoup plus ?

    pourquoi ca marche pas bien avec setInexactRepeating() ?

    Merci de votre aide.

  6. #6
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 970
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 970
    Par défaut
    Tu dois faire un WAKE_UP sinon il ne se réveillera pas

    Au niveau du .Set de l'alarme, tu peux créer une seule alarme ou plusieurs (ce sera la même mais répétitive).

    Ton broadcast receiver doit être déclaré dans le manifest.

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

Discussions similaires

  1. Bootloader qui ne lance pas le Kernel
    Par Jb59 dans le forum Programmation d'OS
    Réponses: 2
    Dernier message: 01/08/2005, 22h29
  2. mmc.exe qui ne se lance pas
    Par r0d dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 27/04/2005, 17h11
  3. [Kylix] Ne se lance pas sous Fedora core 3
    Par John@EuroDevz dans le forum EDI
    Réponses: 3
    Dernier message: 14/02/2005, 16h27
  4. Mysql ne se lance pas problème de socket
    Par Riko dans le forum Installation
    Réponses: 5
    Dernier message: 05/02/2004, 09h28
  5. Envoi d'un mail en VBA: outlook ne se lance pas
    Par Hannibal dans le forum VBA Access
    Réponses: 4
    Dernier message: 01/06/2003, 15h24

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