Bonjour,
Je suis nouveau sur ce site et très peu habitué des forums, veuillez pardonner ma maladresse.
Je n'ai pas trouvé d'aide suffisante et comme je débute (genre vraiment !) en programmation sur Android Studio, je préfère poser ma question (quitte à être ridicule ^^)
Voilà j'ai codé une application sur Android Studio qui est censée me donner les relevés de l'accéléromètre, la vitesse et la position (par intégration grossière) de mon smartphone. Cependant quand je run l'application sur mon smartphone, elle s'ouvre et se referme tout de suite. Je ne m'y connais pas du tout dans le fond (mais je connais le C et le C++) donc je n'ai pas vraiment d'idée de l'endroit où je dois chercher pour résoudre ce problème.
Android Studio ne détecte pas d'erreur ou de warning.
J'ai déjà fait une application qui donne les données gyroscopique (accéléromètre et magnétomètre) du smartphone, et celle-là fonctionne. Je me demande si ça a un lien avec un "layout_constraint" ou "layout_relative"... (c'est la différence que j'ai remarqué entre mes deux applications..)
Je glisse le code de mon main_Activity ici et le layout en dessous :
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150 package com.example.gargaud.position; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.icu.text.DecimalFormat; import android.os.Build; import android.os.Bundle; import android.support.annotation.RequiresApi; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; import static java.lang.System.currentTimeMillis; public class MainActivity extends AppCompatActivity implements SensorEventListener { private SensorManager SM; Sensor accel; float[] Acc; float AccP[] = new float[3]; long TimeP; long Time = currentTimeMillis(); float Vitesse[] = new float[3]; float VitP[] = new float[3]; float Position[] = new float[3]; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SM = (SensorManager)getSystemService(SENSOR_SERVICE); accel = SM.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION); AccP = null; TimeP = 0; Vitesse = null; VitP = null; Position = null; } @RequiresApi(api = Build.VERSION_CODES.N) protected void onResume() { super.onResume(); SM.registerListener(this, accel, SensorManager.SENSOR_DELAY_UI); TextView xText, yText, zText; TextView axText, ayText, azText; TextView vxText, vyText, vzText; // Calcul de la vitesse Vitesse[0] = Vitesse[0] + SimpsonRule.integrate((double)TimeP,(double)Time,AccP[0],Acc[0]); Vitesse[1] = Vitesse[1] + SimpsonRule.integrate((double)TimeP,(double)Time,AccP[1],Acc[1]); Vitesse[2] = Vitesse[2] + SimpsonRule.integrate((double)TimeP,(double)Time,AccP[2],Acc[2]); // Calcul de la position Position[0] = Position[0] + SimpsonRule.integrate((double)TimeP,(double)Time,VitP[0],Vitesse[0]); Position[1] = Position[1] + SimpsonRule.integrate((double)TimeP,(double)Time,VitP[1],Vitesse[1]); Position[2] = Position[2] + SimpsonRule.integrate((double)TimeP,(double)Time,VitP[2],Vitesse[2]); // Assigner le text xText = (TextView) findViewById(R.id.xText); yText = (TextView) findViewById(R.id.yText); zText = (TextView) findViewById(R.id.zText); axText = (TextView) findViewById(R.id.axText); ayText = (TextView) findViewById(R.id.ayText); azText = (TextView) findViewById(R.id.azText); vxText = (TextView) findViewById(R.id.vxText); vyText = (TextView) findViewById(R.id.vyText); vzText = (TextView) findViewById(R.id.vzText); DecimalFormat f = new DecimalFormat(); f.setMaximumFractionDigits(2); xText.setText(f.format(Position[0])); yText.setText(f.format(Position[1])); zText.setText(f.format(Position[2])); axText.setText(f.format(Acc[0])); ayText.setText(f.format(Acc[1])); azText.setText(f.format(Acc[2])); vxText.setText(f.format(Vitesse[0])); vyText.setText(f.format(Vitesse[1])); vzText.setText(f.format(Vitesse[2])); } protected void onPause() { super.onPause(); SM.unregisterListener(this); AccP = Acc; VitP = Vitesse; TimeP = currentTimeMillis(); } public void onAccuracyChanged(Sensor sensor, int accuracy) { } public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() == Sensor.TYPE_LINEAR_ACCELERATION) Acc = event.values; Time = currentTimeMillis(); } } class SimpsonRule { /********************************************************************** * Standard normal distribution density function. * Replace with any sufficiently smooth function. **********************************************************************/ /*public static double f(double x) { return Math.exp(- x * x / 2) / Math.sqrt(2 * Math.PI); }*/ /********************************************************************** * Integrate f from a to b using Simpson's rule. * Increase N for more precision. **********************************************************************/ public static float integrate(double a, double b, float fa, float fb) { float h = (float)(b - a); float sum = (float)0.5*(fa + fb); /*// 4/3 terms for (int i = 1; i < N - 1; i += 2) { double x = a + h * i; sum += 4.0 / 3.0 * f(x); } // 2/3 terms for (int i = 2; i < N - 1; i += 2) { double x = a + h * i; sum += 2.0 / 3.0 * f(x); }*/ return sum * h; } }PS : Veuillez me pardonner si mon Main est en désordre (il va peut-être faire peur à certains ^^).
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="10dp" android:paddingLeft="10dp" android:paddingRight="10dp" android:paddingTop="10dp" tools:context="com.example.gargaud.position.MainActivity"> <TextView android:id="@+id/Accelx" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Acceleration en x :" android:layout_alignParentLeft="true" android:layout_marginTop="10dp" /> <TextView android:id="@+id/Accely" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Acceleration en y :" android:layout_alignParentLeft="true" android:layout_marginTop="40dp" /> <TextView android:id="@+id/Accelz" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Acceleration en z :" android:layout_alignParentLeft="true" android:layout_marginTop="70dp" /> <TextView android:id="@+id/axText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@id/Accelx" android:layout_centerHorizontal="true"/> <TextView android:id="@+id/ayText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@id/Accely" android:layout_centerHorizontal="true"/> <TextView android:id="@+id/azText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@id/Accelz" android:layout_centerHorizontal="true"/> <TextView android:id="@+id/Vitx" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Vitesse en x :" android:layout_alignParentLeft="true" android:layout_marginTop="400dp" /> <TextView android:id="@+id/Vity" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Vitesse en y :" android:layout_alignParentLeft="true" android:layout_marginTop="430dp" /> <TextView android:id="@+id/Vitz" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Vitesse en z :" android:layout_alignParentLeft="true" android:layout_marginTop="460dp" /> <TextView android:id="@+id/vxText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@id/Vitx" android:layout_centerHorizontal="true"/> <TextView android:id="@+id/vyText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@id/Vity" android:layout_centerHorizontal="true"/> <TextView android:id="@+id/vzText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@id/Vitz" android:layout_centerHorizontal="true"/> <TextView android:id="@+id/Posx" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Position en x :" android:layout_alignParentLeft="true" android:layout_marginTop="200dp" /> <TextView android:id="@+id/Posy" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Position en y :" android:layout_centerVertical="true" android:layout_alignParentLeft="true" /> <TextView android:id="@+id/Posz" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Position en z :" android:layout_alignParentLeft="true" android:layout_marginTop="260dp"/> <TextView android:id="@+id/xText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@id/Posx" android:layout_centerHorizontal="true"/> <TextView android:id="@+id/yText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/Posy" android:layout_centerHorizontal="true"/> <TextView android:id="@+id/zText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/Posz" android:layout_centerHorizontal="true"/> </RelativeLayout>
Je vous remercie d'avance pour l'aide que vous m'apporterez.
Partager