当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
有更好的解决方案吗?
答案 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");