Merge "Add passive listener support for GnssMeasurement"
This commit is contained in:
committed by
Android (Google) Code Review
commit
995d5adc13
@@ -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 {
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user