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 :

Passage d'une activité à une autre


Sujet :

Android

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 26
    Points
    26
    Par défaut Passage d'une activité à une autre
    Bonjour à tous,
    j'ai une application qui tourne tout le temps sur une tablette, ce que j'aimerai faire est au bout de 4min d'inactivité (personne ne touche l’écran), je lance une activity avec des photos.
    comment je pourrai faire svp?

    Merci

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Salut, je débute mais il me semble qu'avec un timertask tu peux dire à une boucle d'attendre X minutes, et ensuite faire une boucle pour dire "quand timertask vaut 0, lances l'activité".

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    salut, merci pour ta réponse,
    j'ai pensé à mettre un timer, mais la seconde activity se déclenchera au bout de 4min même si quelqu'un est entrain de manipuler l'application non?

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Dans ce cas il suffirait de réinitialiser le compteur sur les onitemclick, onclick, onlongclick etc, y'a peut-être une meilleure façon de faire mais je ne la connais pas

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Voila j'ai fait un Timer qui fonctionne bien, mais comment détecter l'inactivité de mon application, est ce que quelqu'un a une idée??

  6. #6
    Expert éminent

    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
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Simplement réagir sur les "onTouchEvent"...
    Ne pas les catcher (toujours passer au parent), mais réinitialiser le timer...
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Comment je pourrai faire stp, car si je met mon Timer dans onTouchEvent, le timer se déclenchera des que je toucherai l’écran, donc la deuxième activité se lancera même si j'utilise encore l'application.
    Et moi ce que je veux est au bout de X temps d'inactivité lancé la deuxième activité.

    Merci.

  8. #8
    Expert éminent

    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
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Je ne comprends pas il faut reseter le timer sur le onTouch... pas le démarrer...

    Bon... allez... un petit tour dans la documentation ... search (User Interaction) et hop....
    http://developer.android.com/referen...rInteraction()

    Voila comment je ferai (à essayer)
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    class MonActivity extends Activity
    {
         class TimerTask implements Runnable
         {
               public void run()
               {
                   Intent slideshow = new Intent(MonActivity.this,...);
                   startActivity(....slideshow);
               }
        }
     
        private Handler handler;
        private TimeTask task;
     
        public void onCreate(...) {
           setContentView(...);
           this.handler = new Handler();
           this.task = new TimerTask();
        }
     
        public void onPause() {
           removeTimerTask();
        }
     
        public void onResume() {
           scheduleTimerTask();
        }
     
        @Override
        public void onUserInteraction(){
             removeTimerTask();
             scheduleTimerTask();
        }
        void removeTimerTask()
        {
             this.handler.removeCallbacks(this.task);
        }
        void scheduleTimerTask()
        {
             this.handler.postDelayed(this.task,XXXXX);
        }
    }
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  9. #9
    Expert éminent

    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
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Après un peu de reflechissement ^^ voici deux trois trucs qui me sont venus à l'esprit:

    Je ne suis pas sur que remove/schedule soit très efficace....
    Donc voici une autre idée:

    Dans le onUserInteraction(), juste stocker la date courante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.lastUserInteraction = System.currentTimeMillis();
    Dans le TimerTask, vérifier la date:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    long now = System.currentTimeMillis();
    if (now - this.lastUserInteraction > XXXX) {
       MonActivity.this.postAt(this,XXXX + this.lastUserInteraction);
    } else {
       // start activity as before
    }
    Pourquoi c'est mieux ? Parcequ'on ne touche le handler que toutes les XXXX secondes, et que le onUserInteraction() est super rapide.... du coup:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    class MonActivity extends Activity
    {
        private static final long DELAY = 10000;
     
        private long lastUserInteraction;
        private Handler handler;
        private TimeTask task;
     
        public void onCreate(...) {
           setContentView(...);
           this.handler = new Handler();
           this.task = new Runnable() {
              public void run() { MonActivity.this.onTimerEnded(); }
           };
        }
     
        public void onPause() {
           removeTimerTask();
        }
     
        public void onResume() {
           this.lastUserInteraction = System.currentTimeMillis();
           scheduleTimerTask();
        }
     
        @Override
        public void onUserInteraction(){
             this.lastUserInteraction = System.currentTimeMillis();
        }
     
        public void onTimerEnded() {
             long now = System.currentTimeMillis();
             if (now > this.lastUserInteraction + DELAY) {
                 // START NEW ACTIVITY !
             } else {
                scheduleTimerTask();
             }
         }
     
        void removeTimerTask()
        {
             this.handler.removeCallbacks(this.task);
        }
        void scheduleTimerTask()
        {
             this.handler.postAtTime(this.task,this.lastUserInteraction + DELAY);
        }
    }
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Merci beaucoup nicroman pour ton aide, ça marche

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 10/06/2013, 18h05
  2. passage d'une arraylist d'une activité à une autre
    Par lupus83 dans le forum Android
    Réponses: 2
    Dernier message: 31/03/2011, 11h41
  3. Réponses: 6
    Dernier message: 29/09/2006, 10h18
  4. Passage de paramètre d'une classe à une autre
    Par semenzato dans le forum C++
    Réponses: 3
    Dernier message: 21/09/2005, 13h59
  5. [C#] Passage de valeur d'une fenêtre à une autre
    Par groum999 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/09/2004, 14h12

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