diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2020-02-28 21:18:04 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2020-02-28 21:18:04 +0000 |
commit | b8da4a2c13519462de4c365c1cd5c267ebcdca97 (patch) | |
tree | 4fc0fe911aaafd5b2b53236e594cf2c6daf3c1f8 | |
parent | b0405c5c1fdd2f24701bc53f54ff7811c4ec22fa (diff) | |
parent | d3490a2530a512ba147d06ebb982f83fb1708e4e (diff) | |
download | base-b8da4a2c13519462de4c365c1cd5c267ebcdca97.tar.gz |
Merge cherrypicks of [10460465, 10460521, 10460352, 10458819] into qt-qpr2-release
Change-Id: Iceb99c57cf8adeb4ffa9fa79fbc5f8246058e2cf
-rw-r--r-- | services/core/java/com/android/server/location/GnssConfiguration.java | 9 | ||||
-rw-r--r-- | services/core/java/com/android/server/location/GnssLocationProvider.java | 13 |
2 files changed, 15 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/location/GnssConfiguration.java b/services/core/java/com/android/server/location/GnssConfiguration.java index 86a84e312899..18d9f69c9735 100644 --- a/services/core/java/com/android/server/location/GnssConfiguration.java +++ b/services/core/java/com/android/server/location/GnssConfiguration.java @@ -79,7 +79,7 @@ class GnssConfiguration { // Represents an HAL interface version. Instances of this class are created in the JNI layer // and returned through native methods. - private static class HalInterfaceVersion { + static class HalInterfaceVersion { final int mMajor; final int mMinor; @@ -205,6 +205,10 @@ class GnssConfiguration { native_set_satellite_blacklist(constellations, svids); } + HalInterfaceVersion getHalInterfaceVersion() { + return native_get_gnss_configuration_version(); + } + interface SetCarrierProperty { boolean set(int value); } @@ -231,8 +235,7 @@ class GnssConfiguration { logConfigurations(); - final HalInterfaceVersion gnssConfigurationIfaceVersion = - native_get_gnss_configuration_version(); + final HalInterfaceVersion gnssConfigurationIfaceVersion = getHalInterfaceVersion(); if (gnssConfigurationIfaceVersion != null) { // Set to a range checked value. if (isConfigEsExtensionSecSupported(gnssConfigurationIfaceVersion) diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java index 4b79677b475b..342e9b8c3006 100644 --- a/services/core/java/com/android/server/location/GnssLocationProvider.java +++ b/services/core/java/com/android/server/location/GnssLocationProvider.java @@ -772,10 +772,15 @@ public class GnssLocationProvider extends AbstractLocationProvider implements locationRequest.setProvider(provider); - // Ignore location settings if in emergency mode. - if (isUserEmergency && mNIHandler.getInEmergency()) { - locationRequest.setLocationSettingsIgnored(true); - durationMillis *= EMERGENCY_LOCATION_UPDATE_DURATION_MULTIPLIER; + // Ignore location settings if in emergency mode. This is only allowed for + // isUserEmergency request (introduced in HAL v2.0), or DBH request in HAL v1.1. + if (mNIHandler.getInEmergency()) { + GnssConfiguration.HalInterfaceVersion halVersion = + mGnssConfiguration.getHalInterfaceVersion(); + if (isUserEmergency || (halVersion.mMajor < 2 && !independentFromGnss)) { + locationRequest.setLocationSettingsIgnored(true); + durationMillis *= EMERGENCY_LOCATION_UPDATE_DURATION_MULTIPLIER; + } } Log.i(TAG, |