release 2.0.13 Beta2

This commit is contained in:
hyb1996
2017-07-07 10:56:33 +08:00
parent 775d6eca81
commit 8b0fe61c87
16 changed files with 156 additions and 31 deletions

View File

@@ -7,6 +7,7 @@ import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
import android.view.accessibility.AccessibilityNodeInfo;
import com.stardust.util.Consumer;
import com.stardust.util.Func1;
import java.util.ArrayList;
import java.util.Collections;
@@ -203,6 +204,15 @@ public class UiObjectCollection {
return this;
}
public UiObjectCollection filter(Func1<UiObject, Boolean> func1) {
List<UiObject> list = new ArrayList<>();
for (UiObject uiObject : mNodes) {
if (func1.call(uiObject))
list.add(uiObject);
}
return of(list);
}
public UiObjectCollection find(UiGlobalSelector selector) {
List<UiObject> list = new ArrayList<>();
for (UiObject object : mNodes) {

View File

@@ -8,6 +8,7 @@ import android.view.KeyEvent;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.TextView;
import java.util.HashSet;
import java.util.Map;
@@ -16,6 +17,9 @@ import java.util.SortedMap;
import java.util.TreeMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CopyOnWriteArraySet;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.ReentrantLock;
/**
* Created by Stardust on 2017/5/2.
@@ -29,7 +33,8 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
private static final String TAG = "AccessibilityService";
private static final SortedMap<Integer, AccessibilityDelegate> mDelegates = new TreeMap<>();
private static final Object LOCK = new Object();
private static final ReentrantLock LOCK = new ReentrantLock();
private static final Condition ENABLED = LOCK.newCondition();
private static AccessibilityService instance;
private static boolean containsAllEventTypes = false;
private static final Set<Integer> eventTypes = new HashSet<>();
@@ -43,7 +48,7 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
eventTypes.addAll(set);
}
public static boolean isEnable(Context context) {
public static boolean isEnabled(Context context) {
return AccessibilityServiceUtils.isAccessibilityServiceEnabled(context, AccessibilityService.class);
}
@@ -54,7 +59,6 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
@Override
public void onAccessibilityEvent(final AccessibilityEvent event) {
Log.v(TAG, "onAccessibilityEvent: " + event);
Log.v(TAG, "getRootInActiveWindow: " + super.getRootInActiveWindow());
if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED
|| event.getEventType() == AccessibilityEvent.TYPE_VIEW_HOVER_ENTER
|| event.getEventType() == AccessibilityEvent.TYPE_VIEW_HOVER_EXIT) {
@@ -108,9 +112,9 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
Log.v(TAG, "onServiceConnected: " + getServiceInfo().toString());
instance = this;
super.onServiceConnected();
synchronized (LOCK) {
LOCK.notifyAll();
}
LOCK.lock();
ENABLED.signalAll();
LOCK.unlock();
// FIXME: 2017/2/12 有时在无障碍中开启服务后这里不会调用服务也不会运行安卓的BUG???
}
@@ -123,12 +127,13 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
}
public static void waitForEnabled(long timeOut) {
synchronized (LOCK) {
try {
LOCK.wait(timeOut);
} catch (InterruptedException e) {
e.printStackTrace();
}
LOCK.lock();
try {
ENABLED.await(timeOut, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
LOCK.unlock();
}
}