【发布时间】:2015-02-16 15:47:50
【问题描述】:
是否可以通过任何方式在菜单项上设置辅助功能委托?我的应用程序使用文本转语音,我想在 TalkBack 开始说出我的菜单项的内容描述(当菜单项获得辅助功能焦点时发生)之前执行一些自定义代码。否则,我应用的文字转语音将与 TalkBack 的文字转语音发生冲突。
更新: 我的应用程序从 WebView 中获取一个句子,突出显示它并使用 TTS 引擎读取它。当句子被说出时,onDone() 回调会启动相同的方法,但会针对下一个句子。
由于 TalkBack 和我的应用使用相同的 TTS 引擎,因此一次只允许说出一种话语。因此,我的应用程序正在逐句阅读其 WebView 句子,但随后用户将注意力集中在菜单项上,TalkBack 将阅读其描述。因为我的语音被打断了,onDone() 会被调用(onDone() 无法区分话语是完全说出还是简单地被打断),所以会调用 speakNextSentence(),即使我之前的句子可能只在两句后就被打断了字。 我想在触发菜单项的可访问性事件之前以某种方式将 isPaused 布尔值设置为 true。
private class ttsUtteranceListener extends UtteranceProgressListener {
@Override
public void onStart(String utteranceId) {
}
@Override
public void onDone(final String utteranceId) {
if (!isPaused) {
...
speakNextSentence();
...
}
}
@Override
public void onError(String utteranceId) {
}
【问题讨论】:
-
没有。你不能。至少,不是我相信你试图描述的方式。 Android 的 A11y API 不支持这种方式的委托。不过,如果您要多描述一下您的场景,可能会有其他解决方案。
-
更新了一些代码
标签: android accessibility text-to-speech android-menu talkback