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, и, поскольку я изменял растровое изображение каждый раз, когда получал новое значение. Возможно, буфер был заполнен и не был очищен... может быть
В любом случае, если у меня появятся новости на эту тему, я обновлю этот пост.