【问题标题】:Step counter doesn't reset the step count步数计数器不会重置步数
【发布时间】:2014-05-04 03:59:20
【问题描述】:

我可以通过注册和注销监听器来使用Sensor.TYPE_STEP_COUNTER 开始和停止录制步骤。

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

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

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

【问题讨论】:

    标签: android counter reset android-sensors


    【解决方案1】:

    来自Android Sensor API

    public static final int TYPE_STEP_COUNTER

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

    (强调我的)

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

    如果每次启动应用都从0开始计数,可以将返回的第一个值存储为初始值,然后减去后续值。

    【讨论】:

      【解决方案2】:

      Sensor的onSensorChanged方法只在真正的新值出现时调用,不会随机触发重复值,所以如果你想自己统计步数,可以。

      我选择将 steps 值放在 SharedPreferences 中,每当触发 onSensorChanged 方法时,我都会将我拥有的值增加 1,这是可靠的,因为 sensorChanged 方法不会针对重复值触发,这个解决方案对我很有效

      【讨论】:

      • 这个解决方案很适合我。我将最后一个计数放在 SharedPreference 中,然后我可以用 sharedpreference 中的值减去当前计数器。
      • @odaym,您确定每一步都调用onSensorChanged 吗?我认为,有时 2 个后续调用的值之间的差异大于 1。我的意思是,第一次调用值为 N,但第二次调用值为 N + M(而不是 N + 1)。
      • 当然我不会对它的表现感到惊讶,它取决于每台设备,如果你下载一堆计步健身应用程序并测试它们,甚至从应用程序到应用程序也会有很大差异
      猜你喜欢
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      • 2017-04-19
      • 2017-04-16
      • 1970-01-01
      • 2018-11-27
      • 2015-02-13
      • 1970-01-01
      相关资源
      最近更新 更多