Loading api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -35435,6 +35435,7 @@ package android.os { } public final class SystemClock { method @NonNull public static java.time.Clock currentGnssTimeClock(); method public static long currentThreadTimeMillis(); method public static long elapsedRealtime(); method public static long elapsedRealtimeNanos(); core/java/android/os/SystemClock.java +31 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.annotation.NonNull; import android.annotation.UnsupportedAppUsage; import android.app.IAlarmManager; import android.content.Context; import android.location.ILocationManager; import android.location.LocationTime; import android.util.Slog; import dalvik.annotation.optimization.CriticalNative; Loading Loading @@ -317,4 +319,33 @@ public final class SystemClock { } }; } /** * Returns a {@link Clock} that starts at January 1, 1970 00:00:00.0 UTC, * synchronized using the device's location provider. * * @throws DateTimeException when the location provider has not had a location fix since boot. */ public static @NonNull Clock currentGnssTimeClock() { return new SimpleClock(ZoneOffset.UTC) { private final ILocationManager mMgr = ILocationManager.Stub .asInterface(ServiceManager.getService(Context.LOCATION_SERVICE)); @Override public long millis() { LocationTime time; try { time = mMgr.getGnssTimeMillis(); } catch (RemoteException e) { e.rethrowFromSystemServer(); return 0; } if (time == null) { throw new DateTimeException("Gnss based time is not available."); } long currentNanos = elapsedRealtimeNanos(); long deltaMs = (currentNanos - time.getElapsedRealtimeNanos()) / 1000000L; return time.getTime() + deltaMs; } }; } } location/java/android/location/ILocationManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.location.IGnssNavigationMessageListener; import android.location.ILocationListener; import android.location.Location; import android.location.LocationRequest; import android.location.LocationTime; import android.os.Bundle; import com.android.internal.location.ProviderProperties; Loading Loading @@ -104,6 +105,7 @@ interface ILocationManager void setTestProviderLocation(String provider, in Location loc, String opPackageName); void setTestProviderEnabled(String provider, boolean enabled, String opPackageName); List<LocationRequest> getTestProviderCurrentRequests(String provider, String opPackageName); LocationTime getGnssTimeMillis(); // --- deprecated --- void setTestProviderStatus(String provider, int status, in Bundle extras, long updateTime, Loading location/java/android/location/LocationTime.aidl 0 → 100644 +19 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.location; parcelable LocationTime; location/java/android/location/LocationTime.java 0 → 100644 +73 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.location; import android.annotation.NonNull; import android.os.Parcel; import android.os.Parcelable; /** * Data class for passing location derived time. * @hide */ public final class LocationTime implements Parcelable { private final long mTime; private final long mElapsedRealtimeNanos; public LocationTime(long time, long elapsedRealtimeNanos) { mTime = time; mElapsedRealtimeNanos = elapsedRealtimeNanos; } /** * The current time, according to the Gnss location provider. */ public long getTime() { return mTime; } /** * The elapsed nanos since boot {@link #getTime} was computed at. */ public long getElapsedRealtimeNanos() { return mElapsedRealtimeNanos; } @Override public void writeToParcel(Parcel out, int flags) { out.writeLong(mTime); out.writeLong(mElapsedRealtimeNanos); } @Override public int describeContents() { return 0; } public static final @NonNull Parcelable.Creator<LocationTime> CREATOR = new Parcelable.Creator<LocationTime>() { public LocationTime createFromParcel(Parcel in) { long time = in.readLong(); long elapsedRealtimeNanos = in.readLong(); return new LocationTime(time, elapsedRealtimeNanos); } public LocationTime[] newArray(int size) { return new LocationTime[size]; } }; } Loading
api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -35435,6 +35435,7 @@ package android.os { } public final class SystemClock { method @NonNull public static java.time.Clock currentGnssTimeClock(); method public static long currentThreadTimeMillis(); method public static long elapsedRealtime(); method public static long elapsedRealtimeNanos();
core/java/android/os/SystemClock.java +31 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.annotation.NonNull; import android.annotation.UnsupportedAppUsage; import android.app.IAlarmManager; import android.content.Context; import android.location.ILocationManager; import android.location.LocationTime; import android.util.Slog; import dalvik.annotation.optimization.CriticalNative; Loading Loading @@ -317,4 +319,33 @@ public final class SystemClock { } }; } /** * Returns a {@link Clock} that starts at January 1, 1970 00:00:00.0 UTC, * synchronized using the device's location provider. * * @throws DateTimeException when the location provider has not had a location fix since boot. */ public static @NonNull Clock currentGnssTimeClock() { return new SimpleClock(ZoneOffset.UTC) { private final ILocationManager mMgr = ILocationManager.Stub .asInterface(ServiceManager.getService(Context.LOCATION_SERVICE)); @Override public long millis() { LocationTime time; try { time = mMgr.getGnssTimeMillis(); } catch (RemoteException e) { e.rethrowFromSystemServer(); return 0; } if (time == null) { throw new DateTimeException("Gnss based time is not available."); } long currentNanos = elapsedRealtimeNanos(); long deltaMs = (currentNanos - time.getElapsedRealtimeNanos()) / 1000000L; return time.getTime() + deltaMs; } }; } }
location/java/android/location/ILocationManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.location.IGnssNavigationMessageListener; import android.location.ILocationListener; import android.location.Location; import android.location.LocationRequest; import android.location.LocationTime; import android.os.Bundle; import com.android.internal.location.ProviderProperties; Loading Loading @@ -104,6 +105,7 @@ interface ILocationManager void setTestProviderLocation(String provider, in Location loc, String opPackageName); void setTestProviderEnabled(String provider, boolean enabled, String opPackageName); List<LocationRequest> getTestProviderCurrentRequests(String provider, String opPackageName); LocationTime getGnssTimeMillis(); // --- deprecated --- void setTestProviderStatus(String provider, int status, in Bundle extras, long updateTime, Loading
location/java/android/location/LocationTime.aidl 0 → 100644 +19 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.location; parcelable LocationTime;
location/java/android/location/LocationTime.java 0 → 100644 +73 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.location; import android.annotation.NonNull; import android.os.Parcel; import android.os.Parcelable; /** * Data class for passing location derived time. * @hide */ public final class LocationTime implements Parcelable { private final long mTime; private final long mElapsedRealtimeNanos; public LocationTime(long time, long elapsedRealtimeNanos) { mTime = time; mElapsedRealtimeNanos = elapsedRealtimeNanos; } /** * The current time, according to the Gnss location provider. */ public long getTime() { return mTime; } /** * The elapsed nanos since boot {@link #getTime} was computed at. */ public long getElapsedRealtimeNanos() { return mElapsedRealtimeNanos; } @Override public void writeToParcel(Parcel out, int flags) { out.writeLong(mTime); out.writeLong(mElapsedRealtimeNanos); } @Override public int describeContents() { return 0; } public static final @NonNull Parcelable.Creator<LocationTime> CREATOR = new Parcelable.Creator<LocationTime>() { public LocationTime createFromParcel(Parcel in) { long time = in.readLong(); long elapsedRealtimeNanos = in.readLong(); return new LocationTime(time, elapsedRealtimeNanos); } public LocationTime[] newArray(int size) { return new LocationTime[size]; } }; }