summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Lee <anwlee@google.com>2015-09-08 17:41:10 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-09-08 17:41:10 +0000
commitc4c83a1138cb452d721cd6534ea7a2c213b8a453 (patch)
tree2a892fbec02a5439eb7fae9ef9eae9e073ede929
parentb4f2d769acd61595ddd457ef8ff8622900e80f6d (diff)
parentf35cb69a2ab9006518dabd96864096ad42128f5a (diff)
downloadpackages_apps_PhoneCommon-c4c83a1138cb452d721cd6534ea7a2c213b8a453.tar.gz
packages_apps_PhoneCommon-c4c83a1138cb452d721cd6534ea7a2c213b8a453.tar.bz2
packages_apps_PhoneCommon-c4c83a1138cb452d721cd6534ea7a2c213b8a453.zip
am f35cb69a: Fix Talkback for "DEF" in dialpad.
* commit 'f35cb69a2ab9006518dabd96864096ad42128f5a': Fix Talkback for "DEF" in dialpad.
-rw-r--r--src/com/android/phone/common/dialpad/DialpadView.java41
1 files changed, 29 insertions, 12 deletions
diff --git a/src/com/android/phone/common/dialpad/DialpadView.java b/src/com/android/phone/common/dialpad/DialpadView.java
index 43bbeca..1d71687 100644
--- a/src/com/android/phone/common/dialpad/DialpadView.java
+++ b/src/com/android/phone/common/dialpad/DialpadView.java
@@ -23,7 +23,9 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.drawable.RippleDrawable;
+import android.text.Spannable;
import android.text.TextUtils;
+import android.text.style.TtsSpan;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
@@ -125,11 +127,20 @@ public class DialpadView extends LinearLayout {
}
private void setupKeypad() {
- final int[] letterIds = new int[] {R.string.dialpad_0_letters, R.string.dialpad_1_letters,
- R.string.dialpad_2_letters, R.string.dialpad_3_letters, R.string.dialpad_4_letters,
- R.string.dialpad_5_letters, R.string.dialpad_6_letters, R.string.dialpad_7_letters,
- R.string.dialpad_8_letters, R.string.dialpad_9_letters,
- R.string.dialpad_star_letters, R.string.dialpad_pound_letters};
+ final int[] letterIds = new int[] {
+ R.string.dialpad_0_letters,
+ R.string.dialpad_1_letters,
+ R.string.dialpad_2_letters,
+ R.string.dialpad_3_letters,
+ R.string.dialpad_4_letters,
+ R.string.dialpad_5_letters,
+ R.string.dialpad_6_letters,
+ R.string.dialpad_7_letters,
+ R.string.dialpad_8_letters,
+ R.string.dialpad_9_letters,
+ R.string.dialpad_star_letters,
+ R.string.dialpad_pound_letters
+ };
final Resources resources = getContext().getResources();
@@ -153,7 +164,7 @@ public class DialpadView extends LinearLayout {
lettersView = (TextView) dialpadKey.findViewById(R.id.dialpad_key_letters);
final String numberString;
- final String numberContentDescription;
+ final CharSequence numberContentDescription;
if (mButtonIds[i] == R.id.pound) {
numberString = resources.getString(R.string.dialpad_pound_number);
numberContentDescription = numberString;
@@ -162,12 +173,18 @@ public class DialpadView extends LinearLayout {
numberContentDescription = numberString;
} else {
numberString = nf.format(i);
- // The content description is used for announcements on key
- // press when TalkBack is enabled. They contain a ","
- // (to introduce a slight delay) followed by letters
- // corresponding to the keys in addition to the number.
- numberContentDescription = numberString + "," +
- resources.getString(letterIds[i]);
+ // The content description is used for Talkback key presses. The number is
+ // separated by a "," to introduce a slight delay. Convert letters into a verbatim
+ // span so that they are read as letters instead of as one word.
+ String letters = resources.getString(letterIds[i]);
+ Spannable spannable =
+ Spannable.Factory.getInstance().newSpannable(numberString + "," + letters);
+ spannable.setSpan(
+ (new TtsSpan.VerbatimBuilder(letters)).build(),
+ numberString.length() + 1,
+ numberString.length() + 1 + letters.length(),
+ Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+ numberContentDescription = spannable;
}
final RippleDrawable rippleBackground =