Example usage for android.support.v4.view.accessibility AccessibilityNodeInfoCompat AccessibilityNodeInfoCompat

List of usage examples for android.support.v4.view.accessibility AccessibilityNodeInfoCompat AccessibilityNodeInfoCompat

Introduction

In this page you can find the example usage for android.support.v4.view.accessibility AccessibilityNodeInfoCompat AccessibilityNodeInfoCompat.

Prototype

public AccessibilityNodeInfoCompat(Object info) 

Source Link

Usage

From source file:com.android.utils.compat.accessibilityservice.AccessibilityServiceCompatUtils.java

/**
 * @return root node of the Application window
 *///from   ww  w. j  a va  2s  . c om
public static AccessibilityNodeInfoCompat getRootInActiveWindow(AccessibilityService service) {
    if (service == null)
        return null;

    AccessibilityNodeInfo root = service.getRootInActiveWindow();
    if (root == null)
        return null;
    return new AccessibilityNodeInfoCompat(root);
}

From source file:com.android.switchaccess.test.ShadowAccessibilityNodeInfoCompat.java

@Implementation
public static AccessibilityNodeInfoCompat obtain(AccessibilityNodeInfoCompat compat) {
    final AccessibilityNodeInfo newInfo = AccessibilityNodeInfo
            .obtain((AccessibilityNodeInfo) compat.getInfo());
    return new AccessibilityNodeInfoCompat(newInfo);
}

From source file:com.android.switchaccess.test.ShadowAccessibilityNodeInfoCompat.java

@Implementation
public static AccessibilityNodeInfoCompat obtain() {
    return new AccessibilityNodeInfoCompat(AccessibilityNodeInfo.obtain());
}

From source file:com.googlecode.eyesfree.compat.accessibilityservice.AccessibilityServiceCompatUtils.java

public static AccessibilityNodeInfoCompat getRootInActiveWindow(AccessibilityService service) {
    Object root = CompatUtils.invoke(service, null, METHOD_getRootInActiveWindow);
    if (root != null) {
        return new AccessibilityNodeInfoCompat(root);
    } else {/*from   w  w  w. jav  a  2  s .com*/
        return null;
    }
}

From source file:com.android.utils.FocusFinder.java

public static AccessibilityNodeInfoCompat getFocusedNode(AccessibilityService service, boolean fallbackOnRoot) {
    AccessibilityNodeInfo root = service.getRootInActiveWindow();
    AccessibilityNodeInfo focused = null;

    try {/*from  ww  w.  ja v  a 2s  . c  om*/
        AccessibilityNodeInfo ret = null;
        if (root != null) {
            focused = root.findFocus(AccessibilityNodeInfo.FOCUS_ACCESSIBILITY);
            if (focused != null && focused.isVisibleToUser()) {
                ret = focused;
                focused = null;
            } else if (fallbackOnRoot) {
                ret = root;
                root = null;
            }
        } else {
            LogUtils.log(service, Log.ERROR, "No current window root");
        }

        if (ret != null) {
            return new AccessibilityNodeInfoCompat(ret);
        }
    } finally {
        if (root != null) {
            root.recycle();
        }

        if (focused != null) {
            focused.recycle();
        }
    }

    return null;
}

From source file:com.googlecode.eyesfree.compat.view.accessibility.AccessibilityNodeInfoCompatUtils.java

/**
 * Gets the node info for which the view represented by this info serves as
 * a label for accessibility purposes./*from   w  w  w .ja  v a  2 s  . c om*/
 * <p>
 * <strong>Note:</strong> It is a client responsibility to recycle the
 * received info by calling {@link AccessibilityNodeInfoCompat#recycle()} to
 * avoid creating of multiple instances.
 * </p>
 *
 * @return The labeled info.
 */
public static AccessibilityNodeInfoCompat getLabelFor(AccessibilityNodeInfoCompat node) {
    final Object info = node.getInfo();
    if (info == null) {
        Log.e(TAG, "Compat node was missing internal node");
        return null;
    }

    final Object resultInfo = CompatUtils.invoke(info, null, METHOD_getLabelFor);
    if (resultInfo == null) {
        return null;
    }

    return new AccessibilityNodeInfoCompat(resultInfo);
}

From source file:com.google.android.apps.common.testing.accessibility.framework.AccessibilityInfoHierarchyCheck.java

static List<AccessibilityNodeInfoCompat> getAllInfoCompatsInHierarchy(Context context,
        AccessibilityNodeInfo root) {// w w  w .j a v a  2  s  .c o m
    return AccessibilityNodeInfoUtils.searchAllFromBfs(context, new AccessibilityNodeInfoCompat(root),
            AccessibilityInfoHierarchyCheck.WIDE_OPEN_FILTER);
}

From source file:com.android.screenspeak.formatter.LiveViewFormatter.java

@Override
public boolean accept(AccessibilityEvent event, ScreenSpeakService context) {
    if (event.getEventType() != AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED)
        return false;

    AccessibilityNodeInfoCompat node = new AccessibilityNodeInfoCompat(event.getSource());
    if (node.getInfo() == null) {
        return false;
    }//from w  w w  .java 2 s .  co m

    int liveRegion = node.getLiveRegion();
    switch (liveRegion) {
    case View.ACCESSIBILITY_LIVE_REGION_POLITE:
        return true;
    case View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE:
        return true;
    case View.ACCESSIBILITY_LIVE_REGION_NONE:
        return false;
    default:
        return false;
    }
}

From source file:com.google.android.apps.common.testing.accessibility.framework.EditableContentDescInfoCheck.java

@Override
public List<AccessibilityInfoCheckResult> runCheckOnInfo(AccessibilityNodeInfo info, Context context,
        Bundle metadata) {/*from  w  ww  .  j av  a 2 s . c  o  m*/
    List<AccessibilityInfoCheckResult> results = new ArrayList<AccessibilityInfoCheckResult>(1);
    AccessibilityNodeInfoCompat compatInfo = new AccessibilityNodeInfoCompat(info);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
        if (info.isEditable()) {
            if (!TextUtils.isEmpty(info.getContentDescription())) {
                results.add(
                        new AccessibilityInfoCheckResult(this.getClass(), AccessibilityCheckResultType.ERROR,
                                "Editable view should not have a contentDescription", info));
            }
        } else {
            results.add(new AccessibilityInfoCheckResult(this.getClass(), AccessibilityCheckResultType.NOT_RUN,
                    "Associated view must be editable", info));
        }
    } else {
        // Earlier API versions don't allow us to filter based on editable state, so we'll fall back
        // to using EditTexts instead.

        // TODO(caseyburkhardt): The missing context below will cause us to fail to resolve classes
        // defined within other packages.
        if (AccessibilityNodeInfoUtils.nodeMatchesAnyClassByType(null, compatInfo, EditText.class)) {
            if (!TextUtils.isEmpty(compatInfo.getContentDescription())) {
                results.add(
                        new AccessibilityInfoCheckResult(this.getClass(), AccessibilityCheckResultType.ERROR,
                                "EditText should not have a contentDescription", info));
            }
        } else {
            results.add(new AccessibilityInfoCheckResult(this.getClass(), AccessibilityCheckResultType.NOT_RUN,
                    "Associated view must be an EditText", info));
        }
    }
    return results;
}

From source file:com.android.utils.compat.accessibilityservice.AccessibilityServiceCompatUtils.java

/**
 * @return root node of the window that currently has accessibility focus
 *///from   ww  w  . j av a2 s  . co m
public static AccessibilityNodeInfoCompat getRootInAccessibilityFocusedWindow(AccessibilityService service) {
    if (service == null) {
        return null;
    }

    AccessibilityNodeInfo focusedRoot = null;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
        List<AccessibilityWindowInfo> windows = service.getWindows();
        // Create window manager with fake value of isInRTL = false. This is okay here since
        // isInRTL will not change the result of getCurrentWindow.
        WindowManager manager = new WindowManager(false /* isInRTL */);
        manager.setWindows(windows);
        AccessibilityWindowInfo accessibilityFocusedWindow = manager
                .getCurrentWindow(false /* useInputFocus */);

        if (accessibilityFocusedWindow != null) {
            focusedRoot = accessibilityFocusedWindow.getRoot();
        }
    }

    if (focusedRoot == null) {
        focusedRoot = service.getRootInActiveWindow();
    }

    if (focusedRoot == null) {
        return null;
    }

    return new AccessibilityNodeInfoCompat(focusedRoot);
}