Search in sources :

Example 41 with AccessibilityNodeInfo

use of android.view.accessibility.AccessibilityNodeInfo in project android_frameworks_base by ResurrectionRemix.

the class AccessibilityInteractionController method adjustIsVisibleToUserIfNeeded.

private void adjustIsVisibleToUserIfNeeded(List<AccessibilityNodeInfo> infos, Region interactiveRegion) {
    if (interactiveRegion == null || infos == null) {
        return;
    }
    final int infoCount = infos.size();
    for (int i = 0; i < infoCount; i++) {
        AccessibilityNodeInfo info = infos.get(i);
        adjustIsVisibleToUserIfNeeded(info, interactiveRegion);
    }
}
Also used : AccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo) Point(android.graphics.Point)

Example 42 with AccessibilityNodeInfo

use of android.view.accessibility.AccessibilityNodeInfo in project android_frameworks_base by ResurrectionRemix.

the class ViewRootImpl method requestSendAccessibilityEvent.

@Override
public boolean requestSendAccessibilityEvent(View child, AccessibilityEvent event) {
    if (mView == null || mStopped || mPausedForTransition) {
        return false;
    }
    // Intercept accessibility focus events fired by virtual nodes to keep
    // track of accessibility focus position in such nodes.
    final int eventType = event.getEventType();
    switch(eventType) {
        case AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED:
            {
                final long sourceNodeId = event.getSourceNodeId();
                final int accessibilityViewId = AccessibilityNodeInfo.getAccessibilityViewId(sourceNodeId);
                View source = mView.findViewByAccessibilityId(accessibilityViewId);
                if (source != null) {
                    AccessibilityNodeProvider provider = source.getAccessibilityNodeProvider();
                    if (provider != null) {
                        final int virtualNodeId = AccessibilityNodeInfo.getVirtualDescendantId(sourceNodeId);
                        final AccessibilityNodeInfo node;
                        if (virtualNodeId == AccessibilityNodeInfo.UNDEFINED_ITEM_ID) {
                            node = provider.createAccessibilityNodeInfo(AccessibilityNodeProvider.HOST_VIEW_ID);
                        } else {
                            node = provider.createAccessibilityNodeInfo(virtualNodeId);
                        }
                        setAccessibilityFocus(source, node);
                    }
                }
            }
            break;
        case AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED:
            {
                final long sourceNodeId = event.getSourceNodeId();
                final int accessibilityViewId = AccessibilityNodeInfo.getAccessibilityViewId(sourceNodeId);
                View source = mView.findViewByAccessibilityId(accessibilityViewId);
                if (source != null) {
                    AccessibilityNodeProvider provider = source.getAccessibilityNodeProvider();
                    if (provider != null) {
                        setAccessibilityFocus(null, null);
                    }
                }
            }
            break;
        case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED:
            {
                handleWindowContentChangedEvent(event);
            }
            break;
    }
    mAccessibilityManager.sendAccessibilityEvent(event);
    return true;
}
Also used : AccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo) AccessibilityNodeProvider(android.view.accessibility.AccessibilityNodeProvider) Point(android.graphics.Point)

Example 43 with AccessibilityNodeInfo

use of android.view.accessibility.AccessibilityNodeInfo in project android_frameworks_base by ResurrectionRemix.

the class View method populateVirtualStructure.

private void populateVirtualStructure(ViewStructure structure, AccessibilityNodeProvider provider, AccessibilityNodeInfo info) {
    structure.setId(AccessibilityNodeInfo.getVirtualDescendantId(info.getSourceNodeId()), null, null, null);
    Rect rect = structure.getTempRect();
    info.getBoundsInParent(rect);
    structure.setDimens(rect.left, rect.top, 0, 0, rect.width(), rect.height());
    structure.setVisibility(VISIBLE);
    structure.setEnabled(info.isEnabled());
    if (info.isClickable()) {
        structure.setClickable(true);
    }
    if (info.isFocusable()) {
        structure.setFocusable(true);
    }
    if (info.isFocused()) {
        structure.setFocused(true);
    }
    if (info.isAccessibilityFocused()) {
        structure.setAccessibilityFocused(true);
    }
    if (info.isSelected()) {
        structure.setSelected(true);
    }
    if (info.isLongClickable()) {
        structure.setLongClickable(true);
    }
    if (info.isCheckable()) {
        structure.setCheckable(true);
        if (info.isChecked()) {
            structure.setChecked(true);
        }
    }
    if (info.isContextClickable()) {
        structure.setContextClickable(true);
    }
    CharSequence cname = info.getClassName();
    structure.setClassName(cname != null ? cname.toString() : null);
    structure.setContentDescription(info.getContentDescription());
    if (info.getText() != null || info.getError() != null) {
        structure.setText(info.getText(), info.getTextSelectionStart(), info.getTextSelectionEnd());
    }
    final int NCHILDREN = info.getChildCount();
    if (NCHILDREN > 0) {
        structure.setChildCount(NCHILDREN);
        for (int i = 0; i < NCHILDREN; i++) {
            AccessibilityNodeInfo cinfo = provider.createAccessibilityNodeInfo(AccessibilityNodeInfo.getVirtualDescendantId(info.getChildId(i)));
            ViewStructure child = structure.newChild(i);
            populateVirtualStructure(child, provider, cinfo);
            cinfo.recycle();
        }
    }
}
Also used : Rect(android.graphics.Rect) AccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo) Paint(android.graphics.Paint) Point(android.graphics.Point)

Example 44 with AccessibilityNodeInfo

use of android.view.accessibility.AccessibilityNodeInfo in project android_frameworks_base by ResurrectionRemix.

the class View method onProvideVirtualStructure.

/**
     * Called when assist structure is being retrieved from a view as part of
     * {@link android.app.Activity#onProvideAssistData Activity.onProvideAssistData} to
     * generate additional virtual structure under this view.  The defaullt implementation
     * uses {@link #getAccessibilityNodeProvider()} to try to generate this from the
     * view's virtual accessibility nodes, if any.  You can override this for a more
     * optimal implementation providing this data.
     */
public void onProvideVirtualStructure(ViewStructure structure) {
    AccessibilityNodeProvider provider = getAccessibilityNodeProvider();
    if (provider != null) {
        AccessibilityNodeInfo info = createAccessibilityNodeInfo();
        structure.setChildCount(1);
        ViewStructure root = structure.newChild(0);
        populateVirtualStructure(root, provider, info);
        info.recycle();
    }
}
Also used : AccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo) AccessibilityNodeProvider(android.view.accessibility.AccessibilityNodeProvider)

Example 45 with AccessibilityNodeInfo

use of android.view.accessibility.AccessibilityNodeInfo in project android_frameworks_base by ResurrectionRemix.

the class AccessibilityNodeInfoDumper method dumpNodeRec.

private static void dumpNodeRec(AccessibilityNodeInfo node, XmlSerializer serializer, int index, int width, int height) throws IOException {
    serializer.startTag("", "node");
    if (!nafExcludedClass(node) && !nafCheck(node))
        serializer.attribute("", "NAF", Boolean.toString(true));
    serializer.attribute("", "index", Integer.toString(index));
    serializer.attribute("", "text", safeCharSeqToString(node.getText()));
    serializer.attribute("", "resource-id", safeCharSeqToString(node.getViewIdResourceName()));
    serializer.attribute("", "class", safeCharSeqToString(node.getClassName()));
    serializer.attribute("", "package", safeCharSeqToString(node.getPackageName()));
    serializer.attribute("", "content-desc", safeCharSeqToString(node.getContentDescription()));
    serializer.attribute("", "checkable", Boolean.toString(node.isCheckable()));
    serializer.attribute("", "checked", Boolean.toString(node.isChecked()));
    serializer.attribute("", "clickable", Boolean.toString(node.isClickable()));
    serializer.attribute("", "enabled", Boolean.toString(node.isEnabled()));
    serializer.attribute("", "focusable", Boolean.toString(node.isFocusable()));
    serializer.attribute("", "focused", Boolean.toString(node.isFocused()));
    serializer.attribute("", "scrollable", Boolean.toString(node.isScrollable()));
    serializer.attribute("", "long-clickable", Boolean.toString(node.isLongClickable()));
    serializer.attribute("", "password", Boolean.toString(node.isPassword()));
    serializer.attribute("", "selected", Boolean.toString(node.isSelected()));
    serializer.attribute("", "bounds", AccessibilityNodeInfoHelper.getVisibleBoundsInScreen(node, width, height).toShortString());
    int count = node.getChildCount();
    for (int i = 0; i < count; i++) {
        AccessibilityNodeInfo child = node.getChild(i);
        if (child != null) {
            if (child.isVisibleToUser()) {
                dumpNodeRec(child, serializer, i, width, height);
                child.recycle();
            } else {
                Log.i(LOGTAG, String.format("Skipping invisible child: %s", child.toString()));
            }
        } else {
            Log.i(LOGTAG, String.format("Null child %d/%d, parent: %s", i, count, node.toString()));
        }
    }
    serializer.endTag("", "node");
}
Also used : AccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo)

Aggregations

AccessibilityNodeInfo (android.view.accessibility.AccessibilityNodeInfo)310 Point (android.graphics.Point)84 Rect (android.graphics.Rect)84 AccessibilityNodeProvider (android.view.accessibility.AccessibilityNodeProvider)45 RemoteException (android.os.RemoteException)30 IAccessibilityInteractionConnectionCallback (android.view.accessibility.IAccessibilityInteractionConnectionCallback)30 SomeArgs (com.android.internal.os.SomeArgs)30 Region (android.graphics.Region)25 Paint (android.graphics.Paint)19 View (android.view.View)12 ViewRootImpl (android.view.ViewRootImpl)11 RemoteView (android.widget.RemoteViews.RemoteView)11 Display (android.view.Display)10 File (java.io.File)10 LinkedList (java.util.LinkedList)7 ArrayList (java.util.ArrayList)6 List (java.util.List)6 UiAutomation (android.app.UiAutomation)5 InputFilter (android.text.InputFilter)5 TextPaint (android.text.TextPaint)5