[Android 7] Empêcher la mise en pause
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 ^^):
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 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) {
}
} |
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 :(
Merci d'avance de votre aide.
Bien cordialement,