From 0313abd3d38c7cb5693c402858567493d8bf99d1 Mon Sep 17 00:00:00 2001 From: Neil Fuller Date: Wed, 3 Nov 2021 15:40:43 +0000 Subject: [PATCH] Add support for tz detection telephony fallback This adds support for a telephony fallback mode used when geolocation time zone detection is enabled. Before this change, when geolocation tz detection mode was enabled only geolocation signals were used. To improve behavior when geolocation detection doesn't work or is slow after a flight (or immediately after boot), this "latched" fallback mode allows telephony suggestions to be used until the geolocation algorithm makes a "certain" suggestion. See more TimeZoneDetectorStrategy for more information. The "flight detection" is entirely based on the user switching off airplane mode in this version. Bug: 197624972 Test: atest services/tests/servicestests/src/com/android/server/timezonedetector/ Change-Id: Id72108c6ccb273fb8b7dd52847e2a750cd0a676a --- .../timezonedetector/TimeZoneDetector.java | 7 + core/res/res/values/config.xml | 7 + core/res/res/values/symbols.xml | 1 + .../server/timedetector/ServerFlags.java | 9 + .../ConfigurationInternal.java | 27 +- .../DeviceActivityMonitor.java | 40 +++ .../DeviceActivityMonitorImpl.java | 94 +++++++ .../timezonedetector/EnvironmentImpl.java | 7 + .../MetricsTimeZoneDetectorState.java | 5 + .../ServiceConfigAccessorImpl.java | 9 + .../TimeZoneDetectorService.java | 23 ++ .../TimeZoneDetectorShellCommand.java | 19 ++ .../TimeZoneDetectorStrategy.java | 21 ++ .../TimeZoneDetectorStrategyImpl.java | 162 ++++++++++- .../ConfigurationInternalTest.java | 18 ++ .../FakeTimeZoneDetectorStrategy.java | 5 + .../TimeZoneDetectorServiceTest.java | 1 + .../TimeZoneDetectorStrategyImplTest.java | 255 +++++++++++++++++- .../location/TestSupport.java | 1 + 19 files changed, 696 insertions(+), 15 deletions(-) create mode 100644 services/core/java/com/android/server/timezonedetector/DeviceActivityMonitor.java create mode 100644 services/core/java/com/android/server/timezonedetector/DeviceActivityMonitorImpl.java diff --git a/core/java/android/app/timezonedetector/TimeZoneDetector.java b/core/java/android/app/timezonedetector/TimeZoneDetector.java index a71cffe5afc0b..ceab02f510629 100644 --- a/core/java/android/app/timezonedetector/TimeZoneDetector.java +++ b/core/java/android/app/timezonedetector/TimeZoneDetector.java @@ -95,6 +95,13 @@ public interface TimeZoneDetector { */ String SHELL_COMMAND_SUGGEST_TELEPHONY_TIME_ZONE = "suggest_telephony_time_zone"; + /** + * A shell command that enables telephony time zone fallback. See {@link + * com.android.server.timezonedetector.TimeZoneDetectorStrategy} for details. + * @hide + */ + String SHELL_COMMAND_ENABLE_TELEPHONY_FALLBACK = "enable_telephony_fallback"; + /** * A shared utility method to create a {@link ManualTimeZoneSuggestion}. * diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index a36785f37d3f9..7262ae4157abd 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -1767,6 +1767,13 @@ provider services. --> + + false +