Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e2d49e12 authored by Yu-Han Yang's avatar Yu-Han Yang
Browse files

Call stopNavigating in restartLocationRequest

Previously, restartLocationRequest() resets mStarted without resetting other fields. One bug is that setPositionMode() would not be called if
mLastPositionMode is non-null, when HAL crashes and restarts. This results in chipset generating 1Hz gps locations when the existing request has >1s interval.

Bug: 419597768
Test: on device
Flag: android.location.flags.fix_no_set_position_mode_when_hal_restarts
Change-Id: Ibacc052edd72d83b2aeca4675f028415b211692a
parent 036e0e50
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -146,6 +146,16 @@ flag {
    }
}

flag {
    name: "fix_no_set_position_mode_when_hal_restarts"
    namespace: "location"
    description: "Fix setPostionMode() is not called when HAL restarts"
    bug: "419597768"
    metadata {
        purpose: PURPOSE_BUGFIX
    }
}

flag {
    name: "fix_is_in_emergency_anr"
    namespace: "location"
+6 −1
Original line number Diff line number Diff line
@@ -1485,7 +1485,11 @@ public class GnssLocationProvider extends AbstractLocationProvider implements

    private void restartLocationRequest() {
        if (DEBUG) Log.d(TAG, "restartLocationRequest");
        if (Flags.fixNoSetPositionModeWhenHalRestarts()) {
            stopNavigating();
        } else {
            setStarted(false);
        }
        updateRequirements();
    }

@@ -1705,6 +1709,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
    public void onCapabilitiesChanged(GnssCapabilities oldCapabilities,
            GnssCapabilities newCapabilities) {
        mHandler.post(() -> {
            Log.d(TAG, "onCapabilitiesChanged");
            boolean useOnDemandTimeInjection = mGnssNative.getCapabilities().hasOnDemandTime();

            // b/73893222: There is a historic bug on Android, which means that the capability