@lacredin
Программист

Почему датчики перестают работать в android?

Всем доброго времени суток!
Столкнулся с проблемой, датчики положения телефона, после примерно 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;
            }
        }
    };
  • Вопрос задан
  • 329 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы