Android onSensorChanged在注册后立即触发
我注册了一个Android onSensorChanged在注册后立即触发,android,sensors,Android,Sensors,我注册了一个步进计数器传感器。 如果我单独运行我的应用程序,onsensorchange不会在registerListener()之后立即触发,它只在我行走时才会触发 但是问题是,如果我有另一个应用程序也使用步进计数器传感器,并且正在我的手机中运行。然后,我的应用程序的onsensorchange总是在registerListener()之后立即启动 为什么会发生,如何预防?我不希望onSensorChanged在'registerListener()之后立即被激发。 任何帮助或建议都将不胜感激
步进计数器传感器。
如果我单独运行我的应用程序,onsensorchange
不会在registerListener()
之后立即触发,它只在我行走时才会触发
但是问题是,如果我有另一个应用程序也使用步进计数器
传感器,并且正在我的手机中运行。然后,我的应用程序的onsensorchange
总是在registerListener()之后立即启动
为什么会发生,如何预防?我不希望onSensorChanged在'registerListener()之后立即被激发。
任何帮助或建议都将不胜感激
@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
将在更新间隔结束时触发。如果第二个应用正在侦听传感器数据,则经过的时间间隔可能正好发生在应用开始侦听时。您不应依赖传感器数据的任何计时。它是“用户生成”的数据,不可信任
此外,截至:
此类型的传感器返回自上次激活时重新启动以来用户采取的步骤数
您必须存储收到的第一个值以跟踪增量测量值
您的具体问题似乎与报告模式有关,我会再次向您提供相关信息
注意:如果其他应用程序要求更高的速率,传感器数据的传输速率可能会比要求的更快
你想要什么。是否要延迟结果?这是正常行为。当您想开始监听时,添加布尔标志。@Qamar为什么这是正常的?您不应该使用Toast来记录日志,您应该实际使用日志来帮助调试您正在做的事情。不要使用Toast进行调试。@JoxTraex谢谢,下次我将使用Log。但是在我的情况下,Toast
绝对不会引起问题。我确信onSensorChanged
在registerListener
之后立即被解雇,我们可以知道onSensorChanged
被解雇是因为我们不走,而第一个应用程序正在运行。因为在onSensorChanged
方法中,我想在我们第一次行走时做一些事情onSensorChanged
给你什么样的值?如果onSensorChanged
说用户走了一步,你应该将这视为事实。