是否可以在菜单项上设置可访问性代表?我的应用程序使用文本到语音,我想在 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) {
}发布于 2015-02-18 18:31:10
在WCag 2.0准则2.2.2下,您的应用程序所做的事情可能被视为不可访问,除非小心处理。
解决方案1:在此指导下,处理此场景的正确方法是为用户提供手动启动/停止/暂停内容的能力。这应该是相当简单的实现。光是这一点就足够了,而且对于所有3种解决方案来说都是必需的。
解决方案2:对于您来说,另一种方法是,当您检测到可访问性引擎处于活动状态时,不要自己进行语音合成。使用liveRegion将您的webview标记为一个ACCESSIBILITY_LIVE_REGION_POLITE。然后,让反馈继续到您的更新contentDescriptions,它应该包含当前突出显示的句子的文本。这就让TalkBack有了一项工作,那就是弄清楚什么时候该宣布什么。这有一个额外的好处,即使您的区域是活跃的,并且提供了大量的反馈,但它将以一种可预测的方式对TalkBack用户进行操作。因此,它不太可能违反WCag 2.2.2,尽管您仍然应该小心!而且很可能仍然需要提供暂停内容的能力。
解决方案3: Android没有附带实现的所有可访问性API回调。例如,如果您的MenuItems是按钮,则解决方案是重写onRequestSendAccessibilityEvent并查找TYPE_VIEW_ACCESSIBILITY_FOCUSED。但是MenuItems没有实现这个API。因此,您可以使用实现这些API的元素对您自己的菜单进行编码,并以您想要的方式完成它。不过,正如我前面提到的,我不推荐这种方法。这种方法很可能违反了WCag 2.0可访问性准则。
https://stackoverflow.com/questions/28545208
复制相似问题