Merge "Switch settings to use Time[|Zone]Detector"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 56f8e78..30f1dd8 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -55,10 +55,9 @@
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES"/>
<uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS"/>
- <uses-permission android:name="android.permission.SET_TIME"/>
- <uses-permission android:name="android.permission.SET_TIME_ZONE"/>
<uses-permission android:name="android.permission.START_FOREGROUND"/>
<uses-permission android:name="android.permission.STATUS_BAR_SERVICE"/>
+ <uses-permission android:name="android.permission.SUGGEST_MANUAL_TIME_AND_ZONE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
diff --git a/src/com/android/car/settings/datetime/DatePickerFragment.java b/src/com/android/car/settings/datetime/DatePickerFragment.java
index 67714c7..7a585c5 100644
--- a/src/com/android/car/settings/datetime/DatePickerFragment.java
+++ b/src/com/android/car/settings/datetime/DatePickerFragment.java
@@ -15,8 +15,8 @@
*/
package com.android.car.settings.datetime;
-import android.app.AlarmManager;
-import android.content.Context;
+import android.app.timedetector.ManualTimeSuggestion;
+import android.app.timedetector.TimeDetector;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
@@ -72,7 +72,10 @@
c.set(Calendar.DAY_OF_MONTH, mDatePicker.getDayOfMonth());
long when = Math.max(c.getTimeInMillis(), DatetimeSettingsFragment.MIN_DATE);
if (when / MILLIS_IN_SECOND < Integer.MAX_VALUE) {
- ((AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE)).setTime(when);
+ TimeDetector timeDetector = getContext().getSystemService(TimeDetector.class);
+ ManualTimeSuggestion manualTimeSuggestion =
+ TimeDetector.createManualTimeSuggestion(when, "Settings: Set date");
+ timeDetector.suggestManualTime(manualTimeSuggestion);
getContext().sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
}
getFragmentController().goBack();
diff --git a/src/com/android/car/settings/datetime/TimePickerFragment.java b/src/com/android/car/settings/datetime/TimePickerFragment.java
index 2e0cdcd..80d1c1c 100644
--- a/src/com/android/car/settings/datetime/TimePickerFragment.java
+++ b/src/com/android/car/settings/datetime/TimePickerFragment.java
@@ -16,8 +16,8 @@
package com.android.car.settings.datetime;
-import android.app.AlarmManager;
-import android.content.Context;
+import android.app.timedetector.ManualTimeSuggestion;
+import android.app.timedetector.TimeDetector;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
@@ -74,7 +74,10 @@
c.set(Calendar.MILLISECOND, 0);
long when = Math.max(c.getTimeInMillis(), DatetimeSettingsFragment.MIN_DATE);
if (when / MILLIS_IN_SECOND < Integer.MAX_VALUE) {
- ((AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE)).setTime(when);
+ TimeDetector timeDetector = getContext().getSystemService(TimeDetector.class);
+ ManualTimeSuggestion manualTimeSuggestion =
+ TimeDetector.createManualTimeSuggestion(when, "Settings: Set time");
+ timeDetector.suggestManualTime(manualTimeSuggestion);
getContext().sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
}
getFragmentController().goBack();
diff --git a/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceController.java b/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceController.java
index 601225c..2a64a3e 100644
--- a/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceController.java
+++ b/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceController.java
@@ -16,7 +16,8 @@
package com.android.car.settings.datetime;
-import android.app.AlarmManager;
+import android.app.timezonedetector.ManualTimeZoneSuggestion;
+import android.app.timezonedetector.TimeZoneDetector;
import android.car.drivingstate.CarUxRestrictions;
import android.content.Context;
import android.content.Intent;
@@ -43,12 +44,12 @@
private List<Preference> mZonesList;
@VisibleForTesting
- AlarmManager mAlarmManager;
+ TimeZoneDetector mTimeZoneDetector;
public TimeZonePickerScreenPreferenceController(Context context, String preferenceKey,
FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
super(context, preferenceKey, fragmentController, uxRestrictions);
- mAlarmManager = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE);
+ mTimeZoneDetector = getContext().getSystemService(TimeZoneDetector.class);
}
@Override
@@ -90,7 +91,10 @@
preference.setTitle(timeZone.get(ZoneGetter.KEY_DISPLAY_LABEL).toString());
preference.setSummary(timeZone.get(ZoneGetter.KEY_OFFSET_LABEL).toString());
preference.setOnPreferenceClickListener(pref -> {
- mAlarmManager.setTimeZone(timeZone.get(ZoneGetter.KEY_ID).toString());
+ String tzId = timeZone.get(ZoneGetter.KEY_ID).toString();
+ ManualTimeZoneSuggestion suggestion = TimeZoneDetector.createManualTimeZoneSuggestion(
+ tzId, "Settings: Set time zone");
+ mTimeZoneDetector.suggestManualTimeZone(suggestion);
getFragmentController().goBack();
// Note: This is intentionally ACTION_TIME_CHANGED, not ACTION_TIMEZONE_CHANGED.
diff --git a/tests/robotests/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceControllerTest.java
index c07ed5f..95bc3be 100644
--- a/tests/robotests/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceControllerTest.java
@@ -20,7 +20,8 @@
import static org.mockito.Mockito.verify;
-import android.app.AlarmManager;
+import android.app.timezonedetector.ManualTimeZoneSuggestion;
+import android.app.timezonedetector.TimeZoneDetector;
import android.content.Context;
import android.content.Intent;
@@ -54,7 +55,7 @@
mPreferenceControllerHelper;
private TimeZonePickerScreenPreferenceController mController;
@Mock
- private AlarmManager mAlarmManager;
+ private TimeZoneDetector mTimeZoneDetector;
@Before
public void setUp() {
@@ -66,7 +67,7 @@
mController = mPreferenceControllerHelper.getController();
// Test setup.
- mController.mAlarmManager = mAlarmManager;
+ mController.mTimeZoneDetector = mTimeZoneDetector;
}
@Test
@@ -93,7 +94,9 @@
mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
Preference preference = mPreferenceGroup.findPreference("testKey");
preference.performClick();
- verify(mAlarmManager).setTimeZone("testKey");
+ ManualTimeZoneSuggestion suggestion =
+ TimeZoneDetector.createManualTimeZoneSuggestion("testKey", "Test debug info");
+ verify(mTimeZoneDetector).suggestManualTimeZone(suggestion);
}
@Test