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).