Example usage for android.view.accessibility AccessibilityNodeInfo getChild

List of usage examples for android.view.accessibility AccessibilityNodeInfo getChild

Introduction

In this page you can find the example usage for android.view.accessibility AccessibilityNodeInfo getChild.

Prototype

public AccessibilityNodeInfo getChild(int index) 

Source Link

Document

Get the child at given index.

Usage

From source file:com.android.switchaccess.SwitchAccessNodeCompat.java

@Override
public SwitchAccessNodeCompat getChild(int index) {
    AccessibilityNodeInfo info = (AccessibilityNodeInfo) getInfo();
    AccessibilityNodeInfo child = info.getChild(index);
    return (child == null) ? null : new SwitchAccessNodeCompat(child, this.mWindowsAbove);
}

From source file:org.sufficientlysecure.keychain.gm.GmAccessibilityService.java

private void findPgpNodeInfo(AccessibilityNodeInfo parent, ArrayList<AccessibilityNodeInfo> pgpNodes) {

    for (int i = 0; i < parent.getChildCount(); i++) {
        AccessibilityNodeInfo currentChild = parent.getChild(i);

        /*/*from   ww w  .  java2  s. c  o m*/
         WebView
         |- WebView
        |- View
        |- View
        |- View
         */
        if (WEB_VIEW_CLASS_NAME.equals(parent.getClassName())
                && VIEW_CLASS_NAME.equals(currentChild.getClassName())
                && !TextUtils.isEmpty(currentChild.getContentDescription())
                && currentChild.getContentDescription().toString().startsWith(BEGIN_PGP_MESSAGE)) {

            pgpNodes.add(currentChild);
        } else {
            // recursive traversal
            findPgpNodeInfo(currentChild, pgpNodes);

            currentChild.recycle();
        }
    }
}

From source file:com.googlecode.eyesfree.brailleback.TreeDebugNavigationMode.java

private AccessibilityNodeInfo getFirstChild(AccessibilityNodeInfo from) {
    if (from.getChildCount() < 1) {
        return null;
    }//from  w  w w.  ja v  a  2s .  c  om
    return from.getChild(0);
}

From source file:com.googlecode.eyesfree.brailleback.TreeDebugNavigationMode.java

private AccessibilityNodeInfo getLastChild(AccessibilityNodeInfo from) {
    if (from.getChildCount() < 1) {
        return null;
    }/*from   w  w  w  . j  a  va 2  s. c o m*/
    return from.getChild(from.getChildCount() - 1);
}

From source file:com.googlecode.eyesfree.brailleback.TreeDebugNavigationMode.java

private AccessibilityNodeInfo getNextSibling(AccessibilityNodeInfo from) {
    AccessibilityNodeInfo parent = from.getParent();
    if (parent == null) {
        return null;
    }/*from  w  ww.j  a v  a 2  s. c o  m*/
    AccessibilityNodeInfo cur = null;
    try {
        int childCount = parent.getChildCount();
        for (int i = 0; i < childCount - 1; ++i) {
            cur = parent.getChild(i);
            if (cur == null) {
                return null;
            }
            if (cur.equals(from)) {
                return parent.getChild(i + 1);
            }
            if (cur != null) {
                cur.recycle();
                cur = null;
            }
        }
    } finally {
        parent.recycle();
        if (cur != null) {
            cur.recycle();
        }
    }
    return null;
}

From source file:com.googlecode.eyesfree.brailleback.TreeDebugNavigationMode.java

private AccessibilityNodeInfo getPreviousSibling(AccessibilityNodeInfo from) {
    AccessibilityNodeInfo ret = null;//from   w  w w . java2s  .c  om
    AccessibilityNodeInfo parent = from.getParent();
    if (parent == null) {
        return null;
    }
    AccessibilityNodeInfo prev = null;
    AccessibilityNodeInfo cur = null;
    try {
        int childCount = parent.getChildCount();
        for (int i = 0; i < childCount; ++i) {
            cur = parent.getChild(i);
            if (cur == null) {
                return null;
            }
            if (cur.equals(from)) {
                ret = prev;
                prev = null;
                return ret;
            }
            if (prev != null) {
                prev.recycle();
            }
            prev = cur;
            cur = null;
        }
    } finally {
        parent.recycle();
        if (prev != null) {
            prev.recycle();
        }
        if (cur != null) {
            cur.recycle();
        }
    }
    return ret;
}

From source file:com.googlecode.eyesfree.brailleback.TreeDebugNavigationMode.java

private void printNodeTree(AccessibilityNodeInfo node, String indent, HashSet<AccessibilityNodeInfo> seen) {
    if (node == null) {
        return;/*from  w  ww.ja v  a2s .c o m*/
    }
    if (!seen.add(node)) {
        LogUtils.log(this, Log.VERBOSE, "Cycle: %d", node.hashCode());
        return;
    }
    // Include the hash code as a "poor man's" id, knowing that it
    // might not always be unique.
    LogUtils.log(this, Log.VERBOSE, "%s(%d)%s", indent, node.hashCode(), formatNode(node));
    int childCount = node.getChildCount();
    String childIndent = indent + "  ";
    for (int i = 0; i < childCount; ++i) {
        AccessibilityNodeInfo child = node.getChild(i);
        if (child == null) {
            LogUtils.log(this, Log.VERBOSE, "%sCouldn't get child %d", indent, i);
            continue;
        }
        printNodeTree(child, childIndent, seen);
    }
}

From source file:com.ucmap.dingdinghelper.services.DingDingHelperAccessibilityService.java

/**
 * AccessibilityNodeInfo  ?webView /*from  ww w .ja  v  a2  s . c  om*/
 *  
 *
 * @param target
 * @param accessibilityNodeInfo
 * @return
 */
private AccessibilityNodeInfo recurseFindByText(String target, AccessibilityNodeInfo accessibilityNodeInfo) {

    if (accessibilityNodeInfo != null && accessibilityNodeInfo.getChildCount() == 0) {
        if ((target.equals(accessibilityNodeInfo.getText())
                || target.equals(accessibilityNodeInfo.getContentDescription())))
            return accessibilityNodeInfo;
        else
            return null;
    } else {
        if (accessibilityNodeInfo == null)
            return null;

        for (int i = 0; i < accessibilityNodeInfo.getChildCount(); i++) {
            AccessibilityNodeInfo child = accessibilityNodeInfo.getChild(i);
            AccessibilityNodeInfo isTaget = recurseFindByText(target, child);
            if (isTaget == null)
                continue;
            else
                return isTaget;
        }
        return null;
    }
}

From source file:com.ucmap.dingdinghelper.services.DingDingHelperAccessibilityService.java

/**
 * AccessibilityNodeInfo  ?webView /* ww  w.  j a  v a  2 s . com*/
 * List
 * ? ???target??
 *
 * @param target
 * @param accessibilityNodeInfo
 * @return
 */
private void recurseFindByTextToList(String target, AccessibilityNodeInfo accessibilityNodeInfo,
        @NonNull List<AccessibilityNodeInfo> mInfos) {

    if (accessibilityNodeInfo != null && accessibilityNodeInfo.getChildCount() == 0) {

        if (((accessibilityNodeInfo.getText() != null
                && accessibilityNodeInfo.getText().toString().contains(target))
                || (accessibilityNodeInfo.getContentDescription() != null
                        && accessibilityNodeInfo.getContentDescription().toString().contains(target)))) {
            mInfos.add(accessibilityNodeInfo);
            return;
        } else
            return;
    } else {
        if (accessibilityNodeInfo == null)
            return;

        for (int i = 0; i < accessibilityNodeInfo.getChildCount(); i++) {
            AccessibilityNodeInfo child = accessibilityNodeInfo.getChild(i);
            recurseFindByTextToList(target, child, mInfos);
        }
        return;
    }
}

From source file:com.ucmap.dingdinghelper.services.DingDingHelperAccessibilityService.java

/**
 *
 *///from  w ww.ja v a2 s.co  m
public void recycle(AccessibilityNodeInfo info, String target, boolean isClickSelft) {
    int temp = 0;
    if (info != null && info.getChildCount() == 0) {
        if (info.getContentDescription() != null && info.getContentDescription().toString().equals(target)
                && isClickSelft) {

            String content = info.getContentDescription().toString();
            info.performAction(AccessibilityNodeInfo.ACTION_CLICK);
            if (content.equals(AFTER_WORK))
                handleIt(info);
            else if (content.equals(GO_TO_WORK))
                handleGoToWork(info);
            return;
        }
        if (info.getText() != null) {
            if (target.equals(info.getText().toString())) {
                if (isClickSelft) {
                    info.performAction(AccessibilityNodeInfo.ACTION_CLICK);
                    return;
                }
                AccessibilityNodeInfo parent = info.getParent();
                while (parent != null) {
                    if (parent.isClickable()) {
                        parent.performAction(AccessibilityNodeInfo.ACTION_CLICK);
                        break;
                    }
                    parent = parent.getParent();
                }
            }

        }
    } else {

        for (int i = 0; info != null && i < info.getChildCount(); i++) {
            if (info.getChild(i) != null) {
                temp = i;
                recycle(info.getChild(i), target, isClickSelft);
            }
        }
    }
}