Я создаю приложение, которое запускает службу при нажатии кнопки «Пуск» и останавливает ее при нажатии кнопки «Стоп». в службе я регистрирую прослушиватель для датчика АКСЕЛЕРОМЕТР, чтобы получать значения акселерометра по осям x, y, z.. но когда я останавливаю свое приложение и отменяю регистрацию прослушивателя от датчика, даже тогда я получаю значения своего акселерометра.
// 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 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
}
};
Я создаю приложение, которое запускает службу при нажатии кнопки «Пуск» и останавливает ее при нажатии кнопки «Стоп». в службе я регистрирую прослушиватель для датчика АКСЕЛЕРОМЕТР, чтобы получать значения акселерометра по осям x, y, z.. но когда я останавливаю свое приложение и отменяю регистрацию прослушивателя от датчика, даже тогда я получаю значения своего акселерометра.
Вот код:
[code]// 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; }
/** * 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 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 } }; [/code]