Bonjour à toutes et à tous,
Je souhaiterai savoir comment faire pour empêcher la mise en pause de mon application qui compte le nombre de pas, car si la personne lance une autre application en premier plan ou éteint son écran ça se stop.
Voici le code de l'activité (Que j'ai nettoyé pour laisser le minimum car il ne fait pas que compter les pas ^^):
Autrefois je le faisais par GPS en calculant la distance et même si l'application était en arrière plan elle continuait de travailler que là non
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 package com.caranille.myplop; import android.Manifest; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.TaskStackBuilder; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Vibrator; import android.support.v4.app.NotificationCompat; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import java.util.Random; public class TrainingActivity extends AppCompatActivity implements SensorEventListener { private SensorManager mSensorManager; private Sensor mStepCounterSensor; private Sensor mStepDetectorSensor; private Vibrator Levibreur; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_training); textViewDistanceTraveled = (TextView) findViewById(R.id.textViewDistanceTraveled); buttonStopTraining = (Button) findViewById(R.id.buttonStopTraining); Levibreur = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); //On affiche la distance parcourue du plop textViewDistanceTraveled.setText(" 0 pas"); mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); mStepCounterSensor = mSensorManager .getDefaultSensor(Sensor.TYPE_STEP_COUNTER); mStepDetectorSensor = mSensorManager .getDefaultSensor(Sensor.TYPE_STEP_DETECTOR); } @Override protected void onResume() { super.onResume(); //on fait vibrer le téléphone du Levibreur.vibrate(1000); mSensorManager.registerListener(this, mStepCounterSensor, SensorManager.SENSOR_DELAY_FASTEST); mSensorManager.registerListener(this, mStepDetectorSensor, SensorManager.SENSOR_DELAY_FASTEST); } @Override public void onPause() { super.onPause(); // Always call the superclass method first //on fait vibrer le téléphone du Levibreur.vibrate(1000); } protected void onStop() { super.onStop(); mSensorManager.unregisterListener(this, mStepCounterSensor); mSensorManager.unregisterListener(this, mStepDetectorSensor); } @Override public void onSensorChanged(SensorEvent event) { Sensor sensor = event.sensor; float[] values = event.values; int value = -1; if (values.length > 0) { value = (int) values[0]; } if (sensor.getType() == Sensor.TYPE_STEP_DETECTOR) { //On affiche la distance parcourue du plop textViewDistanceTraveled.setText(" 1 pas"); Levibreur.vibrate(100); } } @Override public void onAccuracyChanged(Sensor sensor, int i) { } }
Merci d'avance de votre aide.
Bien cordialement,
Partager