HIC: Base on elapsed time instead of RTC

Bug: 27405075
Change-Id: I703a870cf230ddccc9c89a9507e3ee900609f592
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/HistoryEvaluator.java b/packages/SystemUI/src/com/android/systemui/classifier/HistoryEvaluator.java
index 85a9bee..4c64711 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/HistoryEvaluator.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/HistoryEvaluator.java
@@ -16,6 +16,8 @@
 
 package com.android.systemui.classifier;
 
+import android.os.SystemClock;
+
 import java.util.ArrayList;
 
 /**
@@ -31,7 +33,7 @@
     private long mLastUpdate;
 
     public HistoryEvaluator() {
-        mLastUpdate = System.currentTimeMillis();
+        mLastUpdate = SystemClock.elapsedRealtime();
     }
 
     public void addStroke(float evaluation) {
@@ -69,15 +71,18 @@
     }
 
     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) {