我有一个duo lingo(英语西班牙语)android应用程序 . 我正在我的应用程序中实现辅助功能,我希望Talkback能够阅读西班牙语中的西班牙语单词和英语中的英语单词 . 英语和西班牙语单词将在单独的文本视图中 . 我的应用程序区域设置是英语,因此Talkback谷歌文本到语音引擎不会读取西班牙语中的西班牙语单词,它们用英语阅读,更常见的是它们的字母被读出(预期的行为) .
是否有任何工作或Android推荐的解决方案来实现相同 .
最后,我希望Talkback或自定义辅助功能服务能够读出英语单词和西班牙语单词 .
2 回答
免责声明:您必须非常小心这个解决方案!覆盖TalkBack的TTS行为非常非常粗略 . 从可访问性的角度来看,有许多边缘情况可能会使这种行为变得笨拙,笨拙且非常糟糕 . 仅当公告的样式是特定于应用程序和必需功能的行为时,才应使用此解决方案 . 否则,此解决方案会破坏与用户代理兼容的各种WCAG 2.0成功标准,从可访问性/可用性的角度来看,这通常是一个糟糕的想法!
在很多情况下,当我看到这样的问题时,我对提供答案犹豫不决,以免给开发人员提供他们不理解的工具 . 请不要在典型的应用程序中这样做,这是一个糟糕的主意 . 话虽如此,我相信这种特殊情况需要它,鉴于这种情况,这是一个非常干净的解决方案 . 在创建活动时,请执行以下操作:
基本上我们在这里说的是将可访问性委托附加到我们活动的根视图 . 查看弹出的所有辅助功能事件 . 检查是否是宣布某事的事件 . 如果是,请检查它是否包含西班牙文本 . 如果是,请允许我们的西班牙语TTS引擎宣布它,而不是允许通风口传播 . 在所有其他情况下让android做它的事情 .
谷歌宣布了一项更新,允许您指定要大声朗读文本的语言 . 这里提供了一个链接答案:https://stackoverflow.com/a/44461540/494879