Android:当 "focus" 处于特定视图时,如何在对讲(可访问性)期间打断?

Android: how to interrupt during a talkback (accessibility) when the "focus" is on a specific view?

所以,我有一个用 Java 编写的 Android 应用程序。我希望能够在视障人士的辅助功能选项中使用对讲功能。当用户滑动 activity 时,各种组件上的对讲 "focuses" 我希望能够知道这一点:

1) 如何知道某个组件(例如,textview)上是否 "focused"?

2) 当"focused"在某个组件上时,如何中断它播放我自己的音频文件然后返回并让对讲再次接管?

提前致谢!

----编辑

只是为了更清楚一点,以防你不熟悉对讲...

一旦用户启用对讲,它就会读出 phone 屏幕上的所有内容。如果用户想要 select 一个应用程序,用户将继续向右、向左、向上或向下滑动,直到该应用程序名称为 highlighted/focused 并由对讲系统宣布。所以,我想知道何时突出显示特定的文本视图。

答案A:

查找视图 View.AccessibilityDelegate。

然后覆盖以下方法:

@Override
public boolean onRequestSendAccessibilityEvent(View child, AccessibilityEvent event) {
    if(event.getEventType() == TYPE_VIEW_ACCESSIBILITY_FOCUSED) {
        /*do your stuff here*/
    } else {
        return super.onRequestSendAccessibilityEvent(child, event);
    }
}

您要查找类型为 TYPE_VIEW_ACCESSIBILITY_FOCUSED 的事件。

答案B:根据WCag 2.0 Guideline 3.2,让事情自动发生在焦点上通常被认为是可访问性差。与其弄清楚如何让可访问性框架做一些通常被认为无法访问的事情,不如不要这样做:)。