Merge branch 'dev' of https://github.com/hyb1996/NoRootScriptDroid into dev
This commit is contained in:
@@ -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"/>
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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++){
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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){
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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.
|
||||
*/
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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;
|
||||
@@ -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.
|
||||
*/
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.stardust.autojs.runtime.api.ui.xml;
|
||||
package com.stardust.autojs.core.ui.xml;
|
||||
|
||||
import org.w3c.dom.Node;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.stardust.autojs.runtime.api.ui.xml;
|
||||
package com.stardust.autojs.core.ui.xml;
|
||||
|
||||
import org.w3c.dom.Node;
|
||||
|
||||
@@ -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;
|
||||
@@ -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.
|
||||
@@ -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;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.stardust.autojs.runtime.api;
|
||||
package com.stardust.autojs.core.web;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.util.Log;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.stardust.autojs.runtime.api;
|
||||
package com.stardust.autojs.core.web;
|
||||
|
||||
import android.content.Context;
|
||||
import android.webkit.ValueCallback;
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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).
|
||||
*
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user