Android 辅助功能:在 activity 启动时阅读自定义文本
Android Accessibility: Reading custom text on activity launch
我想在启动 My activity 后立即通过辅助功能阅读一些说明。我怎样才能做到这一点? (我不想读出activity标签)
您可以通过发布无障碍通告活动来做到这一点。
AccessibilityManager manager = (AccessibilityManager)mService.getSystemService(Context.ACCESSIBILITY_SERVICE);
if (manager.isEnabled()) {
AccessibilityEvent e = AccessibilityEvent.obtain();
e.setEventType(AccessibilityEvent.TYPE_ANNOUNCEMENT);
e.getText().add(message);
//There may be other things you need to add like class/packagename, I'm doing this from memory on my non-dev machine, so if this isn't quite right I apologize, I promise it's super close! :)
manager.sendAccessibilityEvent(e);
}
请注意,您可能无法在活动的 onCreate 方法中执行此操作。无障碍服务的附件存在微妙的竞争条件。如果确实将它放在 onCreate 中不起作用,请尝试将其延迟添加到 Runnable 或 onPostResume 中,我认为这是该链中的最新回调。但最终,如果这是一个问题,延迟的 Runnable 是唯一可靠的解决方法。
我想在启动 My activity 后立即通过辅助功能阅读一些说明。我怎样才能做到这一点? (我不想读出activity标签)
您可以通过发布无障碍通告活动来做到这一点。
AccessibilityManager manager = (AccessibilityManager)mService.getSystemService(Context.ACCESSIBILITY_SERVICE);
if (manager.isEnabled()) {
AccessibilityEvent e = AccessibilityEvent.obtain();
e.setEventType(AccessibilityEvent.TYPE_ANNOUNCEMENT);
e.getText().add(message);
//There may be other things you need to add like class/packagename, I'm doing this from memory on my non-dev machine, so if this isn't quite right I apologize, I promise it's super close! :)
manager.sendAccessibilityEvent(e);
}
请注意,您可能无法在活动的 onCreate 方法中执行此操作。无障碍服务的附件存在微妙的竞争条件。如果确实将它放在 onCreate 中不起作用,请尝试将其延迟添加到 Runnable 或 onPostResume 中,我认为这是该链中的最新回调。但最终,如果这是一个问题,延迟的 Runnable 是唯一可靠的解决方法。