Change currentTimeMillis to elapsedRealtime

System.currentTimeMillis does not gauntness to be monotonically
increasing, changed to SystemClock.elapsedRealtime

Bug: 38317243
Fixes: 38317243
Test: make -j 32; flash the angler device using local build

Change-Id: I75a70d43028e901d9f3459d6b525cac58e8e64af
diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java
index 45971f5..4ada555 100644
--- a/services/core/java/com/android/server/location/GnssLocationProvider.java
+++ b/services/core/java/com/android/server/location/GnssLocationProvider.java
@@ -943,7 +943,7 @@
                     long time = mNtpTime.getCachedNtpTime();
                     long timeReference = mNtpTime.getCachedNtpTimeReference();
                     long certainty = mNtpTime.getCacheCertainty();
-                    long now = System.currentTimeMillis();
+                    long now = SystemClock.elapsedRealtime();
 
                     if (DEBUG) {
                         Log.d(TAG, "NTP server returned: "
@@ -1458,7 +1458,7 @@
 
             // reset SV count to zero
             updateStatus(LocationProvider.TEMPORARILY_UNAVAILABLE, 0, 0, 0);
-            mFixRequestTime = System.currentTimeMillis();
+            mFixRequestTime = SystemClock.elapsedRealtime();
             if (!hasCapability(GPS_CAPABILITY_SCHEDULING)) {
                 // set timer to give up if we do not receive a fix within NO_FIX_TIMEOUT
                 // and our fix interval is not short
@@ -1535,12 +1535,12 @@
                 mGnssMetrics.logPositionAccuracyMeters(location.getAccuracy());
             }
             if (mTimeToFirstFix > 0) {
-                int timeBetweenFixes = (int) (System.currentTimeMillis() - mLastFixTime);
+                int timeBetweenFixes = (int) (SystemClock.elapsedRealtime() - mLastFixTime);
                 mGnssMetrics.logMissedReports(mFixInterval, timeBetweenFixes);
             }
         }
 
-        mLastFixTime = System.currentTimeMillis();
+        mLastFixTime = SystemClock.elapsedRealtime();
         // report time to first fix
         if (mTimeToFirstFix == 0 && hasLatLong) {
             mTimeToFirstFix = (int)(mLastFixTime - mFixRequestTime);
@@ -1665,7 +1665,7 @@
         updateStatus(mStatus, usedInFixCount, meanCn0, maxCn0);
 
         if (mNavigating && mStatus == LocationProvider.AVAILABLE && mLastFixTime > 0 &&
-            System.currentTimeMillis() - mLastFixTime > RECENT_FIX_TIMEOUT) {
+            SystemClock.elapsedRealtime() - mLastFixTime > RECENT_FIX_TIMEOUT) {
             // send an intent to notify that the GPS is no longer receiving fixes.
             Intent intent = new Intent(LocationManager.GPS_FIX_CHANGE_ACTION);
             intent.putExtra(LocationManager.EXTRA_GPS_ENABLED, false);