Force talkback to read imei # digit by digit

Made changes to the file so that it uses Spannables instead
of just strings. This will allow us to tell Android Talkback
how we would like the strings read.

Fixes: 30402792
Change-Id: I893a2cbf3de092f81d927bad36523efb08dd7265
This commit is contained in:
Salvador Martinez
2016-07-27 16:40:54 -07:00
parent 47c6adbd59
commit cf21d91b76

View File

@@ -21,8 +21,13 @@ import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen; import android.support.v7.preference.PreferenceScreen;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.style.TtsSpan;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.internal.telephony.Phone; import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneConstants; import com.android.internal.telephony.PhoneConstants;
@@ -80,7 +85,7 @@ public class ImeiInformation extends SettingsPreferenceFragment {
if (phone.getLteOnCdmaMode() == PhoneConstants.LTE_ON_CDMA_TRUE) { if (phone.getLteOnCdmaMode() == PhoneConstants.LTE_ON_CDMA_TRUE) {
// Show ICC ID and IMEI for LTE device // Show ICC ID and IMEI for LTE device
setSummaryText(KEY_ICC_ID, phone.getIccSerialNumber()); setSummaryText(KEY_ICC_ID, phone.getIccSerialNumber());
setSummaryText(KEY_IMEI, phone.getImei()); setSummaryTextAsDigit(KEY_IMEI, phone.getImei());
} else { } else {
// device is not GSM/UMTS, do not display GSM/UMTS features // device is not GSM/UMTS, do not display GSM/UMTS features
// check Null in case no specified preference in overlay xml // check Null in case no specified preference in overlay xml
@@ -88,8 +93,8 @@ public class ImeiInformation extends SettingsPreferenceFragment {
removePreferenceFromScreen(KEY_ICC_ID); removePreferenceFromScreen(KEY_ICC_ID);
} }
} else { } else {
setSummaryText(KEY_IMEI, phone.getImei()); setSummaryTextAsDigit(KEY_IMEI, phone.getImei());
setSummaryText(KEY_IMEI_SV, phone.getDeviceSvn()); setSummaryTextAsDigit(KEY_IMEI_SV, phone.getDeviceSvn());
// device is not CDMA, do not display CDMA features // device is not CDMA, do not display CDMA features
// check Null in case no specified preference in overlay xml // check Null in case no specified preference in overlay xml
removePreferenceFromScreen(KEY_PRL_VERSION); removePreferenceFromScreen(KEY_PRL_VERSION);
@@ -128,10 +133,23 @@ public class ImeiInformation extends SettingsPreferenceFragment {
} }
private void setSummaryText(String key, String text) { private void setSummaryText(String key, String text) {
setSummaryText(key, text, false /* forceDigit */);
}
private void setSummaryTextAsDigit(String key, String text) {
setSummaryText(key, text, true /* forceDigit */);
}
private void setSummaryText(String key, CharSequence text, boolean forceDigit) {
final Preference preference = findPreference(key); final Preference preference = findPreference(key);
if (TextUtils.isEmpty(text)) { if (TextUtils.isEmpty(text)) {
text = getResources().getString(R.string.device_info_default); text = getResources().getString(R.string.device_info_default);
} else if (forceDigit && TextUtils.isDigitsOnly(text)) {
final Spannable spannable = new SpannableStringBuilder(text);
final TtsSpan span = new TtsSpan.DigitsBuilder(text.toString()).build();
spannable.setSpan(span, 0, spannable.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
text = spannable;
} }
if (preference != null) { if (preference != null) {