Loading core/api/current.txt +27 −27 Original line number Diff line number Diff line Loading @@ -19465,26 +19465,26 @@ package android.location { method @NonNull public static String convert(@FloatRange double, int); method @FloatRange public static double convert(@NonNull String); method public int describeContents(); method public static void distanceBetween(@FloatRange double, @FloatRange double, @FloatRange double, @FloatRange double, float[]); method @FloatRange public float distanceTo(@NonNull android.location.Location); method public void dump(@NonNull android.util.Printer, @Nullable String); method @FloatRange public float getAccuracy(); method public static void distanceBetween(@FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, float[]); method @FloatRange(from=0.0) public float distanceTo(@NonNull android.location.Location); method @Deprecated public void dump(@NonNull android.util.Printer, @Nullable String); method @FloatRange(from=0.0) public float getAccuracy(); method @FloatRange public double getAltitude(); method @FloatRange(from=0.0f, to=360.0f, toInclusive=false) public float getBearing(); method @FloatRange public float getBearingAccuracyDegrees(); method @IntRange public long getElapsedRealtimeAgeMillis(); method @IntRange public long getElapsedRealtimeAgeMillis(@IntRange long); method @IntRange public long getElapsedRealtimeMillis(); method @IntRange public long getElapsedRealtimeNanos(); method @FloatRange public double getElapsedRealtimeUncertaintyNanos(); method @FloatRange(from=0.0, to=360.0, toInclusive=false) public float getBearing(); method @FloatRange(from=0.0) public float getBearingAccuracyDegrees(); method @IntRange(from=0) public long getElapsedRealtimeAgeMillis(); method public long getElapsedRealtimeAgeMillis(@IntRange(from=0) long); method @IntRange(from=0) public long getElapsedRealtimeMillis(); method @IntRange(from=0) public long getElapsedRealtimeNanos(); method @FloatRange(from=0.0) public double getElapsedRealtimeUncertaintyNanos(); method @Nullable public android.os.Bundle getExtras(); method @FloatRange public double getLatitude(); method @FloatRange public double getLongitude(); method @FloatRange(from=-90.0, to=90.0) public double getLatitude(); method @FloatRange(from=-180.0, to=180.0) public double getLongitude(); method @Nullable public String getProvider(); method @FloatRange public float getSpeed(); method @FloatRange public float getSpeedAccuracyMetersPerSecond(); method @IntRange public long getTime(); method @FloatRange public float getVerticalAccuracyMeters(); method @FloatRange(from=0.0) public float getSpeed(); method @FloatRange(from=0.0) public float getSpeedAccuracyMetersPerSecond(); method @IntRange(from=0) public long getTime(); method @FloatRange(from=0.0) public float getVerticalAccuracyMeters(); method public boolean hasAccuracy(); method public boolean hasAltitude(); method public boolean hasBearing(); Loading @@ -19506,21 +19506,21 @@ package android.location { method public void removeVerticalAccuracy(); method public void reset(); method public void set(@NonNull android.location.Location); method public void setAccuracy(@FloatRange float); method public void setAccuracy(@FloatRange(from=0.0) float); method public void setAltitude(@FloatRange double); method public void setBearing(@FloatRange(fromInclusive=false, toInclusive=false) float); method public void setBearingAccuracyDegrees(@FloatRange float); method public void setElapsedRealtimeNanos(@IntRange long); method public void setElapsedRealtimeUncertaintyNanos(@FloatRange double); method public void setBearingAccuracyDegrees(@FloatRange(from=0.0) float); method public void setElapsedRealtimeNanos(@IntRange(from=0) long); method public void setElapsedRealtimeUncertaintyNanos(@FloatRange(from=0.0) double); method public void setExtras(@Nullable android.os.Bundle); method public void setLatitude(@FloatRange double); method public void setLongitude(@FloatRange double); method public void setLatitude(@FloatRange(from=-90.0, to=90.0) double); method public void setLongitude(@FloatRange(from=-180.0, to=180.0) double); method public void setMock(boolean); method public void setProvider(@Nullable String); method public void setSpeed(@FloatRange float); method public void setSpeedAccuracyMetersPerSecond(@FloatRange float); method public void setTime(@IntRange long); method public void setVerticalAccuracyMeters(@FloatRange float); method public void setSpeed(@FloatRange(from=0.0) float); method public void setSpeedAccuracyMetersPerSecond(@FloatRange(from=0.0) float); method public void setTime(@IntRange(from=0) long); method public void setVerticalAccuracyMeters(@FloatRange(from=0.0) float); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.location.Location> CREATOR; field public static final int FORMAT_DEGREES = 0; // 0x0 location/java/android/location/Location.java +77 −71 Original line number Diff line number Diff line Loading @@ -132,31 +132,31 @@ public class Location implements Parcelable { } /** * Construct a new Location object that is copied from an existing one. * Constructs a new location copied from the given location. */ public Location(@NonNull Location l) { set(l); public Location(@NonNull Location location) { set(location); } /** * Turns this location into a copy of the given location. */ public void set(@NonNull Location l) { mFieldsMask = l.mFieldsMask; mProvider = l.mProvider; mTimeMs = l.mTimeMs; mElapsedRealtimeNs = l.mElapsedRealtimeNs; mElapsedRealtimeUncertaintyNs = l.mElapsedRealtimeUncertaintyNs; mLatitudeDegrees = l.mLatitudeDegrees; mLongitudeDegrees = l.mLongitudeDegrees; mHorizontalAccuracyMeters = l.mHorizontalAccuracyMeters; mAltitudeMeters = l.mAltitudeMeters; mAltitudeAccuracyMeters = l.mAltitudeAccuracyMeters; mSpeedMetersPerSecond = l.mSpeedMetersPerSecond; mSpeedAccuracyMetersPerSecond = l.mSpeedAccuracyMetersPerSecond; mBearingDegrees = l.mBearingDegrees; mBearingAccuracyDegrees = l.mBearingAccuracyDegrees; mExtras = (l.mExtras == null) ? null : new Bundle(l.mExtras); public void set(@NonNull Location location) { mFieldsMask = location.mFieldsMask; mProvider = location.mProvider; mTimeMs = location.mTimeMs; mElapsedRealtimeNs = location.mElapsedRealtimeNs; mElapsedRealtimeUncertaintyNs = location.mElapsedRealtimeUncertaintyNs; mLatitudeDegrees = location.mLatitudeDegrees; mLongitudeDegrees = location.mLongitudeDegrees; mHorizontalAccuracyMeters = location.mHorizontalAccuracyMeters; mAltitudeMeters = location.mAltitudeMeters; mAltitudeAccuracyMeters = location.mAltitudeAccuracyMeters; mSpeedMetersPerSecond = location.mSpeedMetersPerSecond; mSpeedAccuracyMetersPerSecond = location.mSpeedAccuracyMetersPerSecond; mBearingDegrees = location.mBearingDegrees; mBearingAccuracyDegrees = location.mBearingAccuracyDegrees; mExtras = (location.mExtras == null) ? null : new Bundle(location.mExtras); } /** Loading @@ -182,14 +182,13 @@ public class Location implements Parcelable { } /** * Returns the approximate distance in meters between this * location and the given location. Distance is defined using * the WGS84 ellipsoid. * Returns the approximate distance in meters between this location and the given location. * Distance is defined using the WGS84 ellipsoid. * * @param dest the destination location * @return the approximate distance in meters */ public @FloatRange float distanceTo(@NonNull Location dest) { public @FloatRange(from = 0.0) float distanceTo(@NonNull Location dest) { BearingDistanceCache cache = sBearingDistanceCache.get(); // See if we already have the result if (mLatitudeDegrees != cache.mLat1 || mLongitudeDegrees != cache.mLon1 Loading @@ -201,11 +200,10 @@ public class Location implements Parcelable { } /** * Returns the approximate initial bearing in degrees East of true * North when traveling along the shortest path between this * location and the given location. The shortest path is defined * using the WGS84 ellipsoid. Locations that are (nearly) * antipodal may produce meaningless results. * Returns the approximate initial bearing in degrees east of true north when traveling along * the shortest path between this location and the given location. The shortest path is defined * using the WGS84 ellipsoid. Locations that are (nearly) antipodal may produce meaningless * results. * * @param dest the destination location * @return the initial bearing in degrees Loading Loading @@ -254,7 +252,7 @@ public class Location implements Parcelable { * not be used to order or compare locations. Prefer {@link #getElapsedRealtimeNanos} for that * purpose, as the elapsed realtime clock is guaranteed to be monotonic. * * <p>On the other hand, this method may be useful for presenting a human readable time to the * <p>On the other hand, this method may be useful for presenting a human-readable time to the * user, or as a heuristic for comparing location fixes across reboot or across devices. * * <p>All locations generated by the {@link LocationManager} are guaranteed to have this time Loading @@ -263,25 +261,24 @@ public class Location implements Parcelable { * * @return the Unix epoch time of this location */ public @IntRange long getTime() { public @IntRange(from = 0) long getTime() { return mTimeMs; } /** * Sets the Unix epoch time of this location fix, in milliseconds since the start of the Unix * epoch (00:00:00 January 1, 1970 UTC). * epoch (00:00:00 January 1 1970 UTC). * * @param timeMs the Unix epoch time of this location * @see #getTime for more information about times / clocks */ public void setTime(@IntRange long timeMs) { public void setTime(@IntRange(from = 0) long timeMs) { mTimeMs = timeMs; } /** * Return the time of this fix in nanoseconds of elapsed realtime since system boot. * * <p>This value can be compared with {@link android.os.SystemClock#elapsedRealtimeNanos}, to * <p>This value can be compared with {@link android.os.SystemClock#elapsedRealtimeNanos} to * reliably order or compare locations. This is reliable because elapsed realtime is guaranteed * to be monotonic and continues to increment even when the system is in deep sleep (unlike * {@link #getTime}). However, since elapsed realtime is with reference to system boot, it does Loading @@ -292,7 +289,7 @@ public class Location implements Parcelable { * * @return elapsed realtime of this location in nanoseconds */ public @IntRange long getElapsedRealtimeNanos() { public @IntRange(from = 0) long getElapsedRealtimeNanos() { return mElapsedRealtimeNs; } Loading @@ -302,7 +299,7 @@ public class Location implements Parcelable { * @return elapsed realtime of this location in milliseconds * @see #getElapsedRealtimeNanos() */ public @IntRange long getElapsedRealtimeMillis() { public @IntRange(from = 0) long getElapsedRealtimeMillis() { return NANOSECONDS.toMillis(mElapsedRealtimeNs); } Loading @@ -312,7 +309,7 @@ public class Location implements Parcelable { * * @return age of this location in milliseconds */ public @IntRange long getElapsedRealtimeAgeMillis() { public @IntRange(from = 0) long getElapsedRealtimeAgeMillis() { return getElapsedRealtimeAgeMillis(SystemClock.elapsedRealtime()); } Loading @@ -323,7 +320,8 @@ public class Location implements Parcelable { * @param referenceRealtimeMs reference realtime in milliseconds * @return age of this location in milliseconds */ public @IntRange long getElapsedRealtimeAgeMillis(@IntRange long referenceRealtimeMs) { public long getElapsedRealtimeAgeMillis( @IntRange(from = 0) long referenceRealtimeMs) { return referenceRealtimeMs - getElapsedRealtimeMillis(); } Loading @@ -332,7 +330,7 @@ public class Location implements Parcelable { * * @param elapsedRealtimeNs elapsed realtime in nanoseconds */ public void setElapsedRealtimeNanos(@IntRange long elapsedRealtimeNs) { public void setElapsedRealtimeNanos(@IntRange(from = 0) long elapsedRealtimeNs) { mElapsedRealtimeNs = elapsedRealtimeNs; } Loading @@ -346,7 +344,7 @@ public class Location implements Parcelable { * * @return uncertainty in nanoseconds of the elapsed realtime of this location */ public @FloatRange double getElapsedRealtimeUncertaintyNanos() { public @FloatRange(from = 0.0) double getElapsedRealtimeUncertaintyNanos() { return mElapsedRealtimeUncertaintyNs; } Loading @@ -358,20 +356,20 @@ public class Location implements Parcelable { * this location */ public void setElapsedRealtimeUncertaintyNanos( @FloatRange double elapsedRealtimeUncertaintyNs) { @FloatRange(from = 0.0) double elapsedRealtimeUncertaintyNs) { mElapsedRealtimeUncertaintyNs = elapsedRealtimeUncertaintyNs; mFieldsMask |= HAS_ELAPSED_REALTIME_UNCERTAINTY_MASK; } /** * True if this location has a elapsed realtime uncertainty, false otherwise. * True if this location has an elapsed realtime uncertainty, false otherwise. */ public boolean hasElapsedRealtimeUncertaintyNanos() { return (mFieldsMask & HAS_ELAPSED_REALTIME_UNCERTAINTY_MASK) != 0; } /** * Removes the elapsed realtime uncertainy from this location. * Removes the elapsed realtime uncertainty from this location. */ public void removeElapsedRealtimeUncertaintyNanos() { mFieldsMask &= ~HAS_ELAPSED_REALTIME_UNCERTAINTY_MASK; Loading @@ -383,7 +381,7 @@ public class Location implements Parcelable { * * @return latitude of this location */ public @FloatRange double getLatitude() { public @FloatRange(from = -90.0, to = 90.0) double getLatitude() { return mLatitudeDegrees; } Loading @@ -392,7 +390,7 @@ public class Location implements Parcelable { * * @param latitudeDegrees latitude in degrees */ public void setLatitude(@FloatRange double latitudeDegrees) { public void setLatitude(@FloatRange(from = -90.0, to = 90.0) double latitudeDegrees) { mLatitudeDegrees = latitudeDegrees; } Loading @@ -402,7 +400,7 @@ public class Location implements Parcelable { * * @return longitude of this location */ public @FloatRange double getLongitude() { public @FloatRange(from = -180.0, to = 180.0) double getLongitude() { return mLongitudeDegrees; } Loading @@ -411,7 +409,7 @@ public class Location implements Parcelable { * * @param longitudeDegrees longitude in degrees */ public void setLongitude(@FloatRange double longitudeDegrees) { public void setLongitude(@FloatRange(from = -180.0, to = 180.0) double longitudeDegrees) { mLongitudeDegrees = longitudeDegrees; } Loading @@ -423,12 +421,12 @@ public class Location implements Parcelable { * reported location, there is a 68% chance that the true location falls within this circle. * This accuracy value is only valid for horizontal positioning, and not vertical positioning. * * <p>This is only valid if {@link #hasSpeed()} is true. All locations generated by the * <p>This is only valid if {@link #hasAccuracy()} is true. All locations generated by the * {@link LocationManager} include horizontal accuracy. * * @return horizontal accuracy of this location */ public @FloatRange float getAccuracy() { public @FloatRange(from = 0.0) float getAccuracy() { return mHorizontalAccuracyMeters; } Loading @@ -437,7 +435,7 @@ public class Location implements Parcelable { * * @param horizontalAccuracyMeters horizontal altitude in meters */ public void setAccuracy(@FloatRange float horizontalAccuracyMeters) { public void setAccuracy(@FloatRange(from = 0.0) float horizontalAccuracyMeters) { mHorizontalAccuracyMeters = horizontalAccuracyMeters; mFieldsMask |= HAS_HORIZONTAL_ACCURACY_MASK; } Loading Loading @@ -500,7 +498,7 @@ public class Location implements Parcelable { * * @return vertical accuracy of this location */ public @FloatRange float getVerticalAccuracyMeters() { public @FloatRange(from = 0.0) float getVerticalAccuracyMeters() { return mAltitudeAccuracyMeters; } Loading @@ -509,7 +507,7 @@ public class Location implements Parcelable { * * @param altitudeAccuracyMeters altitude accuracy in meters */ public void setVerticalAccuracyMeters(@FloatRange float altitudeAccuracyMeters) { public void setVerticalAccuracyMeters(@FloatRange(from = 0.0) float altitudeAccuracyMeters) { mAltitudeAccuracyMeters = altitudeAccuracyMeters; mFieldsMask |= HAS_ALTITUDE_ACCURACY_MASK; } Loading Loading @@ -538,17 +536,16 @@ public class Location implements Parcelable { * * @return speed at the time of this location */ public @FloatRange float getSpeed() { public @FloatRange(from = 0.0) float getSpeed() { return mSpeedMetersPerSecond; } /** * Set the speed at the time of this location, in meters per second. Prefer not to set negative * speeds. * Set the speed at the time of this location, in meters per second. * * @param speedMetersPerSecond speed in meters per second */ public void setSpeed(@FloatRange float speedMetersPerSecond) { public void setSpeed(@FloatRange(from = 0.0) float speedMetersPerSecond) { mSpeedMetersPerSecond = speedMetersPerSecond; mFieldsMask |= HAS_SPEED_MASK; } Loading Loading @@ -576,7 +573,7 @@ public class Location implements Parcelable { * * @return vertical accuracy of this location */ public @FloatRange float getSpeedAccuracyMetersPerSecond() { public @FloatRange(from = 0.0) float getSpeedAccuracyMetersPerSecond() { return mSpeedAccuracyMetersPerSecond; } Loading @@ -585,7 +582,8 @@ public class Location implements Parcelable { * * @param speedAccuracyMeterPerSecond speed accuracy in meters per second */ public void setSpeedAccuracyMetersPerSecond(@FloatRange float speedAccuracyMeterPerSecond) { public void setSpeedAccuracyMetersPerSecond( @FloatRange(from = 0.0) float speedAccuracyMeterPerSecond) { mSpeedAccuracyMetersPerSecond = speedAccuracyMeterPerSecond; mFieldsMask |= HAS_SPEED_ACCURACY_MASK; } Loading Loading @@ -613,7 +611,7 @@ public class Location implements Parcelable { * * @return bearing at the time of this location */ public @FloatRange(from = 0f, to = 360f, toInclusive = false) float getBearing() { public @FloatRange(from = 0.0, to = 360.0, toInclusive = false) float getBearing() { return mBearingDegrees; } Loading Loading @@ -663,7 +661,7 @@ public class Location implements Parcelable { * * @return bearing accuracy in degrees of this location */ public @FloatRange float getBearingAccuracyDegrees() { public @FloatRange(from = 0.0) float getBearingAccuracyDegrees() { return mBearingAccuracyDegrees; } Loading @@ -672,7 +670,7 @@ public class Location implements Parcelable { * * @param bearingAccuracyDegrees bearing accuracy in degrees */ public void setBearingAccuracyDegrees(@FloatRange float bearingAccuracyDegrees) { public void setBearingAccuracyDegrees(@FloatRange(from = 0.0) float bearingAccuracyDegrees) { mBearingAccuracyDegrees = bearingAccuracyDegrees; mFieldsMask |= HAS_BEARING_ACCURACY_MASK; } Loading @@ -692,9 +690,11 @@ public class Location implements Parcelable { } /** * Returns true if the Location came from a mock provider. * Returns true if this is a mock location. If this location comes from the Android framework, * this indicates that the location was provided by a test location provider, and thus may not * be related to the actual location of the device. * * @return true if this Location came from a mock provider, false otherwise * @return true if this location came from a mock provider, false otherwise * @deprecated Prefer {@link #isMock()} instead. */ @Deprecated Loading @@ -703,9 +703,9 @@ public class Location implements Parcelable { } /** * Flag this Location as having come from a mock provider or not. * Flag this location as having come from a mock provider or not. * * @param isFromMockProvider true if this Location came from a mock provider, false otherwise * @param isFromMockProvider true if this location came from a mock provider, false otherwise * @deprecated Prefer {@link #setMock(boolean)} instead. * @hide */ Loading Loading @@ -745,7 +745,7 @@ public class Location implements Parcelable { * will be present for any location. * * <ul> * <li> satellites - the number of satellites used to derive the GNSS fix * <li> satellites - the number of satellites used to derive a GNSS fix * </ul> */ public @Nullable Bundle getExtras() { Loading Loading @@ -899,7 +899,13 @@ public class Location implements Parcelable { return s.toString(); } /** Dumps location. */ /** * Dumps location information to the given Printer. * * @deprecated Prefer to use {@link #toString()} along with whatever custom formatting is * required instead of this method. It is not this class's job to manage print representations. */ @Deprecated public void dump(@NonNull Printer pw, @Nullable String prefix) { pw.println(prefix + this); } Loading Loading @@ -1209,10 +1215,10 @@ public class Location implements Parcelable { * @throws IllegalArgumentException if results is null or has length < 1 */ public static void distanceBetween( @FloatRange double startLatitude, @FloatRange double startLongitude, @FloatRange double endLatitude, @FloatRange double endLongitude, @FloatRange(from = -90.0, to = 90.0) double startLatitude, @FloatRange(from = -180.0, to = 180.0) double startLongitude, @FloatRange(from = -90.0, to = 90.0) double endLatitude, @FloatRange(from = -180.0, to = 180.0) double endLongitude, float[] results) { if (results == null || results.length < 1) { throw new IllegalArgumentException("results is null or has length < 1"); Loading Loading
core/api/current.txt +27 −27 Original line number Diff line number Diff line Loading @@ -19465,26 +19465,26 @@ package android.location { method @NonNull public static String convert(@FloatRange double, int); method @FloatRange public static double convert(@NonNull String); method public int describeContents(); method public static void distanceBetween(@FloatRange double, @FloatRange double, @FloatRange double, @FloatRange double, float[]); method @FloatRange public float distanceTo(@NonNull android.location.Location); method public void dump(@NonNull android.util.Printer, @Nullable String); method @FloatRange public float getAccuracy(); method public static void distanceBetween(@FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, float[]); method @FloatRange(from=0.0) public float distanceTo(@NonNull android.location.Location); method @Deprecated public void dump(@NonNull android.util.Printer, @Nullable String); method @FloatRange(from=0.0) public float getAccuracy(); method @FloatRange public double getAltitude(); method @FloatRange(from=0.0f, to=360.0f, toInclusive=false) public float getBearing(); method @FloatRange public float getBearingAccuracyDegrees(); method @IntRange public long getElapsedRealtimeAgeMillis(); method @IntRange public long getElapsedRealtimeAgeMillis(@IntRange long); method @IntRange public long getElapsedRealtimeMillis(); method @IntRange public long getElapsedRealtimeNanos(); method @FloatRange public double getElapsedRealtimeUncertaintyNanos(); method @FloatRange(from=0.0, to=360.0, toInclusive=false) public float getBearing(); method @FloatRange(from=0.0) public float getBearingAccuracyDegrees(); method @IntRange(from=0) public long getElapsedRealtimeAgeMillis(); method public long getElapsedRealtimeAgeMillis(@IntRange(from=0) long); method @IntRange(from=0) public long getElapsedRealtimeMillis(); method @IntRange(from=0) public long getElapsedRealtimeNanos(); method @FloatRange(from=0.0) public double getElapsedRealtimeUncertaintyNanos(); method @Nullable public android.os.Bundle getExtras(); method @FloatRange public double getLatitude(); method @FloatRange public double getLongitude(); method @FloatRange(from=-90.0, to=90.0) public double getLatitude(); method @FloatRange(from=-180.0, to=180.0) public double getLongitude(); method @Nullable public String getProvider(); method @FloatRange public float getSpeed(); method @FloatRange public float getSpeedAccuracyMetersPerSecond(); method @IntRange public long getTime(); method @FloatRange public float getVerticalAccuracyMeters(); method @FloatRange(from=0.0) public float getSpeed(); method @FloatRange(from=0.0) public float getSpeedAccuracyMetersPerSecond(); method @IntRange(from=0) public long getTime(); method @FloatRange(from=0.0) public float getVerticalAccuracyMeters(); method public boolean hasAccuracy(); method public boolean hasAltitude(); method public boolean hasBearing(); Loading @@ -19506,21 +19506,21 @@ package android.location { method public void removeVerticalAccuracy(); method public void reset(); method public void set(@NonNull android.location.Location); method public void setAccuracy(@FloatRange float); method public void setAccuracy(@FloatRange(from=0.0) float); method public void setAltitude(@FloatRange double); method public void setBearing(@FloatRange(fromInclusive=false, toInclusive=false) float); method public void setBearingAccuracyDegrees(@FloatRange float); method public void setElapsedRealtimeNanos(@IntRange long); method public void setElapsedRealtimeUncertaintyNanos(@FloatRange double); method public void setBearingAccuracyDegrees(@FloatRange(from=0.0) float); method public void setElapsedRealtimeNanos(@IntRange(from=0) long); method public void setElapsedRealtimeUncertaintyNanos(@FloatRange(from=0.0) double); method public void setExtras(@Nullable android.os.Bundle); method public void setLatitude(@FloatRange double); method public void setLongitude(@FloatRange double); method public void setLatitude(@FloatRange(from=-90.0, to=90.0) double); method public void setLongitude(@FloatRange(from=-180.0, to=180.0) double); method public void setMock(boolean); method public void setProvider(@Nullable String); method public void setSpeed(@FloatRange float); method public void setSpeedAccuracyMetersPerSecond(@FloatRange float); method public void setTime(@IntRange long); method public void setVerticalAccuracyMeters(@FloatRange float); method public void setSpeed(@FloatRange(from=0.0) float); method public void setSpeedAccuracyMetersPerSecond(@FloatRange(from=0.0) float); method public void setTime(@IntRange(from=0) long); method public void setVerticalAccuracyMeters(@FloatRange(from=0.0) float); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.location.Location> CREATOR; field public static final int FORMAT_DEGREES = 0; // 0x0
location/java/android/location/Location.java +77 −71 Original line number Diff line number Diff line Loading @@ -132,31 +132,31 @@ public class Location implements Parcelable { } /** * Construct a new Location object that is copied from an existing one. * Constructs a new location copied from the given location. */ public Location(@NonNull Location l) { set(l); public Location(@NonNull Location location) { set(location); } /** * Turns this location into a copy of the given location. */ public void set(@NonNull Location l) { mFieldsMask = l.mFieldsMask; mProvider = l.mProvider; mTimeMs = l.mTimeMs; mElapsedRealtimeNs = l.mElapsedRealtimeNs; mElapsedRealtimeUncertaintyNs = l.mElapsedRealtimeUncertaintyNs; mLatitudeDegrees = l.mLatitudeDegrees; mLongitudeDegrees = l.mLongitudeDegrees; mHorizontalAccuracyMeters = l.mHorizontalAccuracyMeters; mAltitudeMeters = l.mAltitudeMeters; mAltitudeAccuracyMeters = l.mAltitudeAccuracyMeters; mSpeedMetersPerSecond = l.mSpeedMetersPerSecond; mSpeedAccuracyMetersPerSecond = l.mSpeedAccuracyMetersPerSecond; mBearingDegrees = l.mBearingDegrees; mBearingAccuracyDegrees = l.mBearingAccuracyDegrees; mExtras = (l.mExtras == null) ? null : new Bundle(l.mExtras); public void set(@NonNull Location location) { mFieldsMask = location.mFieldsMask; mProvider = location.mProvider; mTimeMs = location.mTimeMs; mElapsedRealtimeNs = location.mElapsedRealtimeNs; mElapsedRealtimeUncertaintyNs = location.mElapsedRealtimeUncertaintyNs; mLatitudeDegrees = location.mLatitudeDegrees; mLongitudeDegrees = location.mLongitudeDegrees; mHorizontalAccuracyMeters = location.mHorizontalAccuracyMeters; mAltitudeMeters = location.mAltitudeMeters; mAltitudeAccuracyMeters = location.mAltitudeAccuracyMeters; mSpeedMetersPerSecond = location.mSpeedMetersPerSecond; mSpeedAccuracyMetersPerSecond = location.mSpeedAccuracyMetersPerSecond; mBearingDegrees = location.mBearingDegrees; mBearingAccuracyDegrees = location.mBearingAccuracyDegrees; mExtras = (location.mExtras == null) ? null : new Bundle(location.mExtras); } /** Loading @@ -182,14 +182,13 @@ public class Location implements Parcelable { } /** * Returns the approximate distance in meters between this * location and the given location. Distance is defined using * the WGS84 ellipsoid. * Returns the approximate distance in meters between this location and the given location. * Distance is defined using the WGS84 ellipsoid. * * @param dest the destination location * @return the approximate distance in meters */ public @FloatRange float distanceTo(@NonNull Location dest) { public @FloatRange(from = 0.0) float distanceTo(@NonNull Location dest) { BearingDistanceCache cache = sBearingDistanceCache.get(); // See if we already have the result if (mLatitudeDegrees != cache.mLat1 || mLongitudeDegrees != cache.mLon1 Loading @@ -201,11 +200,10 @@ public class Location implements Parcelable { } /** * Returns the approximate initial bearing in degrees East of true * North when traveling along the shortest path between this * location and the given location. The shortest path is defined * using the WGS84 ellipsoid. Locations that are (nearly) * antipodal may produce meaningless results. * Returns the approximate initial bearing in degrees east of true north when traveling along * the shortest path between this location and the given location. The shortest path is defined * using the WGS84 ellipsoid. Locations that are (nearly) antipodal may produce meaningless * results. * * @param dest the destination location * @return the initial bearing in degrees Loading Loading @@ -254,7 +252,7 @@ public class Location implements Parcelable { * not be used to order or compare locations. Prefer {@link #getElapsedRealtimeNanos} for that * purpose, as the elapsed realtime clock is guaranteed to be monotonic. * * <p>On the other hand, this method may be useful for presenting a human readable time to the * <p>On the other hand, this method may be useful for presenting a human-readable time to the * user, or as a heuristic for comparing location fixes across reboot or across devices. * * <p>All locations generated by the {@link LocationManager} are guaranteed to have this time Loading @@ -263,25 +261,24 @@ public class Location implements Parcelable { * * @return the Unix epoch time of this location */ public @IntRange long getTime() { public @IntRange(from = 0) long getTime() { return mTimeMs; } /** * Sets the Unix epoch time of this location fix, in milliseconds since the start of the Unix * epoch (00:00:00 January 1, 1970 UTC). * epoch (00:00:00 January 1 1970 UTC). * * @param timeMs the Unix epoch time of this location * @see #getTime for more information about times / clocks */ public void setTime(@IntRange long timeMs) { public void setTime(@IntRange(from = 0) long timeMs) { mTimeMs = timeMs; } /** * Return the time of this fix in nanoseconds of elapsed realtime since system boot. * * <p>This value can be compared with {@link android.os.SystemClock#elapsedRealtimeNanos}, to * <p>This value can be compared with {@link android.os.SystemClock#elapsedRealtimeNanos} to * reliably order or compare locations. This is reliable because elapsed realtime is guaranteed * to be monotonic and continues to increment even when the system is in deep sleep (unlike * {@link #getTime}). However, since elapsed realtime is with reference to system boot, it does Loading @@ -292,7 +289,7 @@ public class Location implements Parcelable { * * @return elapsed realtime of this location in nanoseconds */ public @IntRange long getElapsedRealtimeNanos() { public @IntRange(from = 0) long getElapsedRealtimeNanos() { return mElapsedRealtimeNs; } Loading @@ -302,7 +299,7 @@ public class Location implements Parcelable { * @return elapsed realtime of this location in milliseconds * @see #getElapsedRealtimeNanos() */ public @IntRange long getElapsedRealtimeMillis() { public @IntRange(from = 0) long getElapsedRealtimeMillis() { return NANOSECONDS.toMillis(mElapsedRealtimeNs); } Loading @@ -312,7 +309,7 @@ public class Location implements Parcelable { * * @return age of this location in milliseconds */ public @IntRange long getElapsedRealtimeAgeMillis() { public @IntRange(from = 0) long getElapsedRealtimeAgeMillis() { return getElapsedRealtimeAgeMillis(SystemClock.elapsedRealtime()); } Loading @@ -323,7 +320,8 @@ public class Location implements Parcelable { * @param referenceRealtimeMs reference realtime in milliseconds * @return age of this location in milliseconds */ public @IntRange long getElapsedRealtimeAgeMillis(@IntRange long referenceRealtimeMs) { public long getElapsedRealtimeAgeMillis( @IntRange(from = 0) long referenceRealtimeMs) { return referenceRealtimeMs - getElapsedRealtimeMillis(); } Loading @@ -332,7 +330,7 @@ public class Location implements Parcelable { * * @param elapsedRealtimeNs elapsed realtime in nanoseconds */ public void setElapsedRealtimeNanos(@IntRange long elapsedRealtimeNs) { public void setElapsedRealtimeNanos(@IntRange(from = 0) long elapsedRealtimeNs) { mElapsedRealtimeNs = elapsedRealtimeNs; } Loading @@ -346,7 +344,7 @@ public class Location implements Parcelable { * * @return uncertainty in nanoseconds of the elapsed realtime of this location */ public @FloatRange double getElapsedRealtimeUncertaintyNanos() { public @FloatRange(from = 0.0) double getElapsedRealtimeUncertaintyNanos() { return mElapsedRealtimeUncertaintyNs; } Loading @@ -358,20 +356,20 @@ public class Location implements Parcelable { * this location */ public void setElapsedRealtimeUncertaintyNanos( @FloatRange double elapsedRealtimeUncertaintyNs) { @FloatRange(from = 0.0) double elapsedRealtimeUncertaintyNs) { mElapsedRealtimeUncertaintyNs = elapsedRealtimeUncertaintyNs; mFieldsMask |= HAS_ELAPSED_REALTIME_UNCERTAINTY_MASK; } /** * True if this location has a elapsed realtime uncertainty, false otherwise. * True if this location has an elapsed realtime uncertainty, false otherwise. */ public boolean hasElapsedRealtimeUncertaintyNanos() { return (mFieldsMask & HAS_ELAPSED_REALTIME_UNCERTAINTY_MASK) != 0; } /** * Removes the elapsed realtime uncertainy from this location. * Removes the elapsed realtime uncertainty from this location. */ public void removeElapsedRealtimeUncertaintyNanos() { mFieldsMask &= ~HAS_ELAPSED_REALTIME_UNCERTAINTY_MASK; Loading @@ -383,7 +381,7 @@ public class Location implements Parcelable { * * @return latitude of this location */ public @FloatRange double getLatitude() { public @FloatRange(from = -90.0, to = 90.0) double getLatitude() { return mLatitudeDegrees; } Loading @@ -392,7 +390,7 @@ public class Location implements Parcelable { * * @param latitudeDegrees latitude in degrees */ public void setLatitude(@FloatRange double latitudeDegrees) { public void setLatitude(@FloatRange(from = -90.0, to = 90.0) double latitudeDegrees) { mLatitudeDegrees = latitudeDegrees; } Loading @@ -402,7 +400,7 @@ public class Location implements Parcelable { * * @return longitude of this location */ public @FloatRange double getLongitude() { public @FloatRange(from = -180.0, to = 180.0) double getLongitude() { return mLongitudeDegrees; } Loading @@ -411,7 +409,7 @@ public class Location implements Parcelable { * * @param longitudeDegrees longitude in degrees */ public void setLongitude(@FloatRange double longitudeDegrees) { public void setLongitude(@FloatRange(from = -180.0, to = 180.0) double longitudeDegrees) { mLongitudeDegrees = longitudeDegrees; } Loading @@ -423,12 +421,12 @@ public class Location implements Parcelable { * reported location, there is a 68% chance that the true location falls within this circle. * This accuracy value is only valid for horizontal positioning, and not vertical positioning. * * <p>This is only valid if {@link #hasSpeed()} is true. All locations generated by the * <p>This is only valid if {@link #hasAccuracy()} is true. All locations generated by the * {@link LocationManager} include horizontal accuracy. * * @return horizontal accuracy of this location */ public @FloatRange float getAccuracy() { public @FloatRange(from = 0.0) float getAccuracy() { return mHorizontalAccuracyMeters; } Loading @@ -437,7 +435,7 @@ public class Location implements Parcelable { * * @param horizontalAccuracyMeters horizontal altitude in meters */ public void setAccuracy(@FloatRange float horizontalAccuracyMeters) { public void setAccuracy(@FloatRange(from = 0.0) float horizontalAccuracyMeters) { mHorizontalAccuracyMeters = horizontalAccuracyMeters; mFieldsMask |= HAS_HORIZONTAL_ACCURACY_MASK; } Loading Loading @@ -500,7 +498,7 @@ public class Location implements Parcelable { * * @return vertical accuracy of this location */ public @FloatRange float getVerticalAccuracyMeters() { public @FloatRange(from = 0.0) float getVerticalAccuracyMeters() { return mAltitudeAccuracyMeters; } Loading @@ -509,7 +507,7 @@ public class Location implements Parcelable { * * @param altitudeAccuracyMeters altitude accuracy in meters */ public void setVerticalAccuracyMeters(@FloatRange float altitudeAccuracyMeters) { public void setVerticalAccuracyMeters(@FloatRange(from = 0.0) float altitudeAccuracyMeters) { mAltitudeAccuracyMeters = altitudeAccuracyMeters; mFieldsMask |= HAS_ALTITUDE_ACCURACY_MASK; } Loading Loading @@ -538,17 +536,16 @@ public class Location implements Parcelable { * * @return speed at the time of this location */ public @FloatRange float getSpeed() { public @FloatRange(from = 0.0) float getSpeed() { return mSpeedMetersPerSecond; } /** * Set the speed at the time of this location, in meters per second. Prefer not to set negative * speeds. * Set the speed at the time of this location, in meters per second. * * @param speedMetersPerSecond speed in meters per second */ public void setSpeed(@FloatRange float speedMetersPerSecond) { public void setSpeed(@FloatRange(from = 0.0) float speedMetersPerSecond) { mSpeedMetersPerSecond = speedMetersPerSecond; mFieldsMask |= HAS_SPEED_MASK; } Loading Loading @@ -576,7 +573,7 @@ public class Location implements Parcelable { * * @return vertical accuracy of this location */ public @FloatRange float getSpeedAccuracyMetersPerSecond() { public @FloatRange(from = 0.0) float getSpeedAccuracyMetersPerSecond() { return mSpeedAccuracyMetersPerSecond; } Loading @@ -585,7 +582,8 @@ public class Location implements Parcelable { * * @param speedAccuracyMeterPerSecond speed accuracy in meters per second */ public void setSpeedAccuracyMetersPerSecond(@FloatRange float speedAccuracyMeterPerSecond) { public void setSpeedAccuracyMetersPerSecond( @FloatRange(from = 0.0) float speedAccuracyMeterPerSecond) { mSpeedAccuracyMetersPerSecond = speedAccuracyMeterPerSecond; mFieldsMask |= HAS_SPEED_ACCURACY_MASK; } Loading Loading @@ -613,7 +611,7 @@ public class Location implements Parcelable { * * @return bearing at the time of this location */ public @FloatRange(from = 0f, to = 360f, toInclusive = false) float getBearing() { public @FloatRange(from = 0.0, to = 360.0, toInclusive = false) float getBearing() { return mBearingDegrees; } Loading Loading @@ -663,7 +661,7 @@ public class Location implements Parcelable { * * @return bearing accuracy in degrees of this location */ public @FloatRange float getBearingAccuracyDegrees() { public @FloatRange(from = 0.0) float getBearingAccuracyDegrees() { return mBearingAccuracyDegrees; } Loading @@ -672,7 +670,7 @@ public class Location implements Parcelable { * * @param bearingAccuracyDegrees bearing accuracy in degrees */ public void setBearingAccuracyDegrees(@FloatRange float bearingAccuracyDegrees) { public void setBearingAccuracyDegrees(@FloatRange(from = 0.0) float bearingAccuracyDegrees) { mBearingAccuracyDegrees = bearingAccuracyDegrees; mFieldsMask |= HAS_BEARING_ACCURACY_MASK; } Loading @@ -692,9 +690,11 @@ public class Location implements Parcelable { } /** * Returns true if the Location came from a mock provider. * Returns true if this is a mock location. If this location comes from the Android framework, * this indicates that the location was provided by a test location provider, and thus may not * be related to the actual location of the device. * * @return true if this Location came from a mock provider, false otherwise * @return true if this location came from a mock provider, false otherwise * @deprecated Prefer {@link #isMock()} instead. */ @Deprecated Loading @@ -703,9 +703,9 @@ public class Location implements Parcelable { } /** * Flag this Location as having come from a mock provider or not. * Flag this location as having come from a mock provider or not. * * @param isFromMockProvider true if this Location came from a mock provider, false otherwise * @param isFromMockProvider true if this location came from a mock provider, false otherwise * @deprecated Prefer {@link #setMock(boolean)} instead. * @hide */ Loading Loading @@ -745,7 +745,7 @@ public class Location implements Parcelable { * will be present for any location. * * <ul> * <li> satellites - the number of satellites used to derive the GNSS fix * <li> satellites - the number of satellites used to derive a GNSS fix * </ul> */ public @Nullable Bundle getExtras() { Loading Loading @@ -899,7 +899,13 @@ public class Location implements Parcelable { return s.toString(); } /** Dumps location. */ /** * Dumps location information to the given Printer. * * @deprecated Prefer to use {@link #toString()} along with whatever custom formatting is * required instead of this method. It is not this class's job to manage print representations. */ @Deprecated public void dump(@NonNull Printer pw, @Nullable String prefix) { pw.println(prefix + this); } Loading Loading @@ -1209,10 +1215,10 @@ public class Location implements Parcelable { * @throws IllegalArgumentException if results is null or has length < 1 */ public static void distanceBetween( @FloatRange double startLatitude, @FloatRange double startLongitude, @FloatRange double endLatitude, @FloatRange double endLongitude, @FloatRange(from = -90.0, to = 90.0) double startLatitude, @FloatRange(from = -180.0, to = 180.0) double startLongitude, @FloatRange(from = -90.0, to = 90.0) double endLatitude, @FloatRange(from = -180.0, to = 180.0) double endLongitude, float[] results) { if (results == null || results.length < 1) { throw new IllegalArgumentException("results is null or has length < 1"); Loading