Bonjour,
Je veux récupérer les données de l'accéléromètre et le gyromètre exactement au même moment. Avez-vous une aidé comment faire.
Merci.
A+
Version imprimable
Bonjour,
Je veux récupérer les données de l'accéléromètre et le gyromètre exactement au même moment. Avez-vous une aidé comment faire.
Merci.
A+
Je ne pense pas que ce soit possible puisque les capteurs sous android fonctionne à base d'un listener.
C'est le sensor qui déclenche ton listener quand ses données ont changées et non pas toi qui l'intérroge à intervalle régulier.
Il me parrait donc difficile de synchroniser les deux capteurs.
En revanche tu peux conditionner l'utilisation des données reçues des 2 capteurs pour ne les utiliser que lorsque les deux ont des nouvelles valeurs
J'aurais envie de dire que c'est peut-être possible :aie:
Je n'ai pas mon code d'accéléromètre sous la main mais j'ai trouvé celui-ci.
http://mathias-seguy.developpez.com/...iser-capteurs/
On passe par un SensorEventListener.
Remarquez l'objet Sensor accelerometer.
Ensuite il récupère les valeurs x,y,z dans onSensorChanged (que ce soit l'accéleromètre ou le gyro).
Il faudrait tester :aie:
Code:
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 public class SensorAccelerationTutoActivity extends Activity implements SensorEventListener { // Déclaration de l'attribut en tant qu'attribut de l'activité // Le sensor manager (gestionnaire de capteurs) SensorManager sensorManager; // L'accéléromètre Sensor accelerometer; /***************************************************************************/ /** Manage life cycle ******************************************************/ /***************************************************************************/ // Appelé à la création de l'activité. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Faire quelque chose // Gérer les capteurs*: // Instancier le gestionnaire des capteurs, le SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); // Instancier l'accéléromètre accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); // Faire d'autres trucs } @Override protected void onPause() { // unregister the sensor (désenregistrer le capteur) sensorManager.unregisterListener(this, accelerometer); super.onPause(); } @Override protected void onResume() { /* Ce qu'en dit Google*dans le cas de l'accéléromètre : * «* Ce n'est pas nécessaire d'avoir les évènements des capteurs à un rythme trop rapide. * En utilisant un rythme moins rapide (SENSOR_DELAY_UI), nous obtenons un filtre * automatique de bas-niveau qui "extrait" la gravité de l'accélération. * Un autre bénéfice étant que l'on utilise moins d'énergie et de CPU.*» */ sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_UI); super.onResume(); } /********************************************************************/ /** SensorEventListener*************************************************/ /********************************************************************/ @Override public void onAccuracyChanged(Sensor sensor, intaccuracy) { // Rien à faire la plupart du temps } @Override public void onSensorChanged(SensorEvent event) { // Récupérer les valeurs du capteur floatx, y, z; if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { x = event.values[0]; y = event.values[1]; z = event.values[2]; } }
La ligne qui tue:
Pourquoi tester si c'est connu d'avance!Code:if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
Ca parait effectivement compliqué mais peut-être que des librairies comme RxJava peuvent aider...