Merge "Change default LocationRequest quality"
This commit is contained in:
committed by
Android (Google) Code Review
commit
75da5071e5
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -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)
|
||||
@@ -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;
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -687,7 +680,7 @@ public final class LocationRequest implements Parcelable {
|
||||
*/
|
||||
@SystemApi
|
||||
public boolean isLocationSettingsIgnored() {
|
||||
return mLocationSettingsIgnored;
|
||||
return mBypass;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -696,7 +689,7 @@ public final class LocationRequest implements Parcelable {
|
||||
* @hide
|
||||
*/
|
||||
public boolean isBypass() {
|
||||
return mAdasGnssBypass || mLocationSettingsIgnored;
|
||||
return mAdasGnssBypass || mBypass;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -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);
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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
|
||||
@@ -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);
|
||||
@@ -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
|
||||
@@ -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:
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
@@ -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;
|
||||
|
||||
@@ -943,7 +936,7 @@ public final class LocationRequest implements Parcelable {
|
||||
mMaxUpdateDelayMillis = 0;
|
||||
mHiddenFromAppOps = false;
|
||||
mAdasGnssBypass = false;
|
||||
mLocationSettingsIgnored = false;
|
||||
mBypass = false;
|
||||
mLowPower = false;
|
||||
mWorkSource = null;
|
||||
}
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
|
||||
@@ -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.
|
||||
@@ -1227,7 +1221,7 @@ public final class LocationRequest implements Parcelable {
|
||||
mMaxUpdateDelayMillis,
|
||||
mHiddenFromAppOps,
|
||||
mAdasGnssBypass,
|
||||
mLocationSettingsIgnored,
|
||||
mBypass,
|
||||
mLowPower,
|
||||
new WorkSource(mWorkSource));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user