Android辅助功能:在活动启动时读取自定义文本

时间:2017-02-10 08:07:50

标签: android accessibility talkback

我希望在我的活动启动后立即通过辅助功能阅读一些说明。我怎样才能做到这一点? (我不想读出活动标签)

1 个答案:

答案 0 :(得分:3)

您可以通过发布辅助功能公告事件来完成此操作。

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是唯一可靠的解决方法。