onSensorChanged 在注册后立即触发



我已经注册了一个STEP_COUNTER传感器。
如果我单独运行我的应用程序,onSensorChanged不会在registerListener()后立即触发,它仅在我走路时触发

但是,问题是如果我有另一个应用程序也使用传感器STEP_COUNTER并且正在我的手机中运行。然后我的应用程序onSensorChanged总是在registerListener()之后立即触发

为什么会发生以及如何预防? 我不想在'registerListener()之后立即触发onSensorChanged。
任何帮助或建议将不胜感激

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    stepCounter = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
}
@Override
protected void onResume() {
    super.onResume();
    mSensorManager.registerListener(this, stepCounter, SensorManager.SENSOR_DELAY_UI);
}
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
   if(sensorEvent.sensor.getType() == Sensor.TYPE_STEP_COUNTER){
        Log.d("TAG","Sensor call");
   }
}

更新间隔过后,onSensorChanged将被触发。如果第二个应用正在侦听传感器数据,则经过的间隔可能会在应用开始侦听时发生。不应依赖传感器数据的任何计时。它是"用户生成"的数据,不可信。

另外,截至Android文档:

此类型的传感器返回用户自上次激活时重新启动以来执行的步骤数。

您必须存储收到的第一个值才能跟踪增量测量值。

您的具体问题似乎与报告模式有关。同样,该文档将为您提供相关信息。

注意:如果其他应用程序请求更高的速率,则传感器数据的传输速率可能比请求的更快。

最新更新