package com.canking.xiaomipj;
import android.accessibilityservice.AccessibilityService;
import android.util.Log;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import com.canking.xiaomipj.XLogger.XLogger;
import java.util.List;
import java.util.logging.Logger;
/**
* Created by changxing on 16-6-2.
*/
public class BaseAccessService extends AccessibilityService {
@Override
protected void onServiceConnected() {
super.onServiceConnected();
}
@Override
public void onInterrupt() {
}
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
}
protected boolean clickByText(AccessibilityNodeInfo nodeInfo, String str) {
if (null != nodeInfo) {
List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByText(str);
if (null != list && list.size() > 0) {
AccessibilityNodeInfo node = list.get(list.size() - 1);
if (node.isClickable()) {
return node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
} else {
AccessibilityNodeInfo parentNode = node;
for (int i = 0; i < 5; i++) {
if (null != parentNode) {
parentNode = parentNode.getParent();
if (null != parentNode && parentNode.isClickable()) {
return parentNode.performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
}
}
}
}
}
return false;
}
protected AccessibilityNodeInfo findOpenButton(AccessibilityNodeInfo node) {
if (node == null)
return null;
//非layout元素
if (node.getChildCount() == 0) {
if ("android.widget.Button".equals(node.getClassName())) {
XLogger.t("button").d("find btn ~~~~~~~~~~~~~~~");
return node;
} else
return null;
}
//layout元素,遍历找button
for (int i = 0; i < node.getChildCount(); i++) {
AccessibilityNodeInfo button = findOpenButton(node.getChild(i));
if (button != null)
return button;
}
return null;
}
}