android.view.accessibility.AccessibilityNodeInfo#getAccessibilityViewId ( )源码实例Demo

下面列出了android.view.accessibility.AccessibilityNodeInfo#getAccessibilityViewId ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

public void findAccessibilityNodeInfoByAccessibilityIdClientThread(
        long accessibilityNodeId, Region interactiveRegion, int interactionId,
        IAccessibilityInteractionConnectionCallback callback, int flags, int interrogatingPid,
        long interrogatingTid, MagnificationSpec spec, Bundle arguments) {
    final Message message = mHandler.obtainMessage();
    message.what = PrivateHandler.MSG_FIND_ACCESSIBILITY_NODE_INFO_BY_ACCESSIBILITY_ID;
    message.arg1 = flags;

    final SomeArgs args = SomeArgs.obtain();
    args.argi1 = AccessibilityNodeInfo.getAccessibilityViewId(accessibilityNodeId);
    args.argi2 = AccessibilityNodeInfo.getVirtualDescendantId(accessibilityNodeId);
    args.argi3 = interactionId;
    args.arg1 = callback;
    args.arg2 = spec;
    args.arg3 = interactiveRegion;
    args.arg4 = arguments;
    message.obj = args;

    scheduleMessage(message, interrogatingPid, interrogatingTid, CONSIDER_REQUEST_PREPARERS);
}
 
public void findAccessibilityNodeInfosByViewIdClientThread(long accessibilityNodeId,
        String viewId, Region interactiveRegion, int interactionId,
        IAccessibilityInteractionConnectionCallback callback, int flags, int interrogatingPid,
        long interrogatingTid, MagnificationSpec spec) {
    Message message = mHandler.obtainMessage();
    message.what = PrivateHandler.MSG_FIND_ACCESSIBILITY_NODE_INFOS_BY_VIEW_ID;
    message.arg1 = flags;
    message.arg2 = AccessibilityNodeInfo.getAccessibilityViewId(accessibilityNodeId);

    SomeArgs args = SomeArgs.obtain();
    args.argi1 = interactionId;
    args.arg1 = callback;
    args.arg2 = spec;
    args.arg3 = viewId;
    args.arg4 = interactiveRegion;
    message.obj = args;

    scheduleMessage(message, interrogatingPid, interrogatingTid, CONSIDER_REQUEST_PREPARERS);
}
 
public void findAccessibilityNodeInfosByTextClientThread(long accessibilityNodeId,
        String text, Region interactiveRegion, int interactionId,
        IAccessibilityInteractionConnectionCallback callback, int flags, int interrogatingPid,
        long interrogatingTid, MagnificationSpec spec) {
    Message message = mHandler.obtainMessage();
    message.what = PrivateHandler.MSG_FIND_ACCESSIBILITY_NODE_INFO_BY_TEXT;
    message.arg1 = flags;

    SomeArgs args = SomeArgs.obtain();
    args.arg1 = text;
    args.arg2 = callback;
    args.arg3 = spec;
    args.argi1 = AccessibilityNodeInfo.getAccessibilityViewId(accessibilityNodeId);
    args.argi2 = AccessibilityNodeInfo.getVirtualDescendantId(accessibilityNodeId);
    args.argi3 = interactionId;
    args.arg4 = interactiveRegion;
    message.obj = args;

    scheduleMessage(message, interrogatingPid, interrogatingTid, CONSIDER_REQUEST_PREPARERS);
}
 
public void findFocusClientThread(long accessibilityNodeId, int focusType,
        Region interactiveRegion, int interactionId,
        IAccessibilityInteractionConnectionCallback callback, int flags, int interrogatingPid,
        long interrogatingTid, MagnificationSpec spec) {
    Message message = mHandler.obtainMessage();
    message.what = PrivateHandler.MSG_FIND_FOCUS;
    message.arg1 = flags;
    message.arg2 = focusType;

    SomeArgs args = SomeArgs.obtain();
    args.argi1 = interactionId;
    args.argi2 = AccessibilityNodeInfo.getAccessibilityViewId(accessibilityNodeId);
    args.argi3 = AccessibilityNodeInfo.getVirtualDescendantId(accessibilityNodeId);
    args.arg1 = callback;
    args.arg2 = spec;
    args.arg3 = interactiveRegion;

    message.obj = args;

    scheduleMessage(message, interrogatingPid, interrogatingTid, CONSIDER_REQUEST_PREPARERS);
}
 
public void focusSearchClientThread(long accessibilityNodeId, int direction,
        Region interactiveRegion, int interactionId,
        IAccessibilityInteractionConnectionCallback callback, int flags, int interrogatingPid,
        long interrogatingTid, MagnificationSpec spec) {
    Message message = mHandler.obtainMessage();
    message.what = PrivateHandler.MSG_FOCUS_SEARCH;
    message.arg1 = flags;
    message.arg2 = AccessibilityNodeInfo.getAccessibilityViewId(accessibilityNodeId);

    SomeArgs args = SomeArgs.obtain();
    args.argi2 = direction;
    args.argi3 = interactionId;
    args.arg1 = callback;
    args.arg2 = spec;
    args.arg3 = interactiveRegion;

    message.obj = args;

    scheduleMessage(message, interrogatingPid, interrogatingTid, CONSIDER_REQUEST_PREPARERS);
}
 
public void performAccessibilityActionClientThread(long accessibilityNodeId, int action,
        Bundle arguments, int interactionId,
        IAccessibilityInteractionConnectionCallback callback, int flags, int interrogatingPid,
        long interrogatingTid) {
    Message message = mHandler.obtainMessage();
    message.what = PrivateHandler.MSG_PERFORM_ACCESSIBILITY_ACTION;
    message.arg1 = flags;
    message.arg2 = AccessibilityNodeInfo.getAccessibilityViewId(accessibilityNodeId);

    SomeArgs args = SomeArgs.obtain();
    args.argi1 = AccessibilityNodeInfo.getVirtualDescendantId(accessibilityNodeId);
    args.argi2 = action;
    args.argi3 = interactionId;
    args.arg1 = callback;
    args.arg2 = arguments;

    message.obj = args;

    scheduleMessage(message, interrogatingPid, interrogatingTid, CONSIDER_REQUEST_PREPARERS);
}
 
源代码7 项目: android_9.0.0_r45   文件: AutofillManager.java
private View findViewByAccessibilityId(int windowId, long nodeId) {
    final AutofillClient client = getClient();
    if (client == null) {
        return null;
    }
    final int viewId = AccessibilityNodeInfo.getAccessibilityViewId(nodeId);
    return client.autofillClientFindViewByAccessibilityIdTraversal(viewId, windowId);
}
 
private void prefetchPredecessorsOfVirtualNode(AccessibilityNodeInfo root,
        View providerHost, AccessibilityNodeProvider provider,
        List<AccessibilityNodeInfo> outInfos) {
    final int initialResultSize = outInfos.size();
    long parentNodeId = root.getParentNodeId();
    int accessibilityViewId = AccessibilityNodeInfo.getAccessibilityViewId(parentNodeId);
    while (accessibilityViewId != AccessibilityNodeInfo.UNDEFINED_ITEM_ID) {
        if (outInfos.size() >= MAX_ACCESSIBILITY_NODE_INFO_BATCH_SIZE) {
            return;
        }
        final int virtualDescendantId =
            AccessibilityNodeInfo.getVirtualDescendantId(parentNodeId);
        if (virtualDescendantId != AccessibilityNodeProvider.HOST_VIEW_ID
                || accessibilityViewId == providerHost.getAccessibilityViewId()) {
            final AccessibilityNodeInfo parent;
            parent = provider.createAccessibilityNodeInfo(virtualDescendantId);
            if (parent == null) {
                // Going up the parent relation we found a null predecessor,
                // so remove these disconnected nodes form the result.
                final int currentResultSize = outInfos.size();
                for (int i = currentResultSize - 1; i >= initialResultSize; i--) {
                    outInfos.remove(i);
                }
                // Couldn't obtain the parent, which means we have a
                // disconnected sub-tree. Abort prefetch immediately.
                return;
            }
            outInfos.add(parent);
            parentNodeId = parent.getParentNodeId();
            accessibilityViewId = AccessibilityNodeInfo.getAccessibilityViewId(
                    parentNodeId);
        } else {
            prefetchPredecessorsOfRealNode(providerHost, outInfos);
            return;
        }
    }
}
 
private void prefetchSiblingsOfVirtualNode(AccessibilityNodeInfo current, View providerHost,
        AccessibilityNodeProvider provider, List<AccessibilityNodeInfo> outInfos) {
    final long parentNodeId = current.getParentNodeId();
    final int parentAccessibilityViewId =
        AccessibilityNodeInfo.getAccessibilityViewId(parentNodeId);
    final int parentVirtualDescendantId =
        AccessibilityNodeInfo.getVirtualDescendantId(parentNodeId);
    if (parentVirtualDescendantId != AccessibilityNodeProvider.HOST_VIEW_ID
            || parentAccessibilityViewId == providerHost.getAccessibilityViewId()) {
        final AccessibilityNodeInfo parent =
                provider.createAccessibilityNodeInfo(parentVirtualDescendantId);
        if (parent != null) {
            final int childCount = parent.getChildCount();
            for (int i = 0; i < childCount; i++) {
                if (outInfos.size() >= MAX_ACCESSIBILITY_NODE_INFO_BATCH_SIZE) {
                    return;
                }
                final long childNodeId = parent.getChildId(i);
                if (childNodeId != current.getSourceNodeId()) {
                    final int childVirtualDescendantId =
                        AccessibilityNodeInfo.getVirtualDescendantId(childNodeId);
                    AccessibilityNodeInfo child = provider.createAccessibilityNodeInfo(
                            childVirtualDescendantId);
                    if (child != null) {
                        outInfos.add(child);
                    }
                }
            }
        }
    } else {
        prefetchSiblingsOfRealNode(providerHost, outInfos);
    }
}