串读作代号而不是用数字看完号码时顶嘴是在android系统

问题描述 投票:5回答:3

我有一个字符串“9039662543”,而当顶嘴是,这个字符串在4.3的Android设备的工作正常,通过读取读作“9000000 ......”,4.3以上的设备“九零叁......” 。我应该怎么做才能解决这个问题?

android string accessibility talkback accessibilityservice
3个回答
6
投票

我假设这是一个电话号码吗?我不能说,因为没有格式化。这是问题的心脏。这有多种修复。

答:不要管它。话语提示用户可以通过分析认为,段落,句子,词,字等元素如果用户不能告诉它的上下文是一个电话号码的选择,你需要更多的上下文。数字本身是好的!

B:格式的更好。 (903)-966-2542 VS 9039662543,没有任何额外的上下文中,是两种不同的信息。它仍然可以读出为类似“括号九hundread三........”,但它会更明显它是一个电话号码,和块很容易跟踪。对不起,我dno't有一个预4.3设备检查出实际的声明是什么。

C:覆盖内容的描述。如果文本表示为:

文本:9039662543内容描述:9 0 3 9 6 6 2 5 4 3

我建议对这一做法。这两个值是不一样的。只是因为你的宣布不舒服并不意味着话语提示用户将。当你习惯使用话语提示你习惯于切换到不同的文本分析模式。谁不关心的电话号码的用户将通过慢读受挫出的分离版本。让他们忽视它,并让它通过快速更加压缩的形式吹的选项。此外,informatively,如果没有上下文这两个数字并不能真正代表同样的事情。在这种情况下的解决方案是提供这种背景下不更改演示文稿。独立是不相等的。


0
投票

当我看到多人推荐什么ChrisCM已经发布。我看到默认的联系人应用此不同。

默认联系人应用程序读取电话号码位数按位数。它也确实比多一点,它可以重复使用。所使用的API是:

https://developer.android.com/reference/android/telephony/PhoneNumberUtils.html#createTtsSpan(java.lang.String)

它的工作原理可以在这里发现的所有细节:

https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/PhoneNumberUtils.java


-1
投票
//add extra space to text and set that text as contentDescription
textView.setText(readbleText);
StringBuilder builder = new StringBuilder();
for (int i = 0; i < readbleText.length(); i++) {
builder.append(readbleText.charAt(i));
builder.append("\u00A0");
}
textView.setContentDescription(builder);
© www.soinside.com 2019 - 2024. All rights reserved.