¿Cómo anular el registro de un oyente de un sensor después de detener el servicio?

Estoy creando una aplicación que inicia un servicio cuando se pulsa el botón "Inicio" y lo detiene cuando se pulsa el botón "Detener". En el servicio, registro un oyente para el sensor ACCELEROMETER para que yo obtenga los valores del acelerómetro de los ejes x, y, z .. pero cuando paro mi aplicación y anule el registro del oyente del sensor, incluso entonces obtengo mis valores de acelerómetro.

Aquí está el código:

// Service public class Accel extends Service { private static Context CONTEXT; private static Sensor sensor; private static SensorManager sensorManager; private static boolean running = false; @Override public void onCreate() { } // code to execute when the service is shutting down @Override public void onDestroy() { if (isListening()) stopListening(); } // code to execute when the service is starting up @Override public void onStart(Intent intent, int startid) { CONTEXT = this; startListening(this); } public static Context getContext() { return CONTEXT; } // Returns true if the manager is listening to orientation changes public static boolean isListening() { return running; } //Unregisters listeners public static void stopListening() { running = false; sensorManager.unregisterListener(sensorEventListener, sensor); } /** * Registers a listener and start listening * @param accelerometerListener * callback for accelerometer events */ public static void startListening(AccelerometerListener accelerometerListener) { sensorManager = (SensorManager) getContext().getSystemService(Context.SENSOR_SERVICE); List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER); if (sensors.size() > 0) { sensor = sensors.get(0); running = sensorManager.registerListener(sensorEventListener, sensor, SensorManager.SENSOR_DELAY_GAME); listener = accelerometerListener; } } /** * The listener that listen to events from the accelerometer listener */ private static SensorEventListener sensorEventListener = new SensorEventListener() { public void onAccuracyChanged(Sensor sensor, int accuracy) {} public void onSensorChanged(SensorEvent event) { // the code to perform on sensor change } }; 

}

¿¿Por favor, puede alguien ayudarme??

onDestroy() no puede ser llamado por el sistema operativo de su aplicación inmediatamente. Coloque su llamada stopListening() en onPause() y startListening() en sus funciones onResume() . De esta manera, se garantiza que la aplicación se registre y se cancele el registro con los sensores.

  • ¿Cómo saber cuándo se está moviendo el teléfono Android?
  • Android sensorPortrait no funciona para el modo de retrato inverso
  • ¿Cuál es la diferencia conceptual entre sensor de vector de rotación y sensor de orientación en Android?
  • Rajawali cámara giratoria con Sensor.TYPE_ROTATION_VECTOR comportamiento extraño
  • Cómo calcular la altura del teléfono Android desde el suelo
  • ¿Por qué tres (redundante?) Acelerómetro variaciones en sensores de android
  • Recoger el sensor android durante un período específico y calcular el promedio
  • Cómo usar el Acelerómetro para medir la distancia para el desarrollo de aplicaciones para Android
  • ¿Cómo saber si hay un sensor en mi dispositivo Android?
  • Mi algoritmo para calcular la posición del teléfono inteligente - GPS y sensores
  • Android Compass que puede compensar la inclinación y el tono
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.