Loading location/java/android/location/LocationRequest.java +37 −43 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.compat.annotation.ChangeId; import android.compat.annotation.EnabledAfter; import android.compat.annotation.UnsupportedAppUsage; import android.os.Build; import android.os.Parcel; import android.os.Parcelable; Loading Loading @@ -180,13 +179,9 @@ public final class LocationRequest implements Parcelable { private static final long IMPLICIT_MIN_UPDATE_INTERVAL = -1; private static final double IMPLICIT_MIN_UPDATE_INTERVAL_FACTOR = 1D / 6D; @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, publicAlternatives = "Use {@link " + "LocationManager} methods to provide the provider explicitly.") @Nullable private String mProvider; private @Nullable String mProvider; private @Quality int mQuality; @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, publicAlternatives = "Use {@link " + "LocationRequest} instead.") private long mInterval; private long mIntervalMillis; private long mMinUpdateIntervalMillis; private long mExpireAtRealtimeMillis; private long mDurationMillis; Loading @@ -195,7 +190,7 @@ public final class LocationRequest implements Parcelable { private final long mMaxUpdateDelayMillis; private boolean mHideFromAppOps; private final boolean mAdasGnssBypass; private boolean mLocationSettingsIgnored; private boolean mBypass; private boolean mLowPower; private @Nullable WorkSource mWorkSource; Loading @@ -208,9 +203,7 @@ public final class LocationRequest implements Parcelable { @NonNull public static LocationRequest create() { // 60 minutes is the default legacy interval return new LocationRequest.Builder(60 * 60 * 1000) .setQuality(QUALITY_LOW_POWER) .build(); return new LocationRequest.Builder(60 * 60 * 1000).build(); } /** Loading Loading @@ -239,7 +232,7 @@ public final class LocationRequest implements Parcelable { } else if (LocationManager.GPS_PROVIDER.equals(provider)) { quality = QUALITY_HIGH_ACCURACY; } else { quality = POWER_LOW; quality = QUALITY_BALANCED_POWER_ACCURACY; } return new LocationRequest.Builder(intervalMillis) Loading Loading @@ -291,11 +284,11 @@ public final class LocationRequest implements Parcelable { long maxUpdateDelayMillis, boolean hiddenFromAppOps, boolean adasGnssBypass, boolean locationSettingsIgnored, boolean bypass, boolean lowPower, WorkSource workSource) { mProvider = provider; mInterval = intervalMillis; mIntervalMillis = intervalMillis; mQuality = quality; mMinUpdateIntervalMillis = minUpdateIntervalMillis; mExpireAtRealtimeMillis = expireAtRealtimeMillis; Loading @@ -305,7 +298,7 @@ public final class LocationRequest implements Parcelable { mMaxUpdateDelayMillis = maxUpdateDelayMillis; mHideFromAppOps = hiddenFromAppOps; mAdasGnssBypass = adasGnssBypass; mLocationSettingsIgnored = locationSettingsIgnored; mBypass = bypass; mLowPower = lowPower; mWorkSource = Objects.requireNonNull(workSource); } Loading Loading @@ -354,7 +347,7 @@ public final class LocationRequest implements Parcelable { mQuality = QUALITY_LOW_POWER; break; case POWER_NONE: mInterval = PASSIVE_INTERVAL; mIntervalMillis = PASSIVE_INTERVAL; break; default: throw new IllegalArgumentException("invalid quality: " + quality); Loading Loading @@ -388,9 +381,9 @@ public final class LocationRequest implements Parcelable { millis = Long.MAX_VALUE - 1; } mInterval = millis; if (mMinUpdateIntervalMillis > mInterval) { mMinUpdateIntervalMillis = mInterval; mIntervalMillis = millis; if (mMinUpdateIntervalMillis > mIntervalMillis) { mMinUpdateIntervalMillis = mIntervalMillis; } return this; } Loading Loading @@ -418,7 +411,7 @@ public final class LocationRequest implements Parcelable { * @return the desired interval of location updates */ public @IntRange(from = 0) long getIntervalMillis() { return mInterval; return mIntervalMillis; } /** Loading Loading @@ -556,11 +549,11 @@ public final class LocationRequest implements Parcelable { */ public @IntRange(from = 0) long getMinUpdateIntervalMillis() { if (mMinUpdateIntervalMillis == IMPLICIT_MIN_UPDATE_INTERVAL) { return (long) (mInterval * IMPLICIT_MIN_UPDATE_INTERVAL_FACTOR); return (long) (mIntervalMillis * IMPLICIT_MIN_UPDATE_INTERVAL_FACTOR); } else { // the min is only necessary in case someone use a deprecated function to mess with the // interval or min update interval return min(mMinUpdateIntervalMillis, mInterval); return min(mMinUpdateIntervalMillis, mIntervalMillis); } } Loading Loading @@ -673,7 +666,7 @@ public final class LocationRequest implements Parcelable { @Deprecated @RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS) public @NonNull LocationRequest setLocationSettingsIgnored(boolean locationSettingsIgnored) { mLocationSettingsIgnored = locationSettingsIgnored; mBypass = locationSettingsIgnored; return this; } Loading @@ -687,7 +680,7 @@ public final class LocationRequest implements Parcelable { */ @SystemApi public boolean isLocationSettingsIgnored() { return mLocationSettingsIgnored; return mBypass; } /** Loading @@ -696,7 +689,7 @@ public final class LocationRequest implements Parcelable { * @hide */ public boolean isBypass() { return mAdasGnssBypass || mLocationSettingsIgnored; return mAdasGnssBypass || mBypass; } /** Loading Loading @@ -796,7 +789,7 @@ public final class LocationRequest implements Parcelable { @Override public void writeToParcel(@NonNull Parcel parcel, int flags) { parcel.writeString(mProvider); parcel.writeLong(mInterval); parcel.writeLong(mIntervalMillis); parcel.writeInt(mQuality); parcel.writeLong(mExpireAtRealtimeMillis); parcel.writeLong(mDurationMillis); Loading @@ -806,7 +799,7 @@ public final class LocationRequest implements Parcelable { parcel.writeLong(mMaxUpdateDelayMillis); parcel.writeBoolean(mHideFromAppOps); parcel.writeBoolean(mAdasGnssBypass); parcel.writeBoolean(mLocationSettingsIgnored); parcel.writeBoolean(mBypass); parcel.writeBoolean(mLowPower); parcel.writeTypedObject(mWorkSource, 0); } Loading @@ -821,7 +814,7 @@ public final class LocationRequest implements Parcelable { } LocationRequest that = (LocationRequest) o; return mInterval == that.mInterval return mIntervalMillis == that.mIntervalMillis && mQuality == that.mQuality && mExpireAtRealtimeMillis == that.mExpireAtRealtimeMillis && mDurationMillis == that.mDurationMillis Loading @@ -831,7 +824,7 @@ public final class LocationRequest implements Parcelable { && mMaxUpdateDelayMillis == that.mMaxUpdateDelayMillis && mHideFromAppOps == that.mHideFromAppOps && mAdasGnssBypass == that.mAdasGnssBypass && mLocationSettingsIgnored == that.mLocationSettingsIgnored && mBypass == that.mBypass && mLowPower == that.mLowPower && Objects.equals(mProvider, that.mProvider) && Objects.equals(mWorkSource, that.mWorkSource); Loading @@ -839,7 +832,7 @@ public final class LocationRequest implements Parcelable { @Override public int hashCode() { return Objects.hash(mProvider, mInterval, mWorkSource); return Objects.hash(mProvider, mIntervalMillis, mWorkSource); } @NonNull Loading @@ -850,9 +843,9 @@ public final class LocationRequest implements Parcelable { if (mProvider != null) { s.append(mProvider).append(" "); } if (mInterval != PASSIVE_INTERVAL) { if (mIntervalMillis != PASSIVE_INTERVAL) { s.append("@"); TimeUtils.formatDuration(mInterval, s); TimeUtils.formatDuration(mIntervalMillis, s); switch (mQuality) { case QUALITY_HIGH_ACCURACY: Loading @@ -879,14 +872,14 @@ public final class LocationRequest implements Parcelable { s.append(", maxUpdates=").append(mMaxUpdates); } if (mMinUpdateIntervalMillis != IMPLICIT_MIN_UPDATE_INTERVAL && mMinUpdateIntervalMillis < mInterval) { && mMinUpdateIntervalMillis < mIntervalMillis) { s.append(", minUpdateInterval="); TimeUtils.formatDuration(mMinUpdateIntervalMillis, s); } if (mMinUpdateDistanceMeters > 0.0) { s.append(", minUpdateDistance=").append(mMinUpdateDistanceMeters); } if (mMaxUpdateDelayMillis / 2 > mInterval) { if (mMaxUpdateDelayMillis / 2 > mIntervalMillis) { s.append(", maxUpdateDelay="); TimeUtils.formatDuration(mMaxUpdateDelayMillis, s); } Loading @@ -899,8 +892,8 @@ public final class LocationRequest implements Parcelable { if (mAdasGnssBypass) { s.append(", adasGnssBypass"); } if (mLocationSettingsIgnored) { s.append(", settingsBypass"); if (mBypass) { s.append(", bypass"); } if (mWorkSource != null && !mWorkSource.isEmpty()) { s.append(", ").append(mWorkSource); Loading @@ -923,7 +916,7 @@ public final class LocationRequest implements Parcelable { private long mMaxUpdateDelayMillis; private boolean mHiddenFromAppOps; private boolean mAdasGnssBypass; private boolean mLocationSettingsIgnored; private boolean mBypass; private boolean mLowPower; @Nullable private WorkSource mWorkSource; Loading @@ -943,7 +936,7 @@ public final class LocationRequest implements Parcelable { mMaxUpdateDelayMillis = 0; mHiddenFromAppOps = false; mAdasGnssBypass = false; mLocationSettingsIgnored = false; mBypass = false; mLowPower = false; mWorkSource = null; } Loading @@ -952,7 +945,7 @@ public final class LocationRequest implements Parcelable { * Creates a new Builder with all parameters copied from the given location request. */ public Builder(@NonNull LocationRequest locationRequest) { mIntervalMillis = locationRequest.mInterval; mIntervalMillis = locationRequest.mIntervalMillis; mQuality = locationRequest.mQuality; mDurationMillis = locationRequest.mDurationMillis; mMaxUpdates = locationRequest.mMaxUpdates; Loading @@ -961,7 +954,7 @@ public final class LocationRequest implements Parcelable { mMaxUpdateDelayMillis = locationRequest.mMaxUpdateDelayMillis; mHiddenFromAppOps = locationRequest.mHideFromAppOps; mAdasGnssBypass = locationRequest.mAdasGnssBypass; mLocationSettingsIgnored = locationRequest.mLocationSettingsIgnored; mBypass = locationRequest.mBypass; mLowPower = locationRequest.mLowPower; mWorkSource = locationRequest.mWorkSource; Loading Loading @@ -1160,14 +1153,15 @@ public final class LocationRequest implements Parcelable { @SystemApi @RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS) public @NonNull Builder setLocationSettingsIgnored(boolean locationSettingsIgnored) { mLocationSettingsIgnored = locationSettingsIgnored; mBypass = locationSettingsIgnored; return this; } /** * It set to true, indicates that extreme trade-offs should be made if possible to save * power for this request. This usually involves specialized hardware modes which can * greatly affect the quality of locations. Defaults to false. * greatly affect the quality of locations. Not all devices may support this. Defaults to * false. * * <p>Permissions enforcement occurs when resulting location request is actually used, not * when this method is invoked. Loading Loading @@ -1227,7 +1221,7 @@ public final class LocationRequest implements Parcelable { mMaxUpdateDelayMillis, mHiddenFromAppOps, mAdasGnssBypass, mLocationSettingsIgnored, mBypass, mLowPower, new WorkSource(mWorkSource)); } Loading Loading
location/java/android/location/LocationRequest.java +37 −43 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.compat.annotation.ChangeId; import android.compat.annotation.EnabledAfter; import android.compat.annotation.UnsupportedAppUsage; import android.os.Build; import android.os.Parcel; import android.os.Parcelable; Loading Loading @@ -180,13 +179,9 @@ public final class LocationRequest implements Parcelable { private static final long IMPLICIT_MIN_UPDATE_INTERVAL = -1; private static final double IMPLICIT_MIN_UPDATE_INTERVAL_FACTOR = 1D / 6D; @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, publicAlternatives = "Use {@link " + "LocationManager} methods to provide the provider explicitly.") @Nullable private String mProvider; private @Nullable String mProvider; private @Quality int mQuality; @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, publicAlternatives = "Use {@link " + "LocationRequest} instead.") private long mInterval; private long mIntervalMillis; private long mMinUpdateIntervalMillis; private long mExpireAtRealtimeMillis; private long mDurationMillis; Loading @@ -195,7 +190,7 @@ public final class LocationRequest implements Parcelable { private final long mMaxUpdateDelayMillis; private boolean mHideFromAppOps; private final boolean mAdasGnssBypass; private boolean mLocationSettingsIgnored; private boolean mBypass; private boolean mLowPower; private @Nullable WorkSource mWorkSource; Loading @@ -208,9 +203,7 @@ public final class LocationRequest implements Parcelable { @NonNull public static LocationRequest create() { // 60 minutes is the default legacy interval return new LocationRequest.Builder(60 * 60 * 1000) .setQuality(QUALITY_LOW_POWER) .build(); return new LocationRequest.Builder(60 * 60 * 1000).build(); } /** Loading Loading @@ -239,7 +232,7 @@ public final class LocationRequest implements Parcelable { } else if (LocationManager.GPS_PROVIDER.equals(provider)) { quality = QUALITY_HIGH_ACCURACY; } else { quality = POWER_LOW; quality = QUALITY_BALANCED_POWER_ACCURACY; } return new LocationRequest.Builder(intervalMillis) Loading Loading @@ -291,11 +284,11 @@ public final class LocationRequest implements Parcelable { long maxUpdateDelayMillis, boolean hiddenFromAppOps, boolean adasGnssBypass, boolean locationSettingsIgnored, boolean bypass, boolean lowPower, WorkSource workSource) { mProvider = provider; mInterval = intervalMillis; mIntervalMillis = intervalMillis; mQuality = quality; mMinUpdateIntervalMillis = minUpdateIntervalMillis; mExpireAtRealtimeMillis = expireAtRealtimeMillis; Loading @@ -305,7 +298,7 @@ public final class LocationRequest implements Parcelable { mMaxUpdateDelayMillis = maxUpdateDelayMillis; mHideFromAppOps = hiddenFromAppOps; mAdasGnssBypass = adasGnssBypass; mLocationSettingsIgnored = locationSettingsIgnored; mBypass = bypass; mLowPower = lowPower; mWorkSource = Objects.requireNonNull(workSource); } Loading Loading @@ -354,7 +347,7 @@ public final class LocationRequest implements Parcelable { mQuality = QUALITY_LOW_POWER; break; case POWER_NONE: mInterval = PASSIVE_INTERVAL; mIntervalMillis = PASSIVE_INTERVAL; break; default: throw new IllegalArgumentException("invalid quality: " + quality); Loading Loading @@ -388,9 +381,9 @@ public final class LocationRequest implements Parcelable { millis = Long.MAX_VALUE - 1; } mInterval = millis; if (mMinUpdateIntervalMillis > mInterval) { mMinUpdateIntervalMillis = mInterval; mIntervalMillis = millis; if (mMinUpdateIntervalMillis > mIntervalMillis) { mMinUpdateIntervalMillis = mIntervalMillis; } return this; } Loading Loading @@ -418,7 +411,7 @@ public final class LocationRequest implements Parcelable { * @return the desired interval of location updates */ public @IntRange(from = 0) long getIntervalMillis() { return mInterval; return mIntervalMillis; } /** Loading Loading @@ -556,11 +549,11 @@ public final class LocationRequest implements Parcelable { */ public @IntRange(from = 0) long getMinUpdateIntervalMillis() { if (mMinUpdateIntervalMillis == IMPLICIT_MIN_UPDATE_INTERVAL) { return (long) (mInterval * IMPLICIT_MIN_UPDATE_INTERVAL_FACTOR); return (long) (mIntervalMillis * IMPLICIT_MIN_UPDATE_INTERVAL_FACTOR); } else { // the min is only necessary in case someone use a deprecated function to mess with the // interval or min update interval return min(mMinUpdateIntervalMillis, mInterval); return min(mMinUpdateIntervalMillis, mIntervalMillis); } } Loading Loading @@ -673,7 +666,7 @@ public final class LocationRequest implements Parcelable { @Deprecated @RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS) public @NonNull LocationRequest setLocationSettingsIgnored(boolean locationSettingsIgnored) { mLocationSettingsIgnored = locationSettingsIgnored; mBypass = locationSettingsIgnored; return this; } Loading @@ -687,7 +680,7 @@ public final class LocationRequest implements Parcelable { */ @SystemApi public boolean isLocationSettingsIgnored() { return mLocationSettingsIgnored; return mBypass; } /** Loading @@ -696,7 +689,7 @@ public final class LocationRequest implements Parcelable { * @hide */ public boolean isBypass() { return mAdasGnssBypass || mLocationSettingsIgnored; return mAdasGnssBypass || mBypass; } /** Loading Loading @@ -796,7 +789,7 @@ public final class LocationRequest implements Parcelable { @Override public void writeToParcel(@NonNull Parcel parcel, int flags) { parcel.writeString(mProvider); parcel.writeLong(mInterval); parcel.writeLong(mIntervalMillis); parcel.writeInt(mQuality); parcel.writeLong(mExpireAtRealtimeMillis); parcel.writeLong(mDurationMillis); Loading @@ -806,7 +799,7 @@ public final class LocationRequest implements Parcelable { parcel.writeLong(mMaxUpdateDelayMillis); parcel.writeBoolean(mHideFromAppOps); parcel.writeBoolean(mAdasGnssBypass); parcel.writeBoolean(mLocationSettingsIgnored); parcel.writeBoolean(mBypass); parcel.writeBoolean(mLowPower); parcel.writeTypedObject(mWorkSource, 0); } Loading @@ -821,7 +814,7 @@ public final class LocationRequest implements Parcelable { } LocationRequest that = (LocationRequest) o; return mInterval == that.mInterval return mIntervalMillis == that.mIntervalMillis && mQuality == that.mQuality && mExpireAtRealtimeMillis == that.mExpireAtRealtimeMillis && mDurationMillis == that.mDurationMillis Loading @@ -831,7 +824,7 @@ public final class LocationRequest implements Parcelable { && mMaxUpdateDelayMillis == that.mMaxUpdateDelayMillis && mHideFromAppOps == that.mHideFromAppOps && mAdasGnssBypass == that.mAdasGnssBypass && mLocationSettingsIgnored == that.mLocationSettingsIgnored && mBypass == that.mBypass && mLowPower == that.mLowPower && Objects.equals(mProvider, that.mProvider) && Objects.equals(mWorkSource, that.mWorkSource); Loading @@ -839,7 +832,7 @@ public final class LocationRequest implements Parcelable { @Override public int hashCode() { return Objects.hash(mProvider, mInterval, mWorkSource); return Objects.hash(mProvider, mIntervalMillis, mWorkSource); } @NonNull Loading @@ -850,9 +843,9 @@ public final class LocationRequest implements Parcelable { if (mProvider != null) { s.append(mProvider).append(" "); } if (mInterval != PASSIVE_INTERVAL) { if (mIntervalMillis != PASSIVE_INTERVAL) { s.append("@"); TimeUtils.formatDuration(mInterval, s); TimeUtils.formatDuration(mIntervalMillis, s); switch (mQuality) { case QUALITY_HIGH_ACCURACY: Loading @@ -879,14 +872,14 @@ public final class LocationRequest implements Parcelable { s.append(", maxUpdates=").append(mMaxUpdates); } if (mMinUpdateIntervalMillis != IMPLICIT_MIN_UPDATE_INTERVAL && mMinUpdateIntervalMillis < mInterval) { && mMinUpdateIntervalMillis < mIntervalMillis) { s.append(", minUpdateInterval="); TimeUtils.formatDuration(mMinUpdateIntervalMillis, s); } if (mMinUpdateDistanceMeters > 0.0) { s.append(", minUpdateDistance=").append(mMinUpdateDistanceMeters); } if (mMaxUpdateDelayMillis / 2 > mInterval) { if (mMaxUpdateDelayMillis / 2 > mIntervalMillis) { s.append(", maxUpdateDelay="); TimeUtils.formatDuration(mMaxUpdateDelayMillis, s); } Loading @@ -899,8 +892,8 @@ public final class LocationRequest implements Parcelable { if (mAdasGnssBypass) { s.append(", adasGnssBypass"); } if (mLocationSettingsIgnored) { s.append(", settingsBypass"); if (mBypass) { s.append(", bypass"); } if (mWorkSource != null && !mWorkSource.isEmpty()) { s.append(", ").append(mWorkSource); Loading @@ -923,7 +916,7 @@ public final class LocationRequest implements Parcelable { private long mMaxUpdateDelayMillis; private boolean mHiddenFromAppOps; private boolean mAdasGnssBypass; private boolean mLocationSettingsIgnored; private boolean mBypass; private boolean mLowPower; @Nullable private WorkSource mWorkSource; Loading @@ -943,7 +936,7 @@ public final class LocationRequest implements Parcelable { mMaxUpdateDelayMillis = 0; mHiddenFromAppOps = false; mAdasGnssBypass = false; mLocationSettingsIgnored = false; mBypass = false; mLowPower = false; mWorkSource = null; } Loading @@ -952,7 +945,7 @@ public final class LocationRequest implements Parcelable { * Creates a new Builder with all parameters copied from the given location request. */ public Builder(@NonNull LocationRequest locationRequest) { mIntervalMillis = locationRequest.mInterval; mIntervalMillis = locationRequest.mIntervalMillis; mQuality = locationRequest.mQuality; mDurationMillis = locationRequest.mDurationMillis; mMaxUpdates = locationRequest.mMaxUpdates; Loading @@ -961,7 +954,7 @@ public final class LocationRequest implements Parcelable { mMaxUpdateDelayMillis = locationRequest.mMaxUpdateDelayMillis; mHiddenFromAppOps = locationRequest.mHideFromAppOps; mAdasGnssBypass = locationRequest.mAdasGnssBypass; mLocationSettingsIgnored = locationRequest.mLocationSettingsIgnored; mBypass = locationRequest.mBypass; mLowPower = locationRequest.mLowPower; mWorkSource = locationRequest.mWorkSource; Loading Loading @@ -1160,14 +1153,15 @@ public final class LocationRequest implements Parcelable { @SystemApi @RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS) public @NonNull Builder setLocationSettingsIgnored(boolean locationSettingsIgnored) { mLocationSettingsIgnored = locationSettingsIgnored; mBypass = locationSettingsIgnored; return this; } /** * It set to true, indicates that extreme trade-offs should be made if possible to save * power for this request. This usually involves specialized hardware modes which can * greatly affect the quality of locations. Defaults to false. * greatly affect the quality of locations. Not all devices may support this. Defaults to * false. * * <p>Permissions enforcement occurs when resulting location request is actually used, not * when this method is invoked. Loading Loading @@ -1227,7 +1221,7 @@ public final class LocationRequest implements Parcelable { mMaxUpdateDelayMillis, mHiddenFromAppOps, mAdasGnssBypass, mLocationSettingsIgnored, mBypass, mLowPower, new WorkSource(mWorkSource)); } Loading