2014-03-26 29 views
4

我能夠通過註冊和註銷偵聽器來啓動和停止Sensor.TYPE_STEP_COUNTER的記錄步驟。步計數器不會重置步數

但是,當應用程序被銷燬時,通過SensorEvent對象傳遞給我的應用程序的實際值不會重置爲零。如果我關閉了應用程序並重新啓動它,或者即使我用更新重新編譯我的應用程序,計數器也會從中斷處繼續。

如果我運行其他使用步進計數器傳感器的應用程序,它們會獨立計算其步數並重置其計數器。

傳感器是否具有特定於應用程序的緩存?將傳感器重置爲零步的正確方法是什麼?

回答

16

Android Sensor API

公共靜態最終詮釋TYPE_STEP_COUNTER

這種類型回報,同時激活的自上次重新啓動用戶所採取的步數的傳感器。該值以浮點形式返回(小數部分設置爲零),並且僅在重新啓動系統時將重置爲零。

(重點煤礦)

正如你可以看到,當傳感器被激活時,該值將繼續使用,無需直到重新啓動系統復位至零增長。

如果您希望每次啓動應用程序時從0開始計數,您可以存儲返回的第一個值作爲初始值,然後減去後續值。

+0

您提供了一個非常智能的解決方案。謝謝安德魯! – Dinuka

2

傳感器的onSensorChanged方法僅在真實新值出現時才被調用,它不會隨機重複觸發值,因此如果您想自己計算步數,您可以。

我已經選擇將步驟值置於SharedPreferences中,並且只要觸發onSensorChanged方法,我將值增加1,這是可靠的,因爲sensorChanged方法不會觸發重複值,此解決方案適用於我