【问题标题】:Android: How to eliminate spoken text from AccessibilityEvents when extending SeekBar?Android:扩展 SeekBar 时如何从 AccessibilityEvents 中消除语音文本?
【发布时间】:2017-04-24 17:34:39
【问题描述】:

我的 Android 应用包含一个基于 SeekBar 的自定义滑块控件,我想在我的控件中附加一个自定义文本短语来解释其用于辅助功能的用途。

我已使用View.setContentDescription(text) 成功完成此操作,当我从Activity.onCreate 请求关注我的滑块控件时,TalkBack 正确说出了该短语。

到目前为止,一切都很好。但是,当我触摸控件时,我相信它在我的 Android API 16 测试设备上设置了 AccessibilityFocus,额外的单词被添加到口语短语中,即'...seek control。 0%”。我想删除这些额外的字词。

我试图在View.onInitializeAccessibilityEvent(event) 中使用event.getText().clear() 消除它们,但没有成功。将事件回显到 LogCat 会在 event.contentDescription 中报告正确的短语,而在 event.text 中没有条目,但额外的单词会出现在设备硬件的音频输出和 Menu- 显示的屏幕调试文本中>设置->辅助功能->TalkBack->设置->开发者设置->显示语音输出

请任何人建议在哪里添加额外的单词,以及如何消除它们?

欢迎提出任何建设性的建议。谢谢。

更新

我可以看到,我的自定义控件上的某些通过触摸探索(初始单击)事件没有通过其 onInitializeAccessibilityEventdispatchPopulateAccessibilityEvent 方法,因为我故意调用 event.setContentDescription(null)。尽管如此,还是使用我的自定义控件的ContentDescription 生成了一个AccessibilityEvent,在代码中设置为Activity.onCreate,以及我试图消除的额外单词。

我还在我的自定义控件的父级ViewGroup 上设置了一个AccessibilityDelegate,以显示其onRequestSendAccessibilityEvent 调用。这确认没有包含我的ContentDescription 的事件正在通过。

这非常令人费解,并且在使用 API 16 的模拟器和真实硬件上都会发生。有什么想法吗?

【问题讨论】:

    标签: android accessibility seekbar talkback


    【解决方案1】:

    【讨论】:

    【解决方案2】:

    我认为这是 TalkBack 中的一个错误,并提出了Google Eyes-Free issue #375,包括示例代码。

    更新:Google 现已将其存档。链接移至:http://code.google.com/archive/p/eyes-free/issues/375

    【讨论】:

    • 链接已失效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多