salut a tous. comment détecter si un téléphone Androïde est en mouvement ou immobile ?
salut a tous. comment détecter si un téléphone Androïde est en mouvement ou immobile ?
peut être une solution de capter les cordonnées gps lal et long et de créer un thread que teste s'il y a un changement entre les cordonnées actuelles et celle précedents si oui --> mobile en mouvement si nn mobile immobile
je ne sais pas si la bonne solution ou nn .
Salut,
Encore mieux utiliser les capteurs d'accélération.
Ou même on peut aller jusqu'à utiliser la nouvelle API de reconnaissance d'activité : http://developer.android.com/trainin...cognition.html
Ce service te permet de savoir si tu es sur ton vélo/en voiture/immobile/en train de secouer ton téléphone/...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 int IN_VEHICLE The device is in a vehicle, such as a car. String NULL int ON_BICYCLE The device is on a bicycle. int ON_FOOT The device is on a user who is walking or running. int STILL The device is still (not moving). int TILTING The device angle relative to gravity changed significantly. int UNKNOWN Unable to detect the current activity.
Ta question peut avoir des réponses qui vont pas avec tes attentes. Tu peux vouloir par exemple savoir si le téléphone porté par un utilisateur est en mouvement avec lui (peut être dans sa poche). Je te recommande là de te te pencher sur la solution de Simon.
Tu peux aussi vouloir savoir si un téléphone est immobile (posé sur un table quelque part) ou si un utilisateur l'a en main en train de le bouger.
Tu peux t'y prendre alors comme suit si c'est ce que tu veux.
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 float motion = (float)2; //Constante pour définir l'intensité du mouvement float x,y,z = 0; float lx,ly,lz = 0; long lastUpdate=-1; long curtime=-1; //déclares un gestionnaire de capteur SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE); //enregistres un listener pour ton gestionnaire de capteur (ici on teste directement si le telephone supporte le capteur que tu souhaite manipuler) boolean accelSupport = sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME); if (!accelSupport){ sm.unregisterListener(this,sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)); } //Ici le code qui permet de détecter si le phone est a bougé. @Override public void onSensorChanged(SensorEvent event) { switch (event.sensor.getType()) { case Sensor.TYPE_ACCELEROMETER: if isInMotion(event){ //Faire le traitement que tu souhaites quand ton téléphone bouge }; break; } } public boolean isInMotion(SensorEvent e){ curtime = System.currentTimeMillis(); x = e.values[0]; y = e.values[1]; z = e.values[2]; if((curtime-lastUpdate)>100){ lx=x; ly=y; lz=z; lastUpdate =curtime; } return ((Math.abs(lx-x)>motion)||(Math.abs(ly-y)>motion)||(Math.abs(lz-z)>motion)); }
salut a tous. SVP , j'aimerai plus d'ample explications sur la méthode que vous m'avez fourni surtout sur l’intensité du mouvement
Partager