Loading services/core/java/com/android/server/location/provider/LocationProviderManager.java +22 −6 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import static android.os.PowerManager.LOCATION_MODE_ALL_DISABLED_WHEN_SCREEN_OFF import static android.os.PowerManager.LOCATION_MODE_FOREGROUND_ONLY; import static android.os.PowerManager.LOCATION_MODE_GPS_DISABLED_WHEN_SCREEN_OFF; import static android.os.PowerManager.LOCATION_MODE_THROTTLE_REQUESTS_WHEN_SCREEN_OFF; import static android.os.UserHandle.USER_CURRENT; import static com.android.server.location.LocationManagerService.D; import static com.android.server.location.LocationManagerService.TAG; Loading Loading @@ -893,6 +894,10 @@ public class LocationProviderManager extends MAX_FASTEST_INTERVAL_JITTER_MS); if (deltaMs < getRequest().getMinUpdateIntervalMillis() - maxJitterMs) { if (D) { Log.v(TAG, mName + " provider registration " + getIdentity() + " dropped delivery - too fast"); } return false; } Loading @@ -902,6 +907,10 @@ public class LocationProviderManager extends if (smallestDisplacementM > 0.0 && location.distanceTo( mPreviousLocation) <= smallestDisplacementM) { if (D) { Log.v(TAG, mName + " provider registration " + getIdentity() + " dropped delivery - too close"); } return false; } } Loading @@ -919,7 +928,8 @@ public class LocationProviderManager extends if (!mAppOpsHelper.noteOpNoThrow(LocationPermissions.asAppOp(getPermissionLevel()), getIdentity())) { if (D) { Log.w(TAG, "noteOp denied for " + getIdentity()); Log.w(TAG, mName + " provider registration " + getIdentity() + " noteOp denied"); } return null; } Loading Loading @@ -1503,7 +1513,7 @@ public class LocationProviderManager extends public boolean isEnabled(int userId) { if (userId == UserHandle.USER_NULL) { return false; } else if (userId == UserHandle.USER_CURRENT) { } else if (userId == USER_CURRENT) { return isEnabled(mUserHelper.getCurrentUserId()); } Loading Loading @@ -1676,7 +1686,7 @@ public class LocationProviderManager extends } } return lastLocation; } else if (userId == UserHandle.USER_CURRENT) { } else if (userId == USER_CURRENT) { return getLastLocationUnsafe(mUserHelper.getCurrentUserId(), permissionLevel, isBypass, maximumAgeMs); } Loading Loading @@ -1721,7 +1731,7 @@ public class LocationProviderManager extends setLastLocation(location, runningUserIds[i]); } return; } else if (userId == UserHandle.USER_CURRENT) { } else if (userId == USER_CURRENT) { setLastLocation(location, mUserHelper.getCurrentUserId()); return; } Loading Loading @@ -2404,13 +2414,13 @@ public class LocationProviderManager extends filtered = locationResult.filter(location -> { if (!location.isMock()) { if (location.getLatitude() == 0 && location.getLongitude() == 0) { Log.w(TAG, "blocking 0,0 location from " + mName + " provider"); Log.e(TAG, "blocking 0,0 location from " + mName + " provider"); return false; } } if (!location.isComplete()) { Log.w(TAG, "blocking incomplete location from " + mName + " provider"); Log.e(TAG, "blocking incomplete location from " + mName + " provider"); return false; } Loading @@ -2428,6 +2438,12 @@ public class LocationProviderManager extends filtered = locationResult; } Location last = getLastLocationUnsafe(USER_CURRENT, PERMISSION_FINE, true, Long.MAX_VALUE); if (last != null && locationResult.get(0).getElapsedRealtimeNanos() < last.getElapsedRealtimeNanos()) { Log.e(TAG, "non-monotonic location received from " + mName + " provider"); } // update last location setLastLocation(filtered.getLastLocation(), UserHandle.USER_ALL); Loading Loading
services/core/java/com/android/server/location/provider/LocationProviderManager.java +22 −6 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import static android.os.PowerManager.LOCATION_MODE_ALL_DISABLED_WHEN_SCREEN_OFF import static android.os.PowerManager.LOCATION_MODE_FOREGROUND_ONLY; import static android.os.PowerManager.LOCATION_MODE_GPS_DISABLED_WHEN_SCREEN_OFF; import static android.os.PowerManager.LOCATION_MODE_THROTTLE_REQUESTS_WHEN_SCREEN_OFF; import static android.os.UserHandle.USER_CURRENT; import static com.android.server.location.LocationManagerService.D; import static com.android.server.location.LocationManagerService.TAG; Loading Loading @@ -893,6 +894,10 @@ public class LocationProviderManager extends MAX_FASTEST_INTERVAL_JITTER_MS); if (deltaMs < getRequest().getMinUpdateIntervalMillis() - maxJitterMs) { if (D) { Log.v(TAG, mName + " provider registration " + getIdentity() + " dropped delivery - too fast"); } return false; } Loading @@ -902,6 +907,10 @@ public class LocationProviderManager extends if (smallestDisplacementM > 0.0 && location.distanceTo( mPreviousLocation) <= smallestDisplacementM) { if (D) { Log.v(TAG, mName + " provider registration " + getIdentity() + " dropped delivery - too close"); } return false; } } Loading @@ -919,7 +928,8 @@ public class LocationProviderManager extends if (!mAppOpsHelper.noteOpNoThrow(LocationPermissions.asAppOp(getPermissionLevel()), getIdentity())) { if (D) { Log.w(TAG, "noteOp denied for " + getIdentity()); Log.w(TAG, mName + " provider registration " + getIdentity() + " noteOp denied"); } return null; } Loading Loading @@ -1503,7 +1513,7 @@ public class LocationProviderManager extends public boolean isEnabled(int userId) { if (userId == UserHandle.USER_NULL) { return false; } else if (userId == UserHandle.USER_CURRENT) { } else if (userId == USER_CURRENT) { return isEnabled(mUserHelper.getCurrentUserId()); } Loading Loading @@ -1676,7 +1686,7 @@ public class LocationProviderManager extends } } return lastLocation; } else if (userId == UserHandle.USER_CURRENT) { } else if (userId == USER_CURRENT) { return getLastLocationUnsafe(mUserHelper.getCurrentUserId(), permissionLevel, isBypass, maximumAgeMs); } Loading Loading @@ -1721,7 +1731,7 @@ public class LocationProviderManager extends setLastLocation(location, runningUserIds[i]); } return; } else if (userId == UserHandle.USER_CURRENT) { } else if (userId == USER_CURRENT) { setLastLocation(location, mUserHelper.getCurrentUserId()); return; } Loading Loading @@ -2404,13 +2414,13 @@ public class LocationProviderManager extends filtered = locationResult.filter(location -> { if (!location.isMock()) { if (location.getLatitude() == 0 && location.getLongitude() == 0) { Log.w(TAG, "blocking 0,0 location from " + mName + " provider"); Log.e(TAG, "blocking 0,0 location from " + mName + " provider"); return false; } } if (!location.isComplete()) { Log.w(TAG, "blocking incomplete location from " + mName + " provider"); Log.e(TAG, "blocking incomplete location from " + mName + " provider"); return false; } Loading @@ -2428,6 +2438,12 @@ public class LocationProviderManager extends filtered = locationResult; } Location last = getLastLocationUnsafe(USER_CURRENT, PERMISSION_FINE, true, Long.MAX_VALUE); if (last != null && locationResult.get(0).getElapsedRealtimeNanos() < last.getElapsedRealtimeNanos()) { Log.e(TAG, "non-monotonic location received from " + mName + " provider"); } // update last location setLastLocation(filtered.getLastLocation(), UserHandle.USER_ALL); Loading