Android SensorManager类型\步骤\计数器在不触发事件的情况下获取值

Android SensorManager类型\步骤\计数器在不触发事件的情况下获取值,android,service,sensormanager,Android,Service,Sensormanager,我使用这段代码在android 4.4.2设备上获取步骤 mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); mStepCounter = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER); mSensorManager.registerListener(mSensorEventListenerCounter, mStepC

我使用这段代码在android 4.4.2设备上获取步骤

mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
mStepCounter = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);

mSensorManager.registerListener(mSensorEventListenerCounter,
            mStepCounter, SensorManager.SENSOR_DELAY_NORMAL);
我使用EventListener在应用程序运行时获取值。现在我想在启动应用程序时获取init step值。因为计数器仅在设备重新启动时从0开始。因此,在我的例子0中,该值总是超过。对于计算,我需要知道起始值

这是我在运行时用于在值发生更改时获取值的代码

private SensorEventListener mSensorEventListenerCounter = new SensorEventListener() {

@Override
  public void onAccuracyChanged(Sensor sensor, int accuracy) {
}

@Override
  public void onSensorChanged(SensorEvent event) {
    value = event.values[0];
  }
};
有没有一种方法可以在不触发事件的情况下,通过晃动手机模拟一个步骤来捕捉值?


谢谢。

第一次调用onSensorChanged时保存该值并将其存储为您的0值如何?我现在就是这么做的。但是我想在用户在onCreate部分打开应用程序时直接保存该值。问题是,当用户激活我的应用程序时,他可能会坐着。我希望它已经得到了正确的计数器,可以根据时间的不同看到各个步骤。我可以自己推一个onSensorChanged事件吗?这是一个函数,当然你可以自己调用它。但是你没有正确的初始数据来传递它。我最好的建议是在你的应用程序中设置一个标志,告诉你是否看到了初始值,并在该标志为false时提供特殊情况逻辑。例如,如果您从未见过onSensorChanged调用,则显示0个步骤。因此,访问此值的唯一方法是通过事件?该死然后我将int initValue设置为-100。那么我可以肯定地说它还没有被覆盖。