diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index 972fc738cb098..f176aac09856b 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -863,4 +863,6 @@
Menu
+
+ GMT
diff --git a/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java b/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java
index 857ca49eafc2e..4bfca9b61d6ba 100644
--- a/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java
+++ b/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java
@@ -19,9 +19,13 @@ package com.android.settingslib.datetime;
import android.content.Context;
import android.content.res.XmlResourceParser;
import android.icu.text.TimeZoneNames;
-import android.text.BidiFormatter;
-import android.text.TextDirectionHeuristics;
+import android.support.v4.text.BidiFormatter;
+import android.support.v4.text.TextDirectionHeuristicsCompat;
+import android.text.SpannableString;
+import android.text.SpannableStringBuilder;
import android.text.TextUtils;
+import android.text.format.DateUtils;
+import android.text.style.TtsSpan;
import android.util.Log;
import android.view.View;
@@ -29,7 +33,6 @@ import com.android.settingslib.R;
import org.xmlpull.v1.XmlPullParserException;
-import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
@@ -65,28 +68,41 @@ public class ZoneGetter {
private static final String TAG = "ZoneGetter";
public static final String KEY_ID = "id"; // value: String
+
+ /**
+ * @deprecated Use {@link #KEY_DISPLAY_LABEL} instead.
+ */
+ @Deprecated
public static final String KEY_DISPLAYNAME = "name"; // value: String
+
+ public static final String KEY_DISPLAY_LABEL = "display_label"; // value: CharSequence
+
+ /**
+ * @deprecated Use {@link #KEY_OFFSET_LABEL} instead.
+ */
+ @Deprecated
public static final String KEY_GMT = "gmt"; // value: String
public static final String KEY_OFFSET = "offset"; // value: int (Integer)
+ public static final String KEY_OFFSET_LABEL = "offset_label"; // value: CharSequence
private static final String XMLTAG_TIMEZONE = "timezone";
- public static String getTimeZoneOffsetAndName(Context context, TimeZone tz, Date now) {
+ public static CharSequence getTimeZoneOffsetAndName(Context context, TimeZone tz, Date now) {
final Locale locale = Locale.getDefault();
- final String gmtString = getGmtOffsetString(locale, tz, now);
+ final CharSequence gmtText = getGmtOffsetText(context, locale, tz, now);
final TimeZoneNames timeZoneNames = TimeZoneNames.getInstance(locale);
final ZoneGetterData data = new ZoneGetterData(context);
final boolean useExemplarLocationForLocalNames =
shouldUseExemplarLocationForLocalNames(data, timeZoneNames);
- final String zoneNameString = getTimeZoneDisplayName(data, timeZoneNames,
+ final CharSequence zoneName = getTimeZoneDisplayName(data, timeZoneNames,
useExemplarLocationForLocalNames, tz, tz.getID());
- if (zoneNameString == null) {
- return gmtString;
+ if (zoneName == null) {
+ return gmtText;
}
// We don't use punctuation here to avoid having to worry about localizing that too!
- return gmtString + " " + zoneNameString;
+ return TextUtils.concat(gmtText, " ", zoneName);
}
public static List