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
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
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é".
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?
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
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??
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
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.
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
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:
Dans le TimerTask, vérifier la date:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 this.lastUserInteraction = System.currentTimeMillis();
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 long now = System.currentTimeMillis(); if (now - this.lastUserInteraction > XXXX) { MonActivity.this.postAt(this,XXXX + this.lastUserInteraction); } else { // start activity as before }
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
Merci beaucoup nicroman pour ton aide, ça marche
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager