Added accessibility code to read back typed or deleted digits.
Bug: 5337550
Change-Id: I5e8cd8d2fb5466827dc47f38e746a415142fb22d
diff --git a/src/com/android/contacts/dialpad/DigitsEditText.java b/src/com/android/contacts/dialpad/DigitsEditText.java
index 753afd4..68335da 100644
--- a/src/com/android/contacts/dialpad/DigitsEditText.java
+++ b/src/com/android/contacts/dialpad/DigitsEditText.java
@@ -59,9 +59,22 @@
@Override
public void sendAccessibilityEventUnchecked(AccessibilityEvent event) {
if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED) {
- // AsYouTypeFormatter frequently replaces digits with formatted ones, which makes
- // tts too verbose. Let's ignore the whole event.
- return;
+ // Since we're replacing the text every time we add or remove a
+ // character, only read the difference. (issue 5337550)
+ final int added = event.getAddedCount();
+ final int removed = event.getRemovedCount();
+ final int length = event.getBeforeText().length();
+ if (added > removed) {
+ event.setRemovedCount(0);
+ event.setAddedCount(1);
+ event.setFromIndex(length);
+ } else if (removed > added) {
+ event.setRemovedCount(1);
+ event.setAddedCount(0);
+ event.setFromIndex(length - 1);
+ } else {
+ return;
+ }
} else if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_FOCUSED) {
// The parent EditText class lets tts read "edit box" when this View has a focus, which
// confuses users on app launch (issue 5275935).