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



我试图在我的Moto 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);
    }

谢谢

我没有一个确切的答案。我只是在分享我的问题,因为我觉得他们很相似。这个问题发生在Moto 360上,没有在其他设备上测试过。

我使用磁传感器

mMagneticSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);

我将我的Fragment注册为一个侦听器来接收新的值。

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,当我每次修改位图时,我得到一个新值。可能缓冲区已满而未清空…可能 无论如何,如果我得到一些关于这个主题的新闻,我会更新这篇文章。

相关内容

  • 没有找到相关文章

最新更新