Merge "Add passive listener support for GnssMeasurement"

This commit is contained in:
TreeHugger Robot
2022-10-05 18:16:09 +00:00
committed by Android (Google) Code Review
3 changed files with 29 additions and 7 deletions

View File

@@ -19548,6 +19548,7 @@ package android.location {
method public boolean isFullTracking();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssMeasurementRequest> CREATOR;
field public static final int PASSIVE_INTERVAL = 2147483647; // 0x7fffffff
}
public static final class GnssMeasurementRequest.Builder {

View File

@@ -31,6 +31,15 @@ import java.util.Objects;
* This class contains extra parameters to pass in a GNSS measurement request.
*/
public final class GnssMeasurementRequest implements Parcelable {
/**
* Represents a passive only request. Such a request will not trigger any active GNSS
* measurements or power usage itself, but may receive GNSS measurements generated in response
* to other requests.
*
* @see GnssMeasurementRequest#getIntervalMillis()
*/
public static final int PASSIVE_INTERVAL = Integer.MAX_VALUE;
private final boolean mCorrelationVectorOutputsEnabled;
private final boolean mFullTracking;
private final int mIntervalMillis;
@@ -76,7 +85,10 @@ public final class GnssMeasurementRequest implements Parcelable {
}
/**
* Represents the requested time interval between the reported measurements in milliseconds.
* Returns the requested time interval between the reported measurements in milliseconds, or
* {@link #PASSIVE_INTERVAL} if this is a passive, no power request. A passive request will not
* actively generate GNSS measurement updates, but may receive GNSS measurement updates
* generated as a result of other GNSS measurement requests.
*
* <p>If the time interval is not set, the default value is 0, which means the fastest rate the
* GNSS chipset can report.
@@ -213,7 +225,9 @@ public final class GnssMeasurementRequest implements Parcelable {
/**
* Set the time interval between the reported measurements in milliseconds, which is 0 by
* default.
* default. The request interval may be set to {@link #PASSIVE_INTERVAL} which indicates
* this request will not actively generate GNSS measurement updates, but may receive
* GNSS measurement updates generated as a result of other GNSS measurement requests.
*
* <p>An interval of 0 milliseconds means the fastest rate the chipset can report.
*

View File

@@ -112,6 +112,9 @@ public final class GnssMeasurementsProvider extends
@Override
protected boolean registerWithService(GnssMeasurementRequest request,
Collection<GnssListenerRegistration> registrations) {
if (request.getIntervalMillis() == GnssMeasurementRequest.PASSIVE_INTERVAL) {
return true;
}
if (mGnssNative.startMeasurementCollection(request.isFullTracking(),
request.isCorrelationVectorOutputsEnabled(),
request.getIntervalMillis())) {
@@ -157,7 +160,7 @@ public final class GnssMeasurementsProvider extends
Collection<GnssListenerRegistration> registrations) {
boolean fullTracking = false;
boolean enableCorrVecOutputs = false;
int intervalMillis = Integer.MAX_VALUE;
int intervalMillis = GnssMeasurementRequest.PASSIVE_INTERVAL;
if (mSettingsHelper.isGnssMeasurementsFullTrackingEnabled()) {
fullTracking = true;
@@ -165,6 +168,10 @@ public final class GnssMeasurementsProvider extends
for (GnssListenerRegistration registration : registrations) {
GnssMeasurementRequest request = registration.getRequest();
// passive requests do not contribute to the merged request
if (request.getIntervalMillis() == GnssMeasurementRequest.PASSIVE_INTERVAL) {
continue;
}
if (request.isFullTracking()) {
fullTracking = true;
}
@@ -175,10 +182,10 @@ public final class GnssMeasurementsProvider extends
}
return new GnssMeasurementRequest.Builder()
.setFullTracking(fullTracking)
.setCorrelationVectorOutputsEnabled(enableCorrVecOutputs)
.setIntervalMillis(intervalMillis)
.build();
.setFullTracking(fullTracking)
.setCorrelationVectorOutputsEnabled(enableCorrVecOutputs)
.setIntervalMillis(intervalMillis)
.build();
}
@Override