Java Code Examples for android.view.accessibility.AccessibilityNodeInfo#getBoundsInScreen()
The following examples show how to use
android.view.accessibility.AccessibilityNodeInfo#getBoundsInScreen() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: MouseAccessibilityService.java From android-mouse-cursor with MIT License | 6 votes |
private static AccessibilityNodeInfo findSmallestNodeAtPoint(AccessibilityNodeInfo sourceNode, int x, int y) { Rect bounds = new Rect(); sourceNode.getBoundsInScreen(bounds); if (!bounds.contains(x, y)) { return null; } for (int i=0; i<sourceNode.getChildCount(); i++) { AccessibilityNodeInfo nearestSmaller = findSmallestNodeAtPoint(sourceNode.getChild(i), x, y); if (nearestSmaller != null) { return nearestSmaller; } } return sourceNode; }
Example 2
Source File: MouseAccessibilityService.java From android-mouse-cursor with MIT License | 6 votes |
private static void logNodeHierachy(AccessibilityNodeInfo nodeInfo, int depth) { Rect bounds = new Rect(); nodeInfo.getBoundsInScreen(bounds); StringBuilder sb = new StringBuilder(); if (depth > 0) { for (int i=0; i<depth; i++) { sb.append(" "); } sb.append("\u2514 "); } sb.append(nodeInfo.getClassName()); sb.append(" (" + nodeInfo.getChildCount() + ")"); sb.append(" " + bounds.toString()); if (nodeInfo.getText() != null) { sb.append(" - \"" + nodeInfo.getText() + "\""); } Log.v(TAG, sb.toString()); for (int i=0; i<nodeInfo.getChildCount(); i++) { AccessibilityNodeInfo childNode = nodeInfo.getChild(i); if (childNode != null) { logNodeHierachy(childNode, depth + 1); } } }
Example 3
Source File: AccessibilityNodeInfoHelper.java From za-Farmer with MIT License | 6 votes |
/** * Returns the node's bounds clipped to the size of the display * * @param node * @param width pixel width of the display * @param height pixel height of the display * @return null if node is null, else a Rect containing visible bounds */ static Rect getVisibleBoundsInScreen(AccessibilityNodeInfo node, int width, int height) { if (node == null) { return null; } // targeted node's bounds Rect nodeRect = new Rect(); node.getBoundsInScreen(nodeRect); Rect displayRect = new Rect(); displayRect.top = 0; displayRect.left = 0; displayRect.right = width; displayRect.bottom = height; nodeRect.intersect(displayRect); return nodeRect; }
Example 4
Source File: MyAccessibilityNodeInfoSuite.java From PUMA with Apache License 2.0 | 6 votes |
public static boolean compareAccessibilityNodeInfo(AccessibilityNodeInfo n1, AccessibilityNodeInfo n2) { if (n1 != null && n2 != null) { String c1 = n1.getClassName().toString(); String c2 = n2.getClassName().toString(); Rect b1 = new Rect(); Rect b2 = new Rect(); n1.getBoundsInScreen(b1); n2.getBoundsInScreen(b2); int a1 = b1.height() * b1.width(); b1.intersect(b2); int a2 = b1.height() * b1.width(); return c1.equals(c2) && (a2 > ((int) (a1 * 0.95))); } else { return false; } }
Example 5
Source File: MyAccessibilityNodeInfoHelper.java From PUMA with Apache License 2.0 | 6 votes |
/** * Returns the node's bounds clipped to the size of the display * * @param node * @param width pixel width of the display * @param height pixel height of the display * @return null if node is null, else a Rect containing visible bounds */ public static Rect getVisibleBoundsInScreen(AccessibilityNodeInfo node, int width, int height) { if (node == null) { return null; } // targeted node's bounds Rect nodeRect = new Rect(); node.getBoundsInScreen(nodeRect); Rect displayRect = new Rect(); displayRect.top = 0; displayRect.left = 0; displayRect.right = width; displayRect.bottom = height; nodeRect.intersect(displayRect); return nodeRect; }
Example 6
Source File: AccessibilityNodeInfoDumper.java From android-uiconductor with Apache License 2.0 | 6 votes |
/** * Returns the node's bounds clipped to the size of the display * * @param width pixel width of the display * @param height pixel height of the display * @return (-1, -1, -1, -1) if node is null, else a Rect containing visible bounds */ private static Rect getVisibleBoundsInScreen(AccessibilityNodeInfo node, int width, int height) { Rect nodeRect = new Rect(-1, -1, -1, -1); if (node == null) { return nodeRect; } // targeted node's bounds node.getBoundsInScreen(nodeRect); Rect displayRect = new Rect(); displayRect.top = 0; displayRect.left = 0; displayRect.right = width; displayRect.bottom = height; nodeRect.intersect(displayRect); return nodeRect; }
Example 7
Source File: Tree.java From oversec with GNU General Public License v3.0 | 6 votes |
public void refresh(AccessibilityNodeInfo node) { if (sealed) { throw new IllegalArgumentException("sealed! " + super.toString()); } mFocused = node.isFocused(); node.getBoundsInScreen(mBoundsInScreen); node.getBoundsInParent(mBoundsInParent); mBoundsInScreen.offset(0, -OverlayDecryptView.SCREEN_OFFSET_Y); mText = AccessibilityNodeInfoUtils.getNodeText(node); mTextString = mText == null ? null : mText.toString(); mIsEncoded = mText == null ? false : CryptoHandlerFacade.Companion.isEncoded(mCtx, mTextString); if (mIsEncoded) { mIsTextView = true; } mIsEditableTextNode = (node.isEditable() && node.isEnabled() && mIsEditText && !node.isPassword()); }
Example 8
Source File: LaunchApp.java From PUMA with Apache License 2.0 | 6 votes |
private void traverse_node_recursive(AccessibilityNodeInfo node, int level) { if (node == null) { return; } int child_cnt = node.getChildCount(); StringBuilder sb = new StringBuilder(); if (child_cnt > 0) { for (int i = 0; i < child_cnt; i++) { traverse_node_recursive(node.getChild(i), level + 1); } } else { Rect bounds = new Rect(); node.getBoundsInScreen(bounds); for (int i = 0; i < level; i++) { sb.append(" "); } sb.append(node.getText()); sb.append(bounds.toShortString()); Util.log(sb); } }
Example 9
Source File: AccessibilityEventProcessor.java From PUMA with Apache License 2.0 | 6 votes |
private static void dump(AccessibilityEvent event) { AccessibilityNodeInfo source = event.getSource(); if (source == null) { Util.err("event source: NULL"); return; } Rect bounds = new Rect(); source.getBoundsInScreen(bounds); int cnt = -1; if (source.getClassName().equals(ListView.class.getCanonicalName())) { cnt = event.getItemCount(); int from = event.getFromIndex(); int to = event.getToIndex(); Util.log(event.getEventTime() + ": " + AccessibilityEvent.eventTypeToString(event.getEventType()) + "," + source.getClassName() + "," + cnt + ", [" + from + " --> " + to + "], " + bounds.toShortString()); } else { Util.log(event.getEventTime() + ": " + AccessibilityEvent.eventTypeToString(event.getEventType()) + "," + source.getClassName() + "," + bounds.toShortString()); } }
Example 10
Source File: AccessibilityNodeInfoDumper.java From android-uiautomator-server with MIT License | 6 votes |
/** * Returns the node's bounds clipped to the size of the display * * @param width pixel width of the display * @param height pixel height of the display * @return null if node is null, else a Rect containing visible bounds */ static Rect getVisibleBoundsInScreen(AccessibilityNodeInfo node, int width, int height) { if (node == null) { return null; } // targeted node's bounds Rect nodeRect = new Rect(); node.getBoundsInScreen(nodeRect); Rect displayRect = new Rect(); displayRect.top = 0; displayRect.left = 0; displayRect.right = width; displayRect.bottom = height; nodeRect.intersect(displayRect); return nodeRect; }
Example 11
Source File: ViewDumper.java From fuckView with GNU Affero General Public License v3.0 | 6 votes |
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) private synchronized static ViewItem nodeInfoToViewItem(@Nullable AccessibilityNodeInfo node, int depth) { ViewItem viewItem = new ViewItem(); viewItem.id = id++; viewItem.level = depth; ViewItem topLevelNode = getLastTopLevelNode(itemList, depth - 1); viewItem.parentId = (topLevelNode == null ? NO_PARENT : topLevelNode.id); if (node == null) { return viewItem; } Rect rect = new Rect(); node.getBoundsInScreen(rect); viewItem.bounds = new Point(rect.left, rect.top); viewItem.wh = new Point(rect.width(), rect.height()); viewItem.simpleClassName = node.getClassName().toString(); if (viewItem.simpleClassName.contains(".")) { viewItem.simpleClassName = viewItem.simpleClassName.substring(viewItem.simpleClassName.lastIndexOf(".")); } return viewItem; }
Example 12
Source File: UiObject2.java From JsDroidCmd with Mozilla Public License 2.0 | 5 votes |
/** Returns the visible bounds of {@code node} in screen coordinates. */ private Rect getVisibleBounds(AccessibilityNodeInfo node) { // Get the object bounds in screen coordinates Rect ret = new Rect(); node.getBoundsInScreen(ret); // Trim any portion of the bounds that are not on the screen Rect screen = new Rect(0, 0, mDevice.getDisplayWidth(), mDevice.getDisplayHeight()); ret.intersect(screen); // Find the visible bounds of our first scrollable ancestor AccessibilityNodeInfo ancestor = null; for (ancestor = node.getParent(); ancestor != null; ancestor = ancestor .getParent()) { // If this ancestor is scrollable if (ancestor.isScrollable()) { // Trim any portion of the bounds that are hidden by the // non-visible portion of our // ancestor Rect ancestorRect = getVisibleBounds(ancestor); ret.intersect(ancestorRect); break; } } return ret; }
Example 13
Source File: AccessibilityUtils.java From PrivacyStreams with Apache License 2.0 | 5 votes |
public static SerializedAccessibilityNodeInfo serialize(AccessibilityNodeInfo node){ SerializedAccessibilityNodeInfo serializedNode = new SerializedAccessibilityNodeInfo(); Rect boundsInScreen = new Rect(), boundsInParent = new Rect(); if(node == null){ return null; } if(node.getClassName() != null) serializedNode.className = node.getClassName().toString(); node.getBoundsInScreen(boundsInScreen); node.getBoundsInParent(boundsInParent); serializedNode.boundsInScreen = boundsInScreen.flattenToString(); serializedNode.boundsInParent = boundsInParent.flattenToString(); if(node.getContentDescription() != null) serializedNode.contentDescription = node.getContentDescription().toString(); if(node.getText() != null){ serializedNode.text = node.getText().toString(); } if(node.getViewIdResourceName() != null) serializedNode.viewId = node.getViewIdResourceName(); int childCount = node.getChildCount(); for(int i = 0; i < childCount; i ++){ if(node.getChild(i) != null){ serializedNode.children.add(serialize(node.getChild(i))); } } return serializedNode; }
Example 14
Source File: AccessibilityUtils.java From PrivacyStreams with Apache License 2.0 | 5 votes |
/** * * @param nodeInfo * @return */ public static boolean isIncomingMessage(AccessibilityNodeInfo nodeInfo, Context context) { Rect rect = new Rect(); nodeInfo.getBoundsInScreen(rect); return rect.left < UIUtils.getScreenHeight(context) - rect.right && nodeInfo.getText() != null; }
Example 15
Source File: BrowserAccessibilityManager.java From 365browser with Apache License 2.0 | 5 votes |
private AccessibilityNodeInfo createNodeForHost(int rootId) { // Since we don't want the parent to be focusable, but we can't remove // actions from a node, copy over the necessary fields. final AccessibilityNodeInfo result = AccessibilityNodeInfo.obtain(mView); final AccessibilityNodeInfo source = AccessibilityNodeInfo.obtain(mView); mView.onInitializeAccessibilityNodeInfo(source); // Copy over parent and screen bounds. Rect rect = new Rect(); source.getBoundsInParent(rect); result.setBoundsInParent(rect); source.getBoundsInScreen(rect); result.setBoundsInScreen(rect); // Set up the parent view, if applicable. final ViewParent parent = mView.getParentForAccessibility(); if (parent instanceof View) { result.setParent((View) parent); } // Populate the minimum required fields. result.setVisibleToUser(source.isVisibleToUser()); result.setEnabled(source.isEnabled()); result.setPackageName(source.getPackageName()); result.setClassName(source.getClassName()); // Add the Chrome root node. if (isFrameInfoInitialized()) { result.addChild(mView, rootId); } return result; }
Example 16
Source File: UiObject.java From JsDroidCmd with Mozilla Public License 2.0 | 5 votes |
/** * Returns the view's <code>bounds</code> property. See {@link #getVisibleBounds()} * * @return Rect * @throws UiObjectNotFoundException * @since API Level 16 */ public Rect getBounds() throws UiObjectNotFoundException { Tracer.trace(); AccessibilityNodeInfo node = findAccessibilityNodeInfo(mConfig.getWaitForSelectorTimeout()); if(node == null) { throw new UiObjectNotFoundException(mUiSelector.toString()); } Rect nodeRect = new Rect(); node.getBoundsInScreen(nodeRect); return nodeRect; }
Example 17
Source File: LaunchApp.java From PUMA with Apache License 2.0 | 5 votes |
private void compute_feature_vector(Hashtable<String, FeatureValuePair> map, AccessibilityNodeInfo node, int level) { int child_cnt = node.getChildCount(); if (child_cnt > 0) { for (int i = 0; i < child_cnt; i++) { AccessibilityNodeInfo child = node.getChild(i); compute_feature_vector(map, child, level + 1); } } else { String key = node.getClassName().toString() + "@" + level; FeatureValuePair value; int size = 0; CharSequence text = node.getText(); if (text != null) { size = text.toString().length(); } if (node.getClassName().toString().equals(ImageView.class.getCanonicalName())) { Rect bounds = new Rect(); node.getBoundsInScreen(bounds); String timestamp = new SimpleDateFormat("MM-dd'T'HH-mm-ss-SSS").format(new Date()); size = get_imageview_size("/data/local/tmp/local/tmp/haos.png", bounds, "/data/local/tmp/local/tmp/" + key + "_" + timestamp + ".png"); } else { // Util.log(node.getClassName() + " NOT " + ImageView.class.getCanonicalName()); } value = map.containsKey(key) ? map.get(key) : new FeatureValuePair(0, 0); value.count++; value.size += size; map.put(key, value); // Util.log("Leaf: " + key + ", " + size); } }
Example 18
Source File: UiObject.java From za-Farmer with MIT License | 5 votes |
/** * Returns the view's <code>bounds</code> property. See {@link #getVisibleBounds()} * * @return Rect * @throws UiObjectNotFoundException * @since API Level 16 */ public Rect getBounds() throws UiObjectNotFoundException { Tracer.trace(); AccessibilityNodeInfo node = findAccessibilityNodeInfo(mConfig.getWaitForSelectorTimeout()); if(node == null) { throw new UiObjectNotFoundException(mUiSelector.toString()); } Rect nodeRect = new Rect(); node.getBoundsInScreen(nodeRect); return nodeRect; }
Example 19
Source File: ViewHierarchyElementAndroid.java From Accessibility-Test-Framework-for-Android with Apache License 2.0 | 4 votes |
Builder(int id, @Nullable ViewHierarchyElementAndroid parent, AccessibilityNodeInfo fromInfo) { // Bookkeeping this.id = id; this.parentId = (parent != null) ? parent.getId() : null; // API 18+ properties this.resourceName = AT_18 ? fromInfo.getViewIdResourceName() : null; this.editable = AT_18 ? fromInfo.isEditable() : null; // API 16+ properties this.visibleToUser = AT_16 ? fromInfo.isVisibleToUser() : null; // API 21+ properties if (AT_21) { ImmutableList.Builder<ViewHierarchyActionAndroid> actionBuilder = new ImmutableList.Builder<>(); actionBuilder.addAll( Lists.transform( fromInfo.getActionList(), action -> ViewHierarchyActionAndroid.newBuilder(action).build())); this.actionList = actionBuilder.build(); } // API 24+ properties this.drawingOrder = AT_24 ? fromInfo.getDrawingOrder() : null; // API 29+ properties this.hasTouchDelegate = AT_29 ? (fromInfo.getTouchDelegateInfo() != null) : null; // Base properties this.className = fromInfo.getClassName(); this.packageName = fromInfo.getPackageName(); this.accessibilityClassName = fromInfo.getClassName(); this.contentDescription = SpannableStringAndroid.valueOf(fromInfo.getContentDescription()); this.text = SpannableStringAndroid.valueOf(fromInfo.getText()); this.importantForAccessibility = true; this.clickable = fromInfo.isClickable(); this.longClickable = fromInfo.isLongClickable(); this.focusable = fromInfo.isFocusable(); this.scrollable = fromInfo.isScrollable(); this.canScrollForward = ((fromInfo.getActions() & AccessibilityNodeInfo.ACTION_SCROLL_FORWARD) != 0); this.canScrollBackward = ((fromInfo.getActions() & AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD) != 0); this.checkable = fromInfo.isCheckable(); this.checked = fromInfo.isChecked(); this.touchDelegateBounds = new ArrayList<>(); // Populated after construction android.graphics.Rect tempRect = new android.graphics.Rect(); fromInfo.getBoundsInScreen(tempRect); this.boundsInScreen = new Rect(tempRect.left, tempRect.top, tempRect.right, tempRect.bottom); this.nonclippedHeight = null; this.nonclippedWidth = null; this.textSize = null; this.textColor = null; this.backgroundDrawableColor = null; this.typefaceStyle = null; this.enabled = fromInfo.isEnabled(); }
Example 20
Source File: UiAutomationElement.java From UIAutomatorWD with MIT License | 4 votes |
private Rect getBounds(AccessibilityNodeInfo node) { Rect rect = new Rect(); node.getBoundsInScreen(rect); return rect; }