onSensorChanged在注册后立即开除

时间:2017-01-04 04:40:35

标签: android sensor

我已注册STEP_COUNTER传感器 如果我在onSensorChanged之后单独运行我的应用registerListener() NOT FIRED ,它只会在我走路时被解雇

但问题是,如果我有另一个应用程序也使用STEP_COUNTER传感器并且正在我的手机中运行。然后onSensorChanged我的应用registerListener()总是 FIRED @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"); } } 之后。

为什么会发生这种情况以及如何预防呢?我不想在`registerListener()之后立即触发onSensorChanged 任何帮助或建议将非常感谢

{{1}}

1 个答案:

答案 0 :(得分:1)

更新间隔结束后,

onSensorChanged将被触发。如果第二个应用正在侦听传感器数据,则可能会在您的应用开始收听时发生已用时间间隔。您不应该依赖传感器数据的任何时间。它是“用户生成的”数据,不可信任。

此外,截至Android documentation

  

此类传感器返回自上次重启后用户所采取的步数。

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

您的具体问题似乎与报告模式有关。 The documentation再次向您提供相关信息。

  

注意:如果其他应用程序要求更高的费率,传感器数据的传送速度可能会超过要求的速度。