Merge "GpsLocationProvider: Be less aggressive about getting fixes in bad conditions if we have a long fix interval."
diff --git a/location/java/com/android/internal/location/GpsLocationProvider.java b/location/java/com/android/internal/location/GpsLocationProvider.java
index 36b6106..90b50cc 100755
--- a/location/java/com/android/internal/location/GpsLocationProvider.java
+++ b/location/java/com/android/internal/location/GpsLocationProvider.java
@@ -761,7 +761,7 @@
                 positionMode = GPS_POSITION_MODE_STANDALONE;
             }
 
-            if (!native_start(positionMode, false, mFixInterval)) {
+            if (!native_start(positionMode, false, 1)) {
                 mStarted = false;
                 Log.e(TAG, "native_start failed in startNavigating()");
                 return;
@@ -872,7 +872,12 @@
         }
 
         if (mStarted && mStatus != LocationProvider.AVAILABLE) {
-            mAlarmManager.cancel(mTimeoutIntent);
+            // we still want to time out if we do not receive MIN_FIX_COUNT
+            // within the time out and we are requesting infrequent fixes
+            if (mFixInterval < NO_FIX_TIMEOUT) {
+                mAlarmManager.cancel(mTimeoutIntent);
+            }
+
             // send an intent to notify that the GPS is receiving fixes.
             Intent intent = new Intent(GPS_FIX_CHANGE_ACTION);
             intent.putExtra(EXTRA_ENABLED, true);