2017-04-18 72 views
1

我正在为视障人士开发安卓照片应用程序。关于Android辅助功能Talkback。有没有对讲焦点听众?

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

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

回答

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的事情的性质。

+0

实际上,我无法理解如何将此代码应用于我的项目。 你的意思是我必须将此代码附加到我的活动课程中? 那我怎么知道哪个按钮被点击? 简单地说,就是我想做的事: 当Button1的聚焦 - >播放A.mp3文件 当BUTTON2集中 - >玩B.mp3文件 (?有没有完整的代码示例) –

+0

点击 - >关注在之前的评论 –

+0

谢谢我做到了。我将Accessibility委托设置为按钮! –