步数计数器不会重置步数

时间:2014-03-26 00:45:25

标签: android counter reset android-sensors

我可以通过注册和取消注册监听器来启动和停止使用Sensor.TYPE_STEP_COUNTER录制步骤。

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

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

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

2 个答案:

答案 0 :(得分:20)

来自Android Sensor API

  

public static final int TYPE_STEP_COUNTER

     

此类传感器返回自上次重启后用户采取的步数。该值以float形式返回(小数部分设置为零),并且仅在系统重新启动时重置为零

(强调我的)

正如您所看到的,当传感器被激活时,该值将继续增加而不会重置为零,直到系统重新启动。

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

答案 1 :(得分:2)

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

我选择将步骤值放在SharedPreferences中,每当触发onSensorChanged方法时,我将值增加1,它是可靠的,因为sensorChanged方法不会触发重复值,这个解决方案适用于我