TalkBack读错时间

时间:2017-05-17 08:50:10

标签: android time talkback

当TextView包含foo bar 04:58时,TalkBack会说foo bar 4 hours 58 minutes - 它应该是foo bar 4 minutes 58 seconds。另一方面,foo bar 04:24:05工作正常:foo bar 4 hours 24 minutes 5 seconds。顺便说一下,我的语言环境是法语。

我想到了对此的无法解决的问题:

  • mm:ss替换为00:mm:ss
  • mm:ss替换为mm minutes ss seconds

有更好的解决方案吗?

1 个答案:

答案 0 :(得分:4)

这是我建议使用内容说明覆盖文本的少数几次之一。你必须扩展它。

所以假设你有一个TextView

textView.setText("2:45")

textView.setContentDescription("2 minutes 45 seconds")

文本视图的内容描述作为替代文本,将被读出。这实际上会产生其他可访问性问题。想象一下AT读出文本和内容描述,而不是使用内容描述作为覆盖... UGH。但在目前的Android Accessibility生态系统中,TalkBack拥有压倒性的市场份额,这种解决方案并非完全邪恶。理想情况下,文本到语音引擎不会是愚蠢的。但是,由于TTS引擎是愚蠢的,我们必须更改TalkBack看到的文本,以便读出合理。

您也可以保留它,并注意TalkBack用户可以根据需要逐个字符地探索,因此他们可以找出奇怪的TTS自动格式。您也可以尝试将视图更改为以下内容:

textView.setText("2m 45s");

虽然,如果我没记错的话,TTS引擎会把它扩展到“2米四十五分钟”......太棒了。

编辑:我想这行代码将有助于解决您的其他问题。

timeString.replaceAll("([0-9]{1,2}):([0-9]{1,2})", "$1 minutes $2 seconds");