2014-03-26 26 views
4

我能够通过注册和注销侦听器来启动和停止Sensor.TYPE_STEP_COUNTER的记录步骤。步计数器不会重置步数

但是,当应用程序被销毁时,通过SensorEvent对象传递给我的应用程序的实际值不会重置为零。如果我关闭了应用程序并重新启动它,或者即使我用更新重新编译我的应用程序,计数器也会从中断处继续。

如果我运行其他使用步进计数器传感器的应用程序,它们会独立计算其步数并重置其计数器。

传感器是否具有特定于应用程序的缓存?将传感器重置为零步的正确方法是什么?

回答

16

Android Sensor API

公共静态最终诠释TYPE_STEP_COUNTER

这种类型回报,同时激活的自上次重新启动用户所采取的步数的传感器。该值以浮点形式返回(小数部分设置为零),并且仅在重新启动系统时将重置为零。

(重点煤矿)

正如你可以看到,当传感器被激活时,该值将继续使用,无需直到重新启动系统复位至零增长。

如果您希望每次启动应用程序时从0开始计数,您可以存储返回的第一个值作为初始值,然后减去后续值。

+0

您提供了一个非常智能的解决方案。谢谢安德鲁! – Dinuka

2

传感器的onSensorChanged方法仅在真实新值出现时才被调用,它不会随机重复触发值,因此如果您想自己计算步数,您可以。

我已经选择将步骤值置于SharedPreferences中,并且只要触发onSensorChanged方法,我将值增加1,这是可靠的,因为sensorChanged方法不会触发重复值,此解决方案适用于我