Merge "Add getGnssTimeMillis to LocationManagerInternal."

This commit is contained in:
TreeHugger Robot
2021-01-15 02:13:34 +00:00
committed by Android (Google) Code Review
2 changed files with 28 additions and 16 deletions

View File

@@ -80,4 +80,12 @@ public abstract class LocationManagerInternal {
*/
// TODO: there is no reason for this to exist as part of any API. move all the logic into gnss
public abstract void sendNiResponse(int notifId, int userResponse);
/**
* Returns the GNSS provided time.
*
* @return LocationTime object that includes the current time, according to the GNSS location
* provider, and the elapsed nanos since boot the current time was computed at.
*/
public abstract @Nullable LocationTime getGnssTimeMillis();
}

View File

@@ -807,22 +807,7 @@ public class LocationManagerService extends ILocationManager.Stub {
@Override
public LocationTime getGnssTimeMillis() {
synchronized (mLock) {
LocationProviderManager gpsManager = getLocationProviderManager(GPS_PROVIDER);
if (gpsManager == null) {
return null;
}
Location location = gpsManager.getLastLocationUnsafe(UserHandle.USER_ALL,
PERMISSION_FINE, false, Long.MAX_VALUE);
if (location == null) {
return null;
}
long currentNanos = SystemClock.elapsedRealtimeNanos();
long deltaMs = NANOSECONDS.toMillis(location.getElapsedRealtimeAgeNanos(currentNanos));
return new LocationTime(location.getTime() + deltaMs, currentNanos);
}
return mLocalService.getGnssTimeMillis();
}
@Override
@@ -1292,6 +1277,25 @@ public class LocationManagerService extends ILocationManager.Stub {
mGnssManagerService.sendNiResponse(notifId, userResponse);
}
}
@Override
public @Nullable LocationTime getGnssTimeMillis() {
LocationProviderManager gpsManager = getLocationProviderManager(GPS_PROVIDER);
if (gpsManager == null) {
return null;
}
Location location = gpsManager.getLastLocationUnsafe(UserHandle.USER_ALL,
PERMISSION_FINE, false, Long.MAX_VALUE);
if (location == null) {
return null;
}
long currentNanos = SystemClock.elapsedRealtimeNanos();
long deltaMs = NANOSECONDS.toMillis(
location.getElapsedRealtimeAgeNanos(currentNanos));
return new LocationTime(location.getTime() + deltaMs, currentNanos);
}
}
private static class SystemInjector implements Injector {