TalkBack 读取时间错误

TalkBack reads time wrong

当 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。顺便说一句,我的语言环境是法语。

我想到了一些不雅的修复方法:

有更好的解决方案吗?

这是我建议用内容描述覆盖文本的少数几次之一。你必须扩大它。

假设您有一个 TextView

textView.setText("2:45")

textView.setContentDescription("2 minutes 45 seconds")

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

您也可以保留它,请注意,如果 TalkBack 用户愿意,他们可以按字符浏览文本,因此他们可以找出奇怪的 TTS 自动格式。您也可以尝试将视图更改为如下所示:

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

不过,如果我没记错的话,TTS 引擎会将其扩展为“2 米四十五”……太棒了。

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

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