我已注册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}}
答案 0 :(得分:1)
onSensorChanged
将被触发。如果第二个应用正在侦听传感器数据,则可能会在您的应用开始收听时发生已用时间间隔。您不应该依赖传感器数据的任何时间。它是“用户生成的”数据,不可信任。
此外,截至Android documentation:
此类传感器返回自上次重启后用户所采取的步数。
您必须存储您收到的第一个值以跟踪增量测量值。
您的具体问题似乎与报告模式有关。 The documentation再次向您提供相关信息。
注意:如果其他应用程序要求更高的费率,传感器数据的传送速度可能会超过要求的速度。