我们希望发送未链接到视图的可访问性事件(将由 TalkBack 等接收)。
例如,当 AsyncTask 完成时,我如何发送可访问性事件(例如,对讲说“数据已下载”)?
我们希望发送未链接到视图的可访问性事件(将由 TalkBack 等接收)。
例如,当 AsyncTask 完成时,我如何发送可访问性事件(例如,对讲说“数据已下载”)?
如果 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);
}
您可以像@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);
}
}
尝试使用广播消息,您可以向广播接收器发送一个意图,然后在接收器中您可以启动通知或其他东西。