This commit is contained in:
hyb1996
2017-10-28 12:54:02 +08:00
60 changed files with 190 additions and 166 deletions

View File

@@ -97,7 +97,7 @@
</intent-filter>
</activity>
<activity
android:name="com.stardust.autojs.runtime.api.image.ScreenCaptureRequestActivity"
android:name="com.stardust.autojs.core.image.ScreenCaptureRequestActivity"
android:taskAffinity="com.stardust.autojs.runtime.api.image.ScreenCaptureRequestActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>

View File

@@ -22,15 +22,15 @@ import com.stardust.autojs.runtime.exception.ScriptException;
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.autojs.core.image.ScreenCaptureRequester;
import com.stardust.autojs.core.inputevent.InputEventObserver;
import com.stardust.autojs.script.AutoFileSource;
import com.stardust.autojs.script.JavaScriptSource;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R;
import com.stardust.autojs.runtime.api.image.ScreenCaptureRequestActivity;
import com.stardust.autojs.runtime.api.Shell;
import com.stardust.autojs.core.image.ScreenCaptureRequestActivity;
import com.stardust.autojs.core.util.Shell;
import com.stardust.autojs.core.console.StardustConsole;
import com.stardust.util.ScreenMetrics;
import com.stardust.util.Supplier;

View File

@@ -7,7 +7,7 @@ import android.text.TextUtils;
import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.R;
import com.stardust.autojs.runtime.api.ProcessShell;
import com.stardust.autojs.core.util.ProcessShell;
import com.stardust.scriptdroid.accessibility.AccessibilityService;
import com.stardust.view.accessibility.AccessibilityServiceUtils;

View File

@@ -47,4 +47,4 @@ require("__general__")(__runtime__, this);
})(__that__);
__importClass__(android.view.KeyEvent);
__importClass__(com.stardust.autojs.runtime.api.Shell);
__importClass__(com.stardust.autojs.core.util.Shell);

View File

@@ -1,6 +1,6 @@
module.exports = function(__runtime__, scope){
function RootAutomator(){
this.__ra__ = Object.create(new com.stardust.autojs.runtime.api.RootAutomator(scope.context));
this.__ra__ = Object.create(new com.stardust.autojs.core.inputevent.RootAutomator(scope.context));
var methods = ["sendEvent", "touch", "setScreenMetrics", "touchX", "touchY", "sendSync", "sendMtSync", "tap",
"swipe", "press", "longPress", "touchDown", "touchUp", "touchMove", "getDefaultId", "setDefaultId", "exit"];
for(var i = 0; i < methods.length; i++){

View File

@@ -70,15 +70,15 @@ module.exports = function(__runtime__, scope){
function getColorDetector(color, algorithm, threshold){
switch(algorithm){
case "rgb":
return new com.stardust.autojs.runtime.api.image.ColorDetector.RGBDistanceDetector(color, threshold);
return new com.stardust.autojs.core.image.ColorDetector.RGBDistanceDetector(color, threshold);
case "equal":
return new com.stardust.autojs.runtime.api.image.ColorDetector.EqualityDetector(color);
return new com.stardust.autojs.core.image.ColorDetector.EqualityDetector(color);
case "diff":
return new com.stardust.autojs.runtime.api.image.ColorDetector.DifferenceDetector(color, threshold);
return new com.stardust.autojs.core.image.ColorDetector.DifferenceDetector(color, threshold);
case "rgb+":
return new com.stardust.autojs.runtime.api.image.ColorDetector.WeightedRGBDistanceDetector(color, threshold);
return new com.stardust.autojs.core.image.ColorDetector.WeightedRGBDistanceDetector(color, threshold);
case "hs":
return new com.stardust.autojs.runtime.api.image.ColorDetector.HSDistanceDetector(color, threshold);
return new com.stardust.autojs.core.image.ColorDetector.HSDistanceDetector(color, threshold);
}
throw new Error("Unknown algorithm: " + algorithm);
}

View File

@@ -52,7 +52,7 @@ module.exports = function(__runtime__, scope){
}
ui.findViewByStringId = function(view, id){
return com.stardust.autojs.runtime.api.ui.JsViewHelper.findViewByStringId(view, id);
return com.stardust.autojs.core.ui.JsViewHelper.findViewByStringId(view, id);
}
function decorate(view){

View File

@@ -2,11 +2,11 @@
module.exports = function(__runtime__, scope){
scope.newInjectableWebClient = function(){
return new com.stardust.autojs.runtime.api.InjectableWebClient(org.mozilla.javascript.Context.getCurrentContext(), scope);
return new com.stardust.autojs.core.web.InjectableWebClient(org.mozilla.javascript.Context.getCurrentContext(), scope);
}
scope.newInjectableWebView = function(activity){
return new com.stardust.autojs.runtime.api.InjectableWebView(scope.activity, org.mozilla.javascript.Context.getCurrentContext(), scope);
return new com.stardust.autojs.core.web.InjectableWebView(scope.activity, org.mozilla.javascript.Context.getCurrentContext(), scope);
}
}

View File

@@ -6,6 +6,7 @@ import com.stardust.autojs.engine.JavaScriptEngine;
import com.stardust.autojs.engine.ScriptEngine;
import com.stardust.autojs.engine.ScriptEngineManager;
import com.stardust.autojs.execution.ExecutionConfig;
import com.stardust.autojs.execution.LoopedBasedJavaScriptExecution;
import com.stardust.autojs.execution.RunnableScriptExecution;
import com.stardust.autojs.execution.ScriptExecuteActivity;
import com.stardust.autojs.execution.ScriptExecution;
@@ -130,7 +131,12 @@ public class ScriptEngineService {
return ScriptExecuteActivity.execute(mContext, mScriptEngineManager, task);
}
}
RunnableScriptExecution r = new RunnableScriptExecution(mScriptEngineManager, task);
RunnableScriptExecution r;
if (source instanceof JavaScriptSource) {
r = new LoopedBasedJavaScriptExecution(mScriptEngineManager, task);
} else {
r = new RunnableScriptExecution(mScriptEngineManager, task);
}
if (task.getConfig().runInNewThread) {
new ThreadCompat(r).start();
} else {

View File

@@ -1,9 +1,5 @@
package com.stardust.autojs.codegeneration;
import com.stardust.autojs.runtime.api.UiSelector;
import com.stardust.automator.UiGlobalSelector;
import com.stardust.automator.UiObject;
/**
* Created by Stardust on 2017/8/4.
*/

View File

@@ -1,10 +1,9 @@
package com.stardust.autojs.runtime.api;
package com.stardust.autojs.core.accessibility;
import android.support.annotation.NonNull;
import android.util.Log;
import android.view.accessibility.AccessibilityNodeInfo;
import com.stardust.autojs.core.accessibility.AccessibilityBridge;
import com.stardust.autojs.annotation.ScriptInterface;
import com.stardust.autojs.runtime.accessibility.AutomatorConfig;
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api;
package com.stardust.autojs.core.eventloop;
import android.support.annotation.NonNull;
@@ -92,7 +92,7 @@ public class EventEmitter {
private Map<String, Listeners> mListenersMap = new HashMap<>();
public static int defaultMaxListeners = 10;
private int mMaxListeners = defaultMaxListeners;
ScriptBridges mBridges;
protected ScriptBridges mBridges;
public EventEmitter(ScriptBridges bridges) {
mBridges = bridges;

View File

@@ -1,9 +1,7 @@
package com.stardust.autojs.runtime.api.image;
package com.stardust.autojs.core.image;
import android.graphics.Color;
import java.util.Comparator;
/**
* Created by Stardust on 2017/5/20.
*/

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api.image;
package com.stardust.autojs.core.image;
import android.graphics.Point;
import android.graphics.Rect;

View File

@@ -1,8 +1,7 @@
package com.stardust.autojs.runtime.api.image;
package com.stardust.autojs.core.image;
import android.graphics.Rect;
import android.media.Image;
import android.util.Log;
import java.nio.ByteBuffer;

View File

@@ -1,8 +1,7 @@
package com.stardust.autojs.runtime.api.image;
package com.stardust.autojs.core.image;
import android.graphics.Rect;
import android.media.Image;
import android.util.Log;
import java.nio.ByteBuffer;

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api.image;
package com.stardust.autojs.core.image;
import android.app.Activity;
import android.content.Context;

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api.image;
package com.stardust.autojs.core.image;
import android.app.Activity;
import android.content.Context;

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api.image;
package com.stardust.autojs.core.image;
import android.app.Activity;
import android.content.Context;

View File

@@ -5,7 +5,7 @@ import android.support.annotation.NonNull;
import android.text.TextUtils;
import com.stardust.autojs.core.record.inputevent.EventFormatException;
import com.stardust.autojs.runtime.api.Shell;
import com.stardust.autojs.core.util.Shell;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.regex.Matcher;

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api;
package com.stardust.autojs.core.inputevent;
import android.content.Context;
import android.os.SystemClock;
@@ -6,7 +6,9 @@ import android.support.annotation.Nullable;
import android.view.ViewConfiguration;
import com.stardust.autojs.core.inputevent.InputDevices;
import com.stardust.autojs.core.util.ProcessShell;
import com.stardust.autojs.engine.RootAutomatorEngine;
import com.stardust.autojs.runtime.api.AbstractShell;
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.util.ScreenMetrics;

View File

@@ -6,8 +6,8 @@ import android.util.Log;
import com.stardust.autojs.core.inputevent.InputEventCodes;
import com.stardust.autojs.core.inputevent.InputEventObserver;
import com.stardust.autojs.core.inputevent.RootAutomator;
import com.stardust.autojs.engine.RootAutomatorEngine;
import com.stardust.autojs.runtime.api.RootAutomator;
import com.stardust.pio.UncheckedIOException;
import com.stardust.util.ScreenMetrics;

View File

@@ -1,12 +1,10 @@
package com.stardust.autojs.core.record.inputevent;
import android.support.annotation.NonNull;
import android.util.Log;
import com.stardust.autojs.core.inputevent.InputEventCodes;
import com.stardust.autojs.core.inputevent.InputEventObserver;
import com.stardust.autojs.engine.RootAutomatorEngine;
import com.stardust.autojs.runtime.api.RootAutomator;
import static com.stardust.util.ScreenMetrics.getDeviceScreenHeight;
import static com.stardust.util.ScreenMetrics.getDeviceScreenWidth;

View File

@@ -1,10 +1,7 @@
package com.stardust.autojs.core.templatematching;
import android.graphics.Color;
import android.media.Image;
import com.stardust.autojs.runtime.api.image.Images;
/**
* Created by Stardust on 2017/10/5.
*/

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api.ui;
package com.stardust.autojs.core.ui;
import android.app.Activity;
import android.content.Context;

View File

@@ -1,30 +1,18 @@
package com.stardust.autojs.runtime.api.ui;
package com.stardust.autojs.core.ui;
import android.content.Context;
import android.text.InputType;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.nickandjerry.dynamiclayoutinflator.lib.DynamicLayoutInflator;
import com.stardust.autojs.runtime.api.ui.widget.JsFrameLayout;
import com.stardust.autojs.runtime.api.ui.xml.XmlConverter;
import com.stardust.autojs.core.ui.widget.JsFrameLayout;
import com.stardust.autojs.core.ui.xml.XmlConverter;
import com.stardust.util.MapEntries;
import org.xml.sax.SAXException;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import java.io.IOException;
import java.io.StringReader;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
import javax.xml.parsers.ParserConfigurationException;
/**
* Created by Stardust on 2017/5/14.
*/

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api.ui;
package com.stardust.autojs.core.ui;
import android.content.Context;
import android.view.View;

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api.ui;
package com.stardust.autojs.core.ui;
import android.content.res.Resources;
import android.support.annotation.Nullable;

View File

@@ -1,10 +1,7 @@
package com.stardust.autojs.runtime.api.ui.widget;
package com.stardust.autojs.core.ui.widget;
import android.content.Context;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.util.AttributeSet;
import android.widget.Button;
/**
* Created by Stardust on 2017/5/15.

View File

@@ -1,8 +1,7 @@
package com.stardust.autojs.runtime.api.ui.widget;
package com.stardust.autojs.core.ui.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.EditText;
/**
* Created by Stardust on 2017/5/15.

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api.ui.widget;
package com.stardust.autojs.core.ui.widget;
import android.content.Context;
import android.os.Build;
@@ -11,8 +11,7 @@ import android.util.AttributeSet;
import android.view.View;
import android.widget.FrameLayout;
import com.nickandjerry.dynamiclayoutinflator.lib.DynamicLayoutInflator;
import com.stardust.autojs.runtime.api.ui.JsViewHelper;
import com.stardust.autojs.core.ui.JsViewHelper;
/**
* Created by Stardust on 2017/5/14.

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api.ui.widget;
package com.stardust.autojs.core.ui.widget;
import android.content.Context;
import android.os.Build;
@@ -8,8 +8,7 @@ import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
import com.nickandjerry.dynamiclayoutinflator.lib.DynamicLayoutInflator;
import com.stardust.autojs.runtime.api.ui.JsViewHelper;
import com.stardust.autojs.core.ui.JsViewHelper;
/**
* Created by Stardust on 2017/5/14.

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api.ui.widget;
package com.stardust.autojs.core.ui.widget;
import android.content.Context;
import android.os.Build;
@@ -7,8 +7,7 @@ import android.util.AttributeSet;
import android.view.View;
import android.widget.RelativeLayout;
import com.nickandjerry.dynamiclayoutinflator.lib.DynamicLayoutInflator;
import com.stardust.autojs.runtime.api.ui.JsViewHelper;
import com.stardust.autojs.core.ui.JsViewHelper;
/**
* Created by Stardust on 2017/5/14.

View File

@@ -1,11 +1,8 @@
package com.stardust.autojs.runtime.api.ui.widget;
package com.stardust.autojs.core.ui.widget;
import android.content.Context;
import android.os.Build;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.util.AttributeSet;
import android.widget.TextView;
/**
* Created by Stardust on 2017/5/15.

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api.ui.xml;
package com.stardust.autojs.core.ui.xml;
import org.w3c.dom.Node;

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api.ui.xml;
package com.stardust.autojs.core.ui.xml;
import org.w3c.dom.Node;

View File

@@ -1,6 +1,4 @@
package com.stardust.autojs.runtime.api.ui.xml;
import com.stardust.util.MapEntries;
package com.stardust.autojs.core.ui.xml;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
@@ -11,7 +9,6 @@ import org.xml.sax.SAXException;
import java.io.IOException;
import java.io.StringReader;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

View File

@@ -1,8 +1,9 @@
package com.stardust.autojs.runtime.api;
package com.stardust.autojs.core.util;
import android.util.Log;
import com.stardust.autojs.runtime.api.AbstractShell;
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.autojs.util.ProcessUtils;
import com.stardust.pio.UncheckedIOException;
@@ -12,8 +13,6 @@ import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
/**
* Created by Stardust on 2017/1/20.

View File

@@ -1,10 +1,11 @@
package com.stardust.autojs.runtime.api;
package com.stardust.autojs.core.util;
import android.content.Context;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.util.Log;
import com.stardust.autojs.runtime.api.AbstractShell;
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.autojs.runtime.ScriptRuntime;
import com.stardust.lang.ThreadCompat;

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api;
package com.stardust.autojs.core.web;
import android.annotation.SuppressLint;
import android.util.Log;

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api;
package com.stardust.autojs.core.web;
import android.content.Context;
import android.webkit.ValueCallback;

View File

@@ -8,6 +8,7 @@ import android.os.MessageQueue;
import com.stardust.autojs.runtime.api.Loopers;
import com.stardust.autojs.script.JavaScriptSource;
import com.stardust.autojs.script.ScriptSource;
import com.stardust.util.Callback;
/**
* Created by Stardust on 2017/7/28.
@@ -24,18 +25,27 @@ public class LoopBasedJavaScriptEngine extends RhinoJavaScriptEngine {
@Override
public Object execute(final JavaScriptSource source) {
execute(source, null);
return null;
}
public void execute(final ScriptSource source, final Callback<Object> callback) {
Runnable r = new Runnable() {
@Override
public void run() {
LoopBasedJavaScriptEngine.super.execute(source);
Object o = LoopBasedJavaScriptEngine.super.execute((JavaScriptSource) source);
if (callback != null)
callback.call(o);
}
};
mHandler.post(r);
if (!mLooping && Looper.myLooper() != Looper.getMainLooper()) {
mLooping = true;
Looper.loop();
mLooping = false;
}
return null;
}
@Override

View File

@@ -3,10 +3,8 @@ package com.stardust.autojs.engine;
import android.content.Context;
import android.preference.PreferenceManager;
import android.util.Log;
import android.util.Patterns;
import com.stardust.autojs.runtime.api.AbstractShell;
import com.stardust.autojs.runtime.api.ProcessShell;
import com.stardust.autojs.core.util.ProcessShell;
import com.stardust.autojs.core.inputevent.InputDevices;
import com.stardust.autojs.runtime.exception.ScriptException;
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;

View File

@@ -0,0 +1,58 @@
package com.stardust.autojs.execution;
import android.os.MessageQueue;
import android.util.Log;
import com.stardust.autojs.engine.LoopBasedJavaScriptEngine;
import com.stardust.autojs.engine.ScriptEngine;
import com.stardust.autojs.engine.ScriptEngineManager;
import com.stardust.autojs.runtime.api.Loopers;
import com.stardust.autojs.script.JavaScriptSource;
import com.stardust.autojs.script.ScriptSource;
/**
* Created by Stardust on 2017/10/27.
*/
public class LoopedBasedJavaScriptExecution extends RunnableScriptExecution {
public LoopedBasedJavaScriptExecution(ScriptEngineManager manager, ScriptExecutionTask task) {
super(manager, task);
}
protected Object doExecution(final ScriptEngine engine) {
engine.setTag(ScriptEngine.TAG_SOURCE, getSource());
getListener().onStart(this);
long delay = getConfig().delay;
sleep(delay);
final LoopBasedJavaScriptEngine javaScriptEngine = (LoopBasedJavaScriptEngine) engine;
final long interval = getConfig().interval;
javaScriptEngine.getRuntime().loopers.setLooperQuitHandler(new Loopers.LooperQuitHandler() {
long times = getConfig().loopTimes == 0 ? Integer.MAX_VALUE : getConfig().loopTimes;
@Override
public boolean shouldQuit() {
times--;
if (times > 0) {
sleep(interval);
javaScriptEngine.execute(getSource());
return false;
}
javaScriptEngine.getRuntime().loopers.setLooperQuitHandler(null);
getListener().onSuccess(LoopedBasedJavaScriptExecution.this, null);
return true;
}
});
javaScriptEngine.execute(
getSource());
return null;
}
@Override
public JavaScriptSource getSource() {
return (JavaScriptSource) super.getSource();
}
}

View File

@@ -51,7 +51,7 @@ public class RunnableScriptExecution extends ScriptExecution.AbstractScriptExecu
engine.init();
}
private Object doExecution(ScriptEngine engine) {
protected Object doExecution(ScriptEngine engine) {
engine.setTag(ScriptEngine.TAG_SOURCE, getSource());
getListener().onStart(this);
Object result = null;
@@ -64,14 +64,19 @@ public class RunnableScriptExecution extends ScriptExecution.AbstractScriptExecu
sleep(delay);
ScriptSource source = getSource();
for (int i = 0; i < times; i++) {
result = engine.execute(source);
result = execute(engine, source);
sleep(interval);
}
getListener().onSuccess(this, result);
return result;
}
private void sleep(long i) {
@SuppressWarnings("unchecked")
protected Object execute(ScriptEngine engine, ScriptSource source) {
return engine.execute(source);
}
protected void sleep(long i) {
if (i <= 0) {
return;
}

View File

@@ -17,19 +17,19 @@ import com.stardust.autojs.runtime.api.Engines;
import com.stardust.autojs.runtime.api.Events;
import com.stardust.autojs.runtime.api.Loopers;
import com.stardust.autojs.runtime.api.Timers;
import com.stardust.autojs.runtime.api.UiSelector;
import com.stardust.autojs.runtime.api.image.Images;
import com.stardust.autojs.runtime.api.image.ScreenCaptureRequester;
import com.stardust.autojs.runtime.api.ui.Dialogs;
import com.stardust.autojs.core.accessibility.UiSelector;
import com.stardust.autojs.runtime.api.Images;
import com.stardust.autojs.core.image.ScreenCaptureRequester;
import com.stardust.autojs.runtime.api.Dialogs;
import com.stardust.autojs.runtime.exception.ScriptEnvironmentException;
import com.stardust.autojs.runtime.exception.ScriptException;
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.autojs.core.accessibility.SimpleActionAutomator;
import com.stardust.concurrent.VolatileBox;
import com.stardust.autojs.runtime.api.ui.UI;
import com.stardust.autojs.runtime.api.UI;
import com.stardust.pio.UncheckedIOException;
import com.stardust.util.ClipboardUtil;
import com.stardust.autojs.runtime.api.ProcessShell;
import com.stardust.autojs.core.util.ProcessShell;
import com.stardust.util.ScreenMetrics;
import com.stardust.util.SdkVersionUtil;
import com.stardust.util.Supplier;

View File

@@ -28,10 +28,10 @@ public abstract class AbstractShell {
}
}
static final String COMMAND_SU = "su";
static final String COMMAND_SH = "sh";
static final String COMMAND_EXIT = "exit\n";
static final String COMMAND_LINE_END = "\n";
protected static final String COMMAND_SU = "su";
protected static final String COMMAND_SH = "sh";
protected static final String COMMAND_EXIT = "exit\n";
protected static final String COMMAND_LINE_END = "\n";
private int mTouchDevice = -1;

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api.ui;
package com.stardust.autojs.runtime.api;
import android.app.Activity;
import android.content.Context;
@@ -9,6 +9,7 @@ import com.afollestad.materialdialogs.MaterialDialog;
import com.afollestad.materialdialogs.Theme;
import com.stardust.autojs.R;
import com.stardust.autojs.annotation.ScriptInterface;
import com.stardust.autojs.core.ui.BlockedMaterialDialog;
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.autojs.runtime.api.AppUtils;
import com.stardust.concurrent.VolatileBox;

View File

@@ -10,6 +10,7 @@ import android.view.accessibility.AccessibilityEvent;
import com.stardust.autojs.R;
import com.stardust.autojs.core.accessibility.AccessibilityBridge;
import com.stardust.autojs.core.eventloop.EventEmitter;
import com.stardust.autojs.runtime.ScriptBridges;
import com.stardust.autojs.runtime.exception.ScriptException;
import com.stardust.autojs.core.inputevent.InputEventObserver;

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api.image;
package com.stardust.autojs.runtime.api;
import android.app.Activity;
import android.content.Context;
@@ -15,6 +15,9 @@ import android.view.Display;
import android.view.Surface;
import android.view.WindowManager;
import com.stardust.autojs.core.image.ColorFinder;
import com.stardust.autojs.core.image.ScreenCaptureRequester;
import com.stardust.autojs.core.image.ScreenCapturer;
import com.stardust.autojs.runtime.ScriptRuntime;
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.autojs.annotation.ScriptVariable;

View File

@@ -6,7 +6,6 @@ import android.os.MessageQueue;
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.lang.ThreadCompat;
import java.lang.reflect.Field;
import java.util.concurrent.ConcurrentHashMap;
/**
@@ -15,10 +14,15 @@ import java.util.concurrent.ConcurrentHashMap;
public class Loopers {
public interface LooperQuitHandler {
boolean shouldQuit();
}
public volatile boolean waitWhenIdle = false;
private volatile Looper mServantLooper;
private static volatile ConcurrentHashMap<Thread, Looper> sLoopers = new ConcurrentHashMap<>();
private Timers mTimers;
private LooperQuitHandler mLooperQuitHandler;
public Loopers(Timers timers) {
mTimers = timers;
@@ -29,8 +33,11 @@ public class Loopers {
@Override
public boolean queueIdle() {
Looper l = Looper.myLooper();
if (l != null && shouldQuitLooper())
l.quit();
if (l != null && shouldQuitLooper()) {
if (mLooperQuitHandler != null && mLooperQuitHandler.shouldQuit()) {
l.quit();
}
}
return true;
}
});
@@ -102,4 +109,8 @@ public class Loopers {
if (looper != null)
looper.quit();
}
public void setLooperQuitHandler(LooperQuitHandler looperQuitHandler) {
mLooperQuitHandler = looperQuitHandler;
}
}

View File

@@ -2,6 +2,7 @@ package com.stardust.autojs.runtime.api;
import android.os.Handler;
import android.os.SystemClock;
import android.util.Log;
import android.util.SparseArray;
import com.stardust.autojs.runtime.ScriptBridges;
@@ -28,7 +29,7 @@ public class Timers {
}
}
public int setTimeout(final Object callback, long delay, final Object... args) {
public int setTimeout(final Object callback, final long delay, final Object... args) {
ensureHandler();
mCallbackMaxId++;
final int id = mCallbackMaxId;

View File

@@ -1,7 +1,9 @@
package com.stardust.autojs.runtime.api.ui;
package com.stardust.autojs.runtime.api;
import android.content.Context;
import com.stardust.autojs.core.ui.ConvertLayoutInflater;
import com.stardust.autojs.core.ui.JsLayoutInflater;
import com.stardust.autojs.rhino.ProxyObject;
import org.mozilla.javascript.Scriptable;

View File

@@ -1,28 +0,0 @@
package com.stardust.autojs.runtime.api.crypto;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import static javax.crypto.Cipher.ENCRYPT_MODE;
/**
* Created by Stardust on 2017/9/20.
*/
public class Crypto {
public Cipher createCipher(String algorithm, String password) throws InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException {
javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance(algorithm);
KeyGenerator keyGenerator = KeyGenerator.getInstance(algorithm);
keyGenerator.init(128, new SecureRandom(password.getBytes()));
SecretKey secretKey = keyGenerator.generateKey();
cipher.init(ENCRYPT_MODE, secretKey);
return cipher;
}
}

View File

@@ -2,7 +2,7 @@ package com.stardust.autojs.util;
import android.util.Log;
import com.stardust.autojs.runtime.api.ProcessShell;
import com.stardust.autojs.core.util.ProcessShell;
import java.lang.reflect.Field;

View File

@@ -1,11 +1,7 @@
package com.stardust.autojs;
import com.stardust.autojs.runtime.api.image.ColorDetector;
import org.junit.Test;
import java.util.Arrays;
/**
* Example local unit test, which will execute on the development machine (host).
*

View File

@@ -1,6 +1,6 @@
package com.stardust.autojs.runtime.api.ui;
import com.stardust.autojs.runtime.api.ui.xml.XmlConverter;
import com.stardust.autojs.core.ui.xml.XmlConverter;
import org.junit.Test;
import org.xml.sax.SAXException;

View File

@@ -134,21 +134,21 @@ public class UiObject extends AccessibilityNodeInfoCompat {
}
@NonNull
public CharSequence text() {
public String text() {
CharSequence t = getText();
return t == null ? "" : t;
return t == null ? "" : t.toString();
}
public CharSequence desc() {
return getContentDescription();
public String desc() {
return getContentDescription().toString();
}
public CharSequence className() {
return getClassName();
public String className() {
return getClassName().toString();
}
public CharSequence packageName() {
return getPackageName();
public String packageName() {
return getPackageName().toString();
}
public boolean performAction(int action, ActionArgument... arguments) {

View File

@@ -7,7 +7,7 @@ import android.provider.Settings;
import android.text.TextUtils;
import com.stardust.auojs.inrt.App;
import com.stardust.autojs.runtime.api.ProcessShell;
import com.stardust.autojs.core.util.ProcessShell;
import java.util.Locale;

View File

@@ -24,11 +24,9 @@ import com.stardust.autojs.engine.ScriptEngineManager;
import com.stardust.autojs.runtime.ScriptRuntime;
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.core.console.NoOpConsole;
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.core.util.Shell;
import com.stardust.autojs.core.image.ScreenCaptureRequestActivity;
import com.stardust.autojs.core.image.ScreenCaptureRequester;
import com.stardust.autojs.core.console.StardustConsole;
import com.stardust.autojs.runtime.exception.ScriptException;
import com.stardust.autojs.script.AutoFileSource;
@@ -39,7 +37,6 @@ import com.stardust.util.UiHandler;
import com.stardust.view.accessibility.AccessibilityInfoProvider;
import com.stardust.view.accessibility.AccessibilityService;
import com.stardust.view.accessibility.AccessibilityServiceUtils;
import com.stardust.view.accessibility.LayoutInspector;
import com.stardust.view.accessibility.NotificationListener;