Android Wear: данные гироскопа не изменяются при регистрации как lin_accl, так и гироскопа

Я пытаюсь прочитать данные как гироскопа, так и linear_acclerometer с самой высокой частотой дискретизации на моем мото 360 . Я нажму кнопку на контроллере, которая зарегистрирует датчики на часах и начнет регистрировать все данные датчиков, а когда я нажму другую кнопку, часы отменит регистрацию этих датчиков и прекратит регистрацию.

Однако значение датчика иногда становится постоянным. Я обнаружил, что если я перезапущу часы, датчик начнет работать и снова сгенерирует значимое значение датчика.

Кто-нибудь сталкивался с подобной проблемой или есть идеи о том, почему это может произойти?

private void startSensorListeners() {
        Log.d(TAG, "startSensorListeners");
        isCollecting = true;
        //Register the motion Sensor Listener
        mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE), SENSOR_DELAY);
        mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION), SENSOR_DELAY);
}

public  void stopSensorListeners() {
         isCollecting = false;
          mSensorManager.unregisterListener(this);
    }

 public final void onSensorChanged(SensorEvent event) {
       if(!isCollecting){
           mSensorManager.unregisterListener(this, event.sensor);
           return ;
        }
    // Save sensordata into local files, I also output the values[] in event on the logcat to monitor the sensor values in the realtime.
    saveData(event);
    }

Спасибо

1 ответ

У меня нет фактического ответа на это. Я просто делюсь своей проблемой, потому что чувствую, что они очень похожи. Проблема возникает на Moto 360 и не была протестирована на другом устройстве.

Я использую Магнитный датчик.

mMagneticSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);

Я регистрирую свой Фрагмент как слушателя новых значений.

mSensorManager.registerListener(this, mMagneticSensor, SensorManager.SENSOR_DELAY_NORMAL);

Я разрабатывал приложение. В начале они менялись, как и ожидалось, но через ~ час значения от датчика просто замерзали, оставаясь точно такими же, несмотря ни на что.

Я подозреваю две вещи: уровень заряда батареи и скорость передачи данных.

Может быть, батарея упала ниже некоторого приемлемого уровня (когда она перестала работать) была около 25%... это было бы странно, но это не было бы большим сюрпризом.

Во-вторых, я помню, как изменился SensorManager.SENSOR_DELAY_NORMAL) для SensorManager.SENSOR_DELAY_UI) в некоторый момент, незадолго до того, как значения замерзнут. Возможно, это совпадение. SensorManager.SENSOR_DELAY_UI является более быстрым обновлением скорости передачи данных, чем SensorManager.SENSOR_DELAY_NORMAL, и, поскольку я изменял растровое изображение каждый раз, когда получал новое значение. Возможно, буфер был заполнен и не был очищен... может быть

В любом случае, если у меня появятся новости на эту тему, я обновлю этот пост.

Другие вопросы по тегам