【问题标题】:About Android Accessibility Talkback. Is there any talkback focus listener?关于 Android 辅助功能对讲。是否有任何对讲焦点监听器?
【发布时间】:2017-09-13 21:09:49
【问题描述】:

我正在为视障人士开发安卓照片应用程序。

当然,我的应用程序在 Talkback 上下文中运行。 在 Talkback 上下文中,当按钮获得焦点时,系统会读取按钮的文本。 the green box represents the focused content

我想要做的是在按钮聚焦时播放音频文件而不是按钮的文本标签。 但是,我找不到任何检测按钮焦点状态的侦听器。 有什么办法吗?

【问题讨论】:

    标签: android listview listener talkback


    【解决方案1】:

    免责声明:根据WCAG 2.0 - 3.2.1,焦点上发生的事情可能是主要的可访问性违规。我鼓励你重新考虑你的设计/做广泛的用户研究,以确保你最终做的不仅仅是创造令人沮丧的用户体验。不仅如此,但请记住,TalkBack 并不是唯一的辅助技术,让我感到震惊的是,这种机制对于使用 Switch Access 的用户来说可能非常令人沮丧,并且对于盲文提示用户来说可能会完全崩溃。

    话虽如此,这就是您将如何完成此行为:

    您想查看View.AccessibilityDelegate 中可用的回调

    我相信您应该寻找如下所示的代码:

    void onPopulateAccessibilityEvent(View host, AccessibilityEvent event) {
        if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED) {
            //do stuff here
        }
    }
    

    将此附加到正在接收焦点的视图,或者根据您使用的回调,您可以将其附加到包含一系列控件的布局。

    现在,我说“类似这样的东西”,因为有很多不同的可访问性委托回调、事件前触发、事件触发后、允许您在事件填充到视图层次结构时调整事件等。您选择哪个回调取决于您希望发生这种情况的确切时间以及您可能需要对正在触发的 AccessibilityEvent 进行调整的事情的性质。

    【讨论】:

    • 实际上,我无法理解如何将此代码应用于我的项目。你的意思是我必须将此代码附加到我的活动课程中?那我怎么知道点击了哪个按钮呢?简单地说,我想做的是:当 button1 被聚焦时 -> 播放 A.mp3 文件 当 button2 被聚焦时 -> 播放 B.mp3 文件(有完整代码示例吗?)
    • 已点击 -> 关注之前的评论
    • 谢谢我做到了。我将辅助功能委托设置为按钮!
    • 你应该接受答案!保持干净整洁。
    • 我有一个项目列表,其中每个项目都有一个计数器,因为我不会在每个项目中使用 setLiveRegion,我想在当前选定的项目中设置它,以便用户了解更改在每约 30 秒发生一次的计数器中。我认为这个用例是有效的,你不觉得吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多