¿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:
- sensor de luz androide - detectar cambios significativos de luz
- Calculando la distancia usando aceleración lineal android
- OnSensorChanged () no se llama
- Gesto MultiSelect como la aplicación Google Fotos
- ¿Qué ocurre con mi técnica de monitorización de sensores?
// 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??
- Android SensorListener Deprecated
- Alternativa para TYPE_GAME_ROTATION_VECTOR
- Dirección con sensor
- La brújula android parece poco fiable
- Cómo obtener RotationMatrix de guiñada, tono y rollo
- Cómo detectar el usuario manual que sostiene su dispositivo
- Android: Obtener el valor máximo del sensor de luz
- Evento TYPE_MAGNETIC_FIELD que no dispara en mi Galaxy Nexus ICS 4.0.2
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.
- Android: "no se puede inicializar el motor del visualizador"
- Cómo aumentar la resolución de la cámara cuando se utiliza IMAGE_CAPTURE intención