【问题标题】:Send accessibility event not linked to view发送未链接到视图的可访问性事件
【发布时间】:2014-02-26 16:10:41
【问题描述】:

我们希望发送未链接到视图的可访问性事件(将由 TalkBack 等接收)。

例如,当 AsyncTask 完成时,我如何发送可访问性事件(例如,对讲说“数据已下载”)?

【问题讨论】:

  • 也许重新考虑这是否是最好的方法 - 您将只向 TalkBack 用户提供反馈,而不是视觉上的?这使得非 TalkBack 用户无法访问它。

标签: android accessibility android-a11y


【解决方案1】:

如果 AccessibilityEvent.getSource() 返回 null,当前版本的 TalkBack 似乎会忽略通知,因此您最好使用 Toast。这样做的另一个好处是,无论用户是否使用 TalkBack,都可以向他们提供一致的反馈。

Toast.makeText(context, /** some text */, Toast.LENGTH_SHORT).show();

不过,通常情况下,您可以手动创建一个 AccessibilityEvent 并通过 AccessibilityManager 发送它。

AccessibilityManager manager = (AccessibilityManager) context
        .getSystemService(Context.ACCESSIBILITY_SERVICE);
if (manager.isEnabled()) {
    AccessibilityEvent e = AccessibilityEvent.obtain();
    e.setEventType(AccessibilityEvent.TYPE_ANNOUNCEMENT);
    e.setClassName(getClass().getName());
    e.setPackageName(context.getPackageName());
    e.getText().add("some text");
    manager.sendAccessibilityEvent(e);
}

【讨论】:

  • 尝试此操作时运气不佳,并且 Talkback 不会说出文字。有什么想法吗?
  • 抱歉,setAction() 调用应该是 setEventType()。
  • 另外,最新版本的 TalkBack 似乎会拒绝没有来源的事件。这似乎是一个错误。与此同时,您可能只想展示一个 Toast。
【解决方案2】:

您可以像@alanv 所说的那样直接使用可访问性管理器(从 API 14 开始)。 但从 API 16 开始,您必须提供视图。

final View parentView = view.getParent();
if (parentView != null) {
    final AccessibilityManager a11yManager =
            (AccessibilityManager) view.getContext().getSystemService(Context.ACCESSIBILITY_SERVICE);

    if (a11yManager != null && a11yManager.isEnabled()) {
        final AccessibilityEvent e = AccessibilityEvent.obtain();
        view.onInitializeAccessibilityEvent(e);
        e.getText().add("some text");
        parentView.requestSendAccessibilityEvent(view, e);
    }
}

【讨论】:

  • 这里的最后一行应该是a11yManager.requestSendAccessibilityEvent(view, e); 吗?
【解决方案3】:

尝试使用广播消息,您可以向广播接收器发送一个意图,然后在接收器中您可以启动通知或其他东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    • 2014-03-28
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    相关资源
    最近更新 更多