我们希望发送一个未链接到视图的可访问性事件(将由对讲机等接收)。
例如,当异步任务完成时,我如何发送可访问性事件(例如说“数据已下载”)呢?

最佳答案

如果accessibilityEvent.getSource()返回null,当前版本的talkback似乎会忽略通知,因此最好使用toast。这还有一个额外的好处,就是无论用户是否在使用反馈,都可以向用户提供一致的反馈。

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);
}

09-28 02:47