diff --git a/app/src/main/assets/sample/QQ与微信/循环发送消息.js b/app/src/main/assets/sample/QQ与微信/循环发送消息.js index 0dadf495..51285167 100644 --- a/app/src/main/assets/sample/QQ与微信/循环发送消息.js +++ b/app/src/main/assets/sample/QQ与微信/循环发送消息.js @@ -5,6 +5,10 @@ toast("请打开一个聊天窗口"); sleep(500); while(true){ + if(currentPackage() == "com.stardust.scriptdroid"){ + sleep(300); + continue; + } setText("我喜欢你"); click("发送"); } \ No newline at end of file diff --git a/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java b/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java index cae2104b..0f10c6f2 100644 --- a/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java +++ b/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java @@ -6,7 +6,6 @@ import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.annotation.RequiresApi; -import android.view.KeyEvent; import com.stardust.app.OnActivityResultDelegate; import com.stardust.app.SimpleActivityLifecycleCallbacks; @@ -21,8 +20,6 @@ import com.stardust.autojs.runtime.api.AbstractShell; import com.stardust.autojs.runtime.api.AppUtils; import com.stardust.autojs.runtime.api.Console; import com.stardust.autojs.runtime.api.image.ScreenCaptureRequester; -import com.stardust.automator.AccessibilityEventCommandHost; -import com.stardust.automator.simple_action.SimpleActionPerformHost; import com.stardust.scriptdroid.App; import com.stardust.scriptdroid.Pref; import com.stardust.scriptdroid.R; @@ -57,8 +54,6 @@ public class AutoJs implements AccessibilityBridge { instance = new AutoJs(context); } - private final AccessibilityEventCommandHost mAccessibilityEventCommandHost = new AccessibilityEventCommandHost(); - private final SimpleActionPerformHost mSimpleActionPerformHost = new SimpleActionPerformHost(); private final AccessibilityActionRecorder mAccessibilityActionRecorder = new AccessibilityActionRecorder(); private final LayoutInspector mLayoutInspector = new LayoutInspector(); private final ScriptEngineService mScriptEngineService; @@ -146,8 +141,6 @@ public class AutoJs implements AccessibilityBridge { private void addAccessibilityServiceDelegates() { AccessibilityService.addDelegate(100, mAccessibilityInfoProvider); AccessibilityService.addDelegate(300, mAccessibilityActionRecorder); - // AccessibilityService.addDelegate(400, mSimpleActionPerformHost); - //AccessibilityService.addDelegate(500, mAccessibilityEventCommandHost); } public AccessibilityActionRecorder getAccessibilityActionRecorder() { @@ -166,16 +159,6 @@ public class AutoJs implements AccessibilityBridge { return mLayoutInspector; } - @Override - public AccessibilityEventCommandHost getCommandHost() { - return mAccessibilityEventCommandHost; - } - - @Override - public SimpleActionPerformHost getActionPerformHost() { - return mSimpleActionPerformHost; - } - @Nullable @Override public AccessibilityService getService() { diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/settings/AboutActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/settings/AboutActivity.java index ada915b5..87ec1f18 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/settings/AboutActivity.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/settings/AboutActivity.java @@ -110,32 +110,6 @@ public class AboutActivity extends BaseActivity { .show(); } - private void uiObjectCreateTest() { - new Thread(new Runnable() { - @Override - public void run() { - int i = 0; - while (true) { - AccessibilityNodeInfo root = AccessibilityService.getInstance().getRootInActiveWindow(); - if (root != null) { - UiObject uiObject = UiObject.createRoot(root); - UiObject child = uiObject.child(0); - if (i % 1000 == 0) { - Log.v(TAG, String.valueOf(i)); - Log.v(TAG, Runtime.getRuntime().totalMemory() + "/" + Runtime.getRuntime().maxMemory()); - if (child != null) - Log.v(TAG, String.valueOf(child.getChildCount())); - } - if (child != null) - child.recycle(); - i++; - } - } - } - }).start(); - - } - private void crashTest() { new ThemeColorMaterialDialogBuilder(this) .title("Crash Test") diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/AccessibilityBridge.java b/autojs/src/main/java/com/stardust/autojs/runtime/AccessibilityBridge.java index a35301e5..444d4d65 100644 --- a/autojs/src/main/java/com/stardust/autojs/runtime/AccessibilityBridge.java +++ b/autojs/src/main/java/com/stardust/autojs/runtime/AccessibilityBridge.java @@ -2,8 +2,6 @@ package com.stardust.autojs.runtime; import android.support.annotation.Nullable; -import com.stardust.automator.AccessibilityEventCommandHost; -import com.stardust.automator.simple_action.SimpleActionPerformHost; import com.stardust.view.accessibility.AccessibilityInfoProvider; import com.stardust.view.accessibility.AccessibilityService; @@ -17,9 +15,6 @@ public interface AccessibilityBridge { AccessibilityInfoProvider getInfoProvider(); - AccessibilityEventCommandHost getCommandHost(); - - SimpleActionPerformHost getActionPerformHost(); @Nullable AccessibilityService getService(); diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/api/UiSelector.java b/autojs/src/main/java/com/stardust/autojs/runtime/api/UiSelector.java index 5f7983da..0db8a4ed 100644 --- a/autojs/src/main/java/com/stardust/autojs/runtime/api/UiSelector.java +++ b/autojs/src/main/java/com/stardust/autojs/runtime/api/UiSelector.java @@ -5,13 +5,11 @@ import android.content.Intent; import android.net.Uri; import android.support.annotation.NonNull; import android.util.Log; -import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; import com.stardust.autojs.runtime.AccessibilityBridge; import com.stardust.autojs.runtime.ScriptInterface; import com.stardust.autojs.runtime.ScriptInterruptedException; -import com.stardust.automator.AccessibilityEventCommandHost; import com.stardust.automator.ActionArgument; import com.stardust.automator.UiGlobalSelector; import com.stardust.automator.UiObject; diff --git a/automator/src/main/java/com/stardust/automator/AccessibilityEventCommandHost.java b/automator/src/main/java/com/stardust/automator/AccessibilityEventCommandHost.java deleted file mode 100644 index 2d677af7..00000000 --- a/automator/src/main/java/com/stardust/automator/AccessibilityEventCommandHost.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.stardust.automator; - -import android.accessibilityservice.AccessibilityService; -import android.util.Log; -import android.view.accessibility.AccessibilityEvent; -import android.view.accessibility.AccessibilityNodeInfo; - -import com.stardust.view.accessibility.AccessibilityDelegate; - -import java.util.LinkedList; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.Executor; -import java.util.concurrent.Executors; - -/** - * Created by Stardust on 2017/3/9. - */ - -public class AccessibilityEventCommandHost implements AccessibilityDelegate { - - - public interface Command { - - void execute(AccessibilityService service, AccessibilityEvent event); - - boolean isValid(); - - void setValid(boolean valid); - } - - public abstract static class AbstractCommand implements Command { - - private boolean mValid; - - public synchronized boolean isValid() { - return mValid; - } - - public synchronized void setValid(boolean valid) { - mValid = valid; - } - - } - - private static final String TAG = "CommandHostDelegate"; - - public static final int RUN_MODE_SINGLE_THREAD = 0; - public static final int RUN_MODE_THREAD_POOL = 1; - public static final int RUN_MODE_NEW_THREAD_EVERY_TIME = 2; - - - private final Queue mCommands = new LinkedList<>(); - private Executor mExecutor = Executors.newSingleThreadExecutor(); - private int mRunMode = RUN_MODE_THREAD_POOL; - - @Override - public boolean onAccessibilityEvent(final AccessibilityService service, final AccessibilityEvent event) { - synchronized (mCommands) { - if (!mCommands.isEmpty()) { - Log.v(TAG, "will execute " + mCommands.size() + " commands"); - } - while (!mCommands.isEmpty()) { - final Command command = mCommands.poll(); - if (command.isValid()) { - executeCommand(command, service, event); - } - } - } - return false; - } - - @Override - public Set getEventTypes() { - return null; - } - - private void executeCommand(final Command command, final AccessibilityService service, final AccessibilityEvent event) { - final Runnable r = new Runnable() { - @Override - public void run() { - if (!command.isValid()) { - return; - } - Log.v(TAG, "executing " + command); - command.execute(service, event); - synchronized (command) { - command.notify(); - } - } - }; - if (mRunMode == RUN_MODE_SINGLE_THREAD) { - r.run(); - } else if (mRunMode == RUN_MODE_NEW_THREAD_EVERY_TIME) { - new Thread(r).start(); - } else { - mExecutor.execute(r); - } - } - - - public void executeAndWaitForEvent(Command command) { - synchronized (mCommands) { - mCommands.offer(command); - } - synchronized (command) { - try { - command.wait(); - } catch (InterruptedException e) { - command.setValid(false); - throw new RuntimeException(e); - } - } - } - - public void setRunMode(int mode) { - mRunMode = mode; - } - -} diff --git a/automator/src/main/java/com/stardust/automator/simple_action/SimpleActionPerformHost.java b/automator/src/main/java/com/stardust/automator/simple_action/SimpleActionPerformHost.java deleted file mode 100644 index 2b9a024e..00000000 --- a/automator/src/main/java/com/stardust/automator/simple_action/SimpleActionPerformHost.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.stardust.automator.simple_action; - -import android.accessibilityservice.AccessibilityService; -import android.util.Log; -import android.view.accessibility.AccessibilityEvent; -import android.view.accessibility.AccessibilityNodeInfo; - -import com.stardust.automator.UiObject; -import com.stardust.view.accessibility.AccessibilityDelegate; - -import java.util.Set; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.Executor; -import java.util.concurrent.Executors; - - -/** - * Created by Stardust on 2017/1/21. - */ - -public class SimpleActionPerformHost implements AccessibilityDelegate { - - private static final String TAG = "ActionPerformDelegate"; - - private BlockingQueue mSimpleAction = new ArrayBlockingQueue<>(1); - private Executor mExecutor = Executors.newSingleThreadExecutor(); - - public void addToActionQueueAndWait(SimpleAction simpleAction) throws InterruptedException { - mSimpleAction.put(simpleAction); - synchronized (simpleAction) { - simpleAction.wait(); - } - } - - @Override - public boolean onAccessibilityEvent(AccessibilityService service, AccessibilityEvent event) { - SimpleAction action = mSimpleAction.poll(); - if (action == null) - return false; - AccessibilityNodeInfo root = service.getRootInActiveWindow(); - if (root == null) { - return false; - } - performAction(root, action); - return false; - } - - @Override - public Set getEventTypes() { - return null; - } - - private void performAction(AccessibilityNodeInfo root, SimpleAction simpleAction) { - mExecutor.execute(new SimpleActionPerformRunnable(root, simpleAction)); - } - - - private synchronized void onActionPerformed(SimpleAction simpleAction) { - synchronized (simpleAction) { - simpleAction.notify(); - } - } - - - private class SimpleActionPerformRunnable implements Runnable { - - private final SimpleAction mSimpleAction; - private final AccessibilityNodeInfo mRoot; - - SimpleActionPerformRunnable(AccessibilityNodeInfo root, SimpleAction simpleAction) { - mRoot = root; - mSimpleAction = simpleAction; - } - - @Override - public void run() { - if (!mSimpleAction.isValid()) { - return; - } - Log.i(TAG, "perform simpleAction: " + mSimpleAction); - if (mSimpleAction.perform(UiObject.createRoot(mRoot))) { - mSimpleAction.setResult(true); - onActionPerformed(mSimpleAction); - } - } - } - -} - diff --git a/inrt/src/main/java/com/stardust/auojs/inrt/rt/AutoJs.java b/inrt/src/main/java/com/stardust/auojs/inrt/rt/AutoJs.java index e79e5ffb..55fc2bcd 100644 --- a/inrt/src/main/java/com/stardust/auojs/inrt/rt/AutoJs.java +++ b/inrt/src/main/java/com/stardust/auojs/inrt/rt/AutoJs.java @@ -20,13 +20,10 @@ import com.stardust.autojs.runtime.ScriptRuntime; import com.stardust.autojs.runtime.ScriptStopException; import com.stardust.autojs.runtime.api.AbstractShell; import com.stardust.autojs.runtime.api.AppUtils; -import com.stardust.autojs.runtime.api.Console; import com.stardust.autojs.runtime.api.Shell; import com.stardust.autojs.runtime.api.image.ScreenCaptureRequestActivity; import com.stardust.autojs.runtime.api.image.ScreenCaptureRequester; import com.stardust.autojs.runtime.console.StardustConsole; -import com.stardust.automator.AccessibilityEventCommandHost; -import com.stardust.automator.simple_action.SimpleActionPerformHost; import com.stardust.util.ScreenMetrics; import com.stardust.util.Supplier; import com.stardust.util.UiHandler; @@ -50,8 +47,6 @@ public class AutoJs implements AccessibilityBridge { instance = new AutoJs(context); } - private final AccessibilityEventCommandHost mAccessibilityEventCommandHost = new AccessibilityEventCommandHost(); - private final SimpleActionPerformHost mSimpleActionPerformHost = new SimpleActionPerformHost(); private final ScriptEngineService mScriptEngineService; private final AccessibilityInfoProvider mAccessibilityInfoProvider; private final UiHandler mUiHandler; @@ -138,17 +133,6 @@ public class AutoJs implements AccessibilityBridge { AccessibilityService.addDelegate(100, mAccessibilityInfoProvider); } - - @Override - public AccessibilityEventCommandHost getCommandHost() { - return mAccessibilityEventCommandHost; - } - - @Override - public SimpleActionPerformHost getActionPerformHost() { - return mSimpleActionPerformHost; - } - @Nullable @Override public AccessibilityService getService() {