List of usage examples for android.support.v4.view.accessibility AccessibilityNodeInfoCompat AccessibilityNodeInfoCompat
public AccessibilityNodeInfoCompat(Object info)
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); }