Android Wear:记录lin_accl和陀螺仪时陀螺仪数据不变

时间:2015-08-04 01:24:02

标签: android accelerometer wear-os gyroscope moto-360

我试图在Moto 360上以最高采样率读取陀螺仪和linear_acclerometer数据。我将按下手持设备上的按钮,该按钮将在手表上注册传感器并开始记录所有传感器数据,当我按下另一个按钮时,手表将取消注册这些传感器并停止记录。

但是,传感器值有时会变为常数值。我发现如果我重新启动手表,传感器将开始工作并再次产生有意义的传感器值。

有没有人遇到过类似的问题,或者对于为什么会出现这种情况有一些想法?

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 个答案:

答案 0 :(得分: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更快的数据速率续订,因为我每次获得一个新值时都在修改位图。也许缓冲区已经满了,并没有被清空......也许

无论如何,如果我得到关于这个主题的一些消息,我会更新这篇文章。