Всем доброго времени суток!
Столкнулся с проблемой, датчики положения телефона, после примерно 20 минут беспрерывной работы начинают присылать нули.
С чем это может быть связано и есть ли способ проверить этот момент, кроме как постоянно искать череду одинаковых ответов?
Вот код работы с датчиками. Данные с них снимаются в Service и пишутся в файл.
protected void onResume() {
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
if(checkGRAVITY(sensorManager)) {
sensorAccel = sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
}else {
sensorAccel = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
sensorMagnet = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
sensorManager.registerListener(listener, sensorAccel, SensorManager.SENSOR_DELAY_NORMAL);
sensorManager.registerListener(listener, sensorMagnet, SensorManager.SENSOR_DELAY_NORMAL);
timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
getDeviceOrientation();
//getActualDeviceOrientation();
showInfo();
}
};
timer.schedule(task, 0, 500);
WindowManager windowManager = ((WindowManager) getSystemService(Context.WINDOW_SERVICE));
Display display = windowManager.getDefaultDisplay();
rotation = display.getRotation();
}
SensorEventListener listener = new SensorEventListener() {
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
for (int i=0; i < 3; i++){
valuesAccel[i] = event.values[i];
}
break;
case Sensor.TYPE_GRAVITY:
for (int i=0; i < 3; i++){
valuesAccel[i] = event.values[i];
}
break;
case Sensor.TYPE_MAGNETIC_FIELD:
for (int i=0; i < 3; i++){
valuesMagnet[i] = event.values[i];
}
break;
}
}
};