OSDN Git Service

HIC: Base on elapsed time instead of RTC
authorAdrian Roos <roosa@google.com>
Thu, 21 Jul 2016 16:52:15 +0000 (09:52 -0700)
committerAdrian Roos <roosa@google.com>
Thu, 21 Jul 2016 20:34:54 +0000 (13:34 -0700)
Bug: 27405075
Change-Id: I703a870cf230ddccc9c89a9507e3ee900609f592

packages/SystemUI/src/com/android/systemui/classifier/HistoryEvaluator.java

index 85a9bee..4c64711 100644 (file)
@@ -16,6 +16,8 @@
 
 package com.android.systemui.classifier;
 
+import android.os.SystemClock;
+
 import java.util.ArrayList;
 
 /**
@@ -31,7 +33,7 @@ public class HistoryEvaluator {
     private long mLastUpdate;
 
     public HistoryEvaluator() {
-        mLastUpdate = System.currentTimeMillis();
+        mLastUpdate = SystemClock.elapsedRealtime();
     }
 
     public void addStroke(float evaluation) {
@@ -69,15 +71,18 @@ public class HistoryEvaluator {
     }
 
     private void decayValue() {
-        long currentTimeMillis = System.currentTimeMillis();
+        long time = SystemClock.elapsedRealtime();
+
+        if (time <= mLastUpdate) {
+            return;
+        }
 
         // All weights are multiplied by HISTORY_FACTOR after each INTERVAL milliseconds.
-        float factor = (float) Math.pow(HISTORY_FACTOR,
-                (float) (currentTimeMillis - mLastUpdate) / INTERVAL);
+        float factor = (float) Math.pow(HISTORY_FACTOR, (time - mLastUpdate) / INTERVAL);
 
         decayValue(mStrokes, factor);
         decayValue(mGestureWeights, factor);
-        mLastUpdate = currentTimeMillis;
+        mLastUpdate = time;
     }
 
     private void decayValue(ArrayList<Data> list, float factor) {