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
。顺便说一句,我的语言环境是法语。
我想到了一些不雅的修复方法:
- 将每个
mm:ss
替换为 00:mm:ss
- 将每个
mm:ss
替换为 mm minutes ss 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");
当 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
有更好的解决方案吗?
这是我建议用内容描述覆盖文本的少数几次之一。你必须扩大它。
假设您有一个 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");