Android辅助功能服务 - 在打开特定类时执行操作

时间:2016-03-21 15:10:45

标签: java android service disability

我正在开发一个辅助功能服务应用,它可以为用户提供有关在应用内部丢失时应采取的措施的提示。向他们展示一个屏幕叠加层,解释可以在该特定屏幕上执行的操作。 为了让我确切地知道它们在哪个屏幕上,我实现了一个AccessibilityService,让我可以阅读所有内容。现在我想使用该数据来提供我为特定屏幕创建的提示。

为此,我需要在调用特定类时调用方法。例如:

来自 com.google.android.apps包的 TYPE_WINDOW_STATE_CHANGED 具体 android.support.v4.widget.DrawerLayout .maps

这是数据显示在我的日志中的方式:

onAccessibilityEvent: [type] TYPE_WINDOW_CONTENT_CHANGED [class] android.support.v4.widget.DrawerLayout [package] com.google.android.apps.maps [time] 17716202 [text] 

所有我能找到的是How to click button in settings using AccessibilityService?,其中使用 findAccessibilityNodeInfosByViewId 按下特定按钮,但我不是在寻找ViewID,我不想按任何东西,我想要在正确的班级在屏幕上时调用方法。

到目前为止,这是我的onAccessibilityEvent方法(这是我认为应该发生的魔法):

public void onAccessibilityEvent(AccessibilityEvent event) {

        AccessibilityNodeInfo source = null;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
            source = event.getSource();
            Log.v(TAG, "Source Accessibility node info: " + source);
        }

        Log.v(TAG, String.format(
                "onAccessibilityEvent: [type] %s [class] %s [package] %s [time] %s [text] %s",
                getEventType(event), event.getClassName(), event.getPackageName(),
                event.getEventTime(), getEventText(event))); }

0 个答案:

没有答案