Announce the date for accessibility using EMMMMdy format
Which for en_US would be something like "Friday August 5th 2016" but may
be re-ordered for other locales. Dates are hard.
Bug: 30682782
Change-Id: I015d293526592add27ce8fada12cd58bcc274ccf
diff --git a/core/java/android/widget/DatePickerCalendarDelegate.java b/core/java/android/widget/DatePickerCalendarDelegate.java
index 2fd52b5..af22ec7 100755
--- a/core/java/android/widget/DatePickerCalendarDelegate.java
+++ b/core/java/android/widget/DatePickerCalendarDelegate.java
@@ -65,6 +65,8 @@
private SimpleDateFormat mYearFormat;
private SimpleDateFormat mMonthDayFormat;
+ private SimpleDateFormat mAccessibilityEventFormat;
+
// Top-level container.
private ViewGroup mContainer;
@@ -307,6 +309,9 @@
mMonthDayFormat.setContext(DisplayContext.CAPITALIZATION_FOR_STANDALONE);
mYearFormat = new SimpleDateFormat("y", locale);
+ // Clear out the lazily-initialized accessibility event formatter.
+ mAccessibilityEventFormat = null;
+
// Update the header text.
onCurrentDateChanged(false);
}
@@ -586,7 +591,12 @@
@Override
public void onPopulateAccessibilityEvent(AccessibilityEvent event) {
- event.getText().add(mCurrentDate.getTime().toString());
+ if (mAccessibilityEventFormat == null) {
+ final String pattern = DateFormat.getBestDateTimePattern(mCurrentLocale, "EMMMMdy");
+ mAccessibilityEventFormat = new SimpleDateFormat(pattern);
+ }
+ final CharSequence text = mAccessibilityEventFormat.format(mCurrentDate.getTime());
+ event.getText().add(text);
}
public CharSequence getAccessibilityClassName() {