android - TalkBack 读取时间错误

标签 android time talkback

当 TextView 包含 foo bar 04:58 时,TalkBack 会显示 foo bar 4 小时 58 分钟 - 应该是 foo bar 4 分钟 58 秒。另一方面,foo bar 04:24:05 工作正常:foo bar 4 小时 24 分 5 秒。顺便说一句,我的语言环境是法语。

我想到了对此进行不优雅的修复:

  • 将每个 mm:ss 替换为 00:mm:ss
  • 将每个 mm:ss 替换为 mm 分钟 ss 秒

有更好的解决方案吗?

最佳答案

这是我极少数建议用内容描述覆盖文本的情况之一。你必须将其扩展。

假设您有一个 TextView

textView.setText("2:45")

textView.setContentDescription("2 minutes 45 seconds")

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

您也可以保留它,并注意 TalkBack 用户可以根据需要按字符探索文本,因此他们可以找出奇怪的 TTS 自动格式。您也可以尝试将 View 更改为如下所示:

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

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

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

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

关于android - TalkBack 读取时间错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44019930/

相关文章:

android - android中如何解析含有特殊字符的json对象

php - 按时间和日期过滤

c# - 从指定时间开始秒表

python - 如何让一些东西不受 time.sleep() python 的影响

android - 多语言内容描述

Android对讲不读取对话框内容

java - 应用程序崩溃了几次但不是在 Debug模式下

Java 泛型 : How to wrap/extend Android Activity test case?

xamarin - 在 Xamarin Forms 应用程序中,如何在 Android 中使用 TalkBack 时将焦点放在标签和图像等非交互式元素上

android - Android 上的位置感知地理编码(就像 Google map )