Merge branch 'dev' of https://github.com/hyb1996/NoRootScriptDroid into dev
This commit is contained in:
commit
8ce22d1af6
60 files changed
+190
-166
No files matched your search
@@ -97,7 +97,7 @@
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<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:taskAffinity="com.stardust.autojs.runtime.api.image.ScreenCaptureRequestActivity"
|
||||||
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
|
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.AbstractShell;
|
||||||
import com.stardust.autojs.runtime.api.AppUtils;
|
import com.stardust.autojs.runtime.api.AppUtils;
|
||||||
import com.stardust.autojs.runtime.api.Console;
|
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.core.inputevent.InputEventObserver;
|
||||||
import com.stardust.autojs.script.AutoFileSource;
|
import com.stardust.autojs.script.AutoFileSource;
|
||||||
import com.stardust.autojs.script.JavaScriptSource;
|
import com.stardust.autojs.script.JavaScriptSource;
|
||||||
import com.stardust.scriptdroid.App;
|
import com.stardust.scriptdroid.App;
|
||||||
import com.stardust.scriptdroid.Pref;
|
import com.stardust.scriptdroid.Pref;
|
||||||
import com.stardust.scriptdroid.R;
|
import com.stardust.scriptdroid.R;
|
||||||
import com.stardust.autojs.runtime.api.image.ScreenCaptureRequestActivity;
|
import com.stardust.autojs.core.image.ScreenCaptureRequestActivity;
|
||||||
import com.stardust.autojs.runtime.api.Shell;
|
import com.stardust.autojs.core.util.Shell;
|
||||||
import com.stardust.autojs.core.console.StardustConsole;
|
import com.stardust.autojs.core.console.StardustConsole;
|
||||||
import com.stardust.util.ScreenMetrics;
|
import com.stardust.util.ScreenMetrics;
|
||||||
import com.stardust.util.Supplier;
|
import com.stardust.util.Supplier;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import android.text.TextUtils;
|
|||||||
import com.stardust.scriptdroid.Pref;
|
import com.stardust.scriptdroid.Pref;
|
||||||
import com.stardust.scriptdroid.App;
|
import com.stardust.scriptdroid.App;
|
||||||
import com.stardust.scriptdroid.R;
|
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.scriptdroid.accessibility.AccessibilityService;
|
||||||
import com.stardust.view.accessibility.AccessibilityServiceUtils;
|
import com.stardust.view.accessibility.AccessibilityServiceUtils;
|
||||||
|
|
||||||
|
|||||||
@@ -47,4 +47,4 @@ require("__general__")(__runtime__, this);
|
|||||||
})(__that__);
|
})(__that__);
|
||||||
|
|
||||||
__importClass__(android.view.KeyEvent);
|
__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){
|
module.exports = function(__runtime__, scope){
|
||||||
function RootAutomator(){
|
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",
|
var methods = ["sendEvent", "touch", "setScreenMetrics", "touchX", "touchY", "sendSync", "sendMtSync", "tap",
|
||||||
"swipe", "press", "longPress", "touchDown", "touchUp", "touchMove", "getDefaultId", "setDefaultId", "exit"];
|
"swipe", "press", "longPress", "touchDown", "touchUp", "touchMove", "getDefaultId", "setDefaultId", "exit"];
|
||||||
for(var i = 0; i < methods.length; i++){
|
for(var i = 0; i < methods.length; i++){
|
||||||
|
|||||||
@@ -70,15 +70,15 @@ module.exports = function(__runtime__, scope){
|
|||||||
function getColorDetector(color, algorithm, threshold){
|
function getColorDetector(color, algorithm, threshold){
|
||||||
switch(algorithm){
|
switch(algorithm){
|
||||||
case "rgb":
|
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":
|
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":
|
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+":
|
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":
|
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);
|
throw new Error("Unknown algorithm: " + algorithm);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ module.exports = function(__runtime__, scope){
|
|||||||
}
|
}
|
||||||
|
|
||||||
ui.findViewByStringId = function(view, id){
|
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){
|
function decorate(view){
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
module.exports = function(__runtime__, scope){
|
module.exports = function(__runtime__, scope){
|
||||||
scope.newInjectableWebClient = function(){
|
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){
|
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.ScriptEngine;
|
||||||
import com.stardust.autojs.engine.ScriptEngineManager;
|
import com.stardust.autojs.engine.ScriptEngineManager;
|
||||||
import com.stardust.autojs.execution.ExecutionConfig;
|
import com.stardust.autojs.execution.ExecutionConfig;
|
||||||
|
import com.stardust.autojs.execution.LoopedBasedJavaScriptExecution;
|
||||||
import com.stardust.autojs.execution.RunnableScriptExecution;
|
import com.stardust.autojs.execution.RunnableScriptExecution;
|
||||||
import com.stardust.autojs.execution.ScriptExecuteActivity;
|
import com.stardust.autojs.execution.ScriptExecuteActivity;
|
||||||
import com.stardust.autojs.execution.ScriptExecution;
|
import com.stardust.autojs.execution.ScriptExecution;
|
||||||
@@ -130,7 +131,12 @@ public class ScriptEngineService {
|
|||||||
return ScriptExecuteActivity.execute(mContext, mScriptEngineManager, task);
|
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) {
|
if (task.getConfig().runInNewThread) {
|
||||||
new ThreadCompat(r).start();
|
new ThreadCompat(r).start();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
package com.stardust.autojs.codegeneration;
|
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.
|
* Created by Stardust on 2017/8/4.
|
||||||
*/
|
*/
|
||||||
|
|||||||
+1
-2
@@ -1,10 +1,9 @@
|
|||||||
package com.stardust.autojs.runtime.api;
|
package com.stardust.autojs.core.accessibility;
|
||||||
|
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.accessibility.AccessibilityNodeInfo;
|
import android.view.accessibility.AccessibilityNodeInfo;
|
||||||
|
|
||||||
import com.stardust.autojs.core.accessibility.AccessibilityBridge;
|
|
||||||
import com.stardust.autojs.annotation.ScriptInterface;
|
import com.stardust.autojs.annotation.ScriptInterface;
|
||||||
import com.stardust.autojs.runtime.accessibility.AutomatorConfig;
|
import com.stardust.autojs.runtime.accessibility.AutomatorConfig;
|
||||||
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
package com.stardust.autojs.runtime.api;
|
package com.stardust.autojs.core.eventloop;
|
||||||
|
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ public class EventEmitter {
|
|||||||
private Map<String, Listeners> mListenersMap = new HashMap<>();
|
private Map<String, Listeners> mListenersMap = new HashMap<>();
|
||||||
public static int defaultMaxListeners = 10;
|
public static int defaultMaxListeners = 10;
|
||||||
private int mMaxListeners = defaultMaxListeners;
|
private int mMaxListeners = defaultMaxListeners;
|
||||||
ScriptBridges mBridges;
|
protected ScriptBridges mBridges;
|
||||||
|
|
||||||
public EventEmitter(ScriptBridges bridges) {
|
public EventEmitter(ScriptBridges bridges) {
|
||||||
mBridges = bridges;
|
mBridges = bridges;
|
||||||
+1
-3
@@ -1,9 +1,7 @@
|
|||||||
package com.stardust.autojs.runtime.api.image;
|
package com.stardust.autojs.core.image;
|
||||||
|
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
|
|
||||||
import java.util.Comparator;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Stardust on 2017/5/20.
|
* Created by Stardust on 2017/5/20.
|
||||||
*/
|
*/
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.stardust.autojs.runtime.api.image;
|
package com.stardust.autojs.core.image;
|
||||||
|
|
||||||
import android.graphics.Point;
|
import android.graphics.Point;
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
+1
-2
@@ -1,8 +1,7 @@
|
|||||||
package com.stardust.autojs.runtime.api.image;
|
package com.stardust.autojs.core.image;
|
||||||
|
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.media.Image;
|
import android.media.Image;
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
|
||||||
+1
-2
@@ -1,8 +1,7 @@
|
|||||||
package com.stardust.autojs.runtime.api.image;
|
package com.stardust.autojs.core.image;
|
||||||
|
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.media.Image;
|
import android.media.Image;
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.stardust.autojs.runtime.api.image;
|
package com.stardust.autojs.core.image;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.stardust.autojs.runtime.api.image;
|
package com.stardust.autojs.core.image;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.stardust.autojs.runtime.api.image;
|
package com.stardust.autojs.core.image;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -5,7 +5,7 @@ import android.support.annotation.NonNull;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import com.stardust.autojs.core.record.inputevent.EventFormatException;
|
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.concurrent.CopyOnWriteArrayList;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
|
|||||||
+3
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.stardust.autojs.runtime.api;
|
package com.stardust.autojs.core.inputevent;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
@@ -6,7 +6,9 @@ import android.support.annotation.Nullable;
|
|||||||
import android.view.ViewConfiguration;
|
import android.view.ViewConfiguration;
|
||||||
|
|
||||||
import com.stardust.autojs.core.inputevent.InputDevices;
|
import com.stardust.autojs.core.inputevent.InputDevices;
|
||||||
|
import com.stardust.autojs.core.util.ProcessShell;
|
||||||
import com.stardust.autojs.engine.RootAutomatorEngine;
|
import com.stardust.autojs.engine.RootAutomatorEngine;
|
||||||
|
import com.stardust.autojs.runtime.api.AbstractShell;
|
||||||
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
||||||
import com.stardust.util.ScreenMetrics;
|
import com.stardust.util.ScreenMetrics;
|
||||||
|
|
||||||
+1
-1
@@ -6,8 +6,8 @@ import android.util.Log;
|
|||||||
|
|
||||||
import com.stardust.autojs.core.inputevent.InputEventCodes;
|
import com.stardust.autojs.core.inputevent.InputEventCodes;
|
||||||
import com.stardust.autojs.core.inputevent.InputEventObserver;
|
import com.stardust.autojs.core.inputevent.InputEventObserver;
|
||||||
|
import com.stardust.autojs.core.inputevent.RootAutomator;
|
||||||
import com.stardust.autojs.engine.RootAutomatorEngine;
|
import com.stardust.autojs.engine.RootAutomatorEngine;
|
||||||
import com.stardust.autojs.runtime.api.RootAutomator;
|
|
||||||
import com.stardust.pio.UncheckedIOException;
|
import com.stardust.pio.UncheckedIOException;
|
||||||
import com.stardust.util.ScreenMetrics;
|
import com.stardust.util.ScreenMetrics;
|
||||||
|
|
||||||
|
|||||||
-2
@@ -1,12 +1,10 @@
|
|||||||
package com.stardust.autojs.core.record.inputevent;
|
package com.stardust.autojs.core.record.inputevent;
|
||||||
|
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import com.stardust.autojs.core.inputevent.InputEventCodes;
|
import com.stardust.autojs.core.inputevent.InputEventCodes;
|
||||||
import com.stardust.autojs.core.inputevent.InputEventObserver;
|
import com.stardust.autojs.core.inputevent.InputEventObserver;
|
||||||
import com.stardust.autojs.engine.RootAutomatorEngine;
|
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.getDeviceScreenHeight;
|
||||||
import static com.stardust.util.ScreenMetrics.getDeviceScreenWidth;
|
import static com.stardust.util.ScreenMetrics.getDeviceScreenWidth;
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
package com.stardust.autojs.core.templatematching;
|
package com.stardust.autojs.core.templatematching;
|
||||||
|
|
||||||
import android.graphics.Color;
|
|
||||||
import android.media.Image;
|
import android.media.Image;
|
||||||
|
|
||||||
import com.stardust.autojs.runtime.api.image.Images;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Stardust on 2017/10/5.
|
* Created by Stardust on 2017/10/5.
|
||||||
*/
|
*/
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.stardust.autojs.runtime.api.ui;
|
package com.stardust.autojs.core.ui;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
+3
-15
@@ -1,30 +1,18 @@
|
|||||||
package com.stardust.autojs.runtime.api.ui;
|
package com.stardust.autojs.core.ui;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.text.InputType;
|
import android.text.InputType;
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.nickandjerry.dynamiclayoutinflator.lib.DynamicLayoutInflator;
|
import com.nickandjerry.dynamiclayoutinflator.lib.DynamicLayoutInflator;
|
||||||
import com.stardust.autojs.runtime.api.ui.widget.JsFrameLayout;
|
import com.stardust.autojs.core.ui.widget.JsFrameLayout;
|
||||||
import com.stardust.autojs.runtime.api.ui.xml.XmlConverter;
|
import com.stardust.autojs.core.ui.xml.XmlConverter;
|
||||||
import com.stardust.util.MapEntries;
|
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 java.util.Map;
|
||||||
|
|
||||||
import javax.xml.parsers.ParserConfigurationException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Stardust on 2017/5/14.
|
* Created by Stardust on 2017/5/14.
|
||||||
*/
|
*/
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.stardust.autojs.runtime.api.ui;
|
package com.stardust.autojs.core.ui;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.stardust.autojs.runtime.api.ui;
|
package com.stardust.autojs.core.ui;
|
||||||
|
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
+1
-4
@@ -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.content.Context;
|
||||||
import android.os.Build;
|
|
||||||
import android.support.annotation.RequiresApi;
|
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.widget.Button;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Stardust on 2017/5/15.
|
* Created by Stardust on 2017/5/15.
|
||||||
+1
-2
@@ -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.content.Context;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.widget.EditText;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Stardust on 2017/5/15.
|
* Created by Stardust on 2017/5/15.
|
||||||
+2
-3
@@ -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.content.Context;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
@@ -11,8 +11,7 @@ import android.util.AttributeSet;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
|
|
||||||
import com.nickandjerry.dynamiclayoutinflator.lib.DynamicLayoutInflator;
|
import com.stardust.autojs.core.ui.JsViewHelper;
|
||||||
import com.stardust.autojs.runtime.api.ui.JsViewHelper;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Stardust on 2017/5/14.
|
* Created by Stardust on 2017/5/14.
|
||||||
+2
-3
@@ -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.content.Context;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
@@ -8,8 +8,7 @@ import android.util.AttributeSet;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
|
|
||||||
import com.nickandjerry.dynamiclayoutinflator.lib.DynamicLayoutInflator;
|
import com.stardust.autojs.core.ui.JsViewHelper;
|
||||||
import com.stardust.autojs.runtime.api.ui.JsViewHelper;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Stardust on 2017/5/14.
|
* Created by Stardust on 2017/5/14.
|
||||||
+2
-3
@@ -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.content.Context;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
@@ -7,8 +7,7 @@ import android.util.AttributeSet;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.RelativeLayout;
|
import android.widget.RelativeLayout;
|
||||||
|
|
||||||
import com.nickandjerry.dynamiclayoutinflator.lib.DynamicLayoutInflator;
|
import com.stardust.autojs.core.ui.JsViewHelper;
|
||||||
import com.stardust.autojs.runtime.api.ui.JsViewHelper;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Stardust on 2017/5/14.
|
* Created by Stardust on 2017/5/14.
|
||||||
+1
-4
@@ -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.content.Context;
|
||||||
import android.os.Build;
|
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.annotation.RequiresApi;
|
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Stardust on 2017/5/15.
|
* Created by Stardust on 2017/5/15.
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.stardust.autojs.runtime.api.ui.xml;
|
package com.stardust.autojs.core.ui.xml;
|
||||||
|
|
||||||
import org.w3c.dom.Node;
|
import org.w3c.dom.Node;
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.stardust.autojs.runtime.api.ui.xml;
|
package com.stardust.autojs.core.ui.xml;
|
||||||
|
|
||||||
import org.w3c.dom.Node;
|
import org.w3c.dom.Node;
|
||||||
|
|
||||||
+1
-4
@@ -1,6 +1,4 @@
|
|||||||
package com.stardust.autojs.runtime.api.ui.xml;
|
package com.stardust.autojs.core.ui.xml;
|
||||||
|
|
||||||
import com.stardust.util.MapEntries;
|
|
||||||
|
|
||||||
import org.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
import org.w3c.dom.NamedNodeMap;
|
import org.w3c.dom.NamedNodeMap;
|
||||||
@@ -11,7 +9,6 @@ import org.xml.sax.SAXException;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.xml.parsers.DocumentBuilder;
|
import javax.xml.parsers.DocumentBuilder;
|
||||||
import javax.xml.parsers.DocumentBuilderFactory;
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||||||
+2
-3
@@ -1,8 +1,9 @@
|
|||||||
package com.stardust.autojs.runtime.api;
|
package com.stardust.autojs.core.util;
|
||||||
|
|
||||||
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.stardust.autojs.runtime.api.AbstractShell;
|
||||||
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
||||||
import com.stardust.autojs.util.ProcessUtils;
|
import com.stardust.autojs.util.ProcessUtils;
|
||||||
import com.stardust.pio.UncheckedIOException;
|
import com.stardust.pio.UncheckedIOException;
|
||||||
@@ -12,8 +13,6 @@ import java.io.DataOutputStream;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.io.Reader;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Stardust on 2017/1/20.
|
* Created by Stardust on 2017/1/20.
|
||||||
+2
-1
@@ -1,10 +1,11 @@
|
|||||||
package com.stardust.autojs.runtime.api;
|
package com.stardust.autojs.core.util;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.stardust.autojs.runtime.api.AbstractShell;
|
||||||
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
||||||
import com.stardust.autojs.runtime.ScriptRuntime;
|
import com.stardust.autojs.runtime.ScriptRuntime;
|
||||||
import com.stardust.lang.ThreadCompat;
|
import com.stardust.lang.ThreadCompat;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.stardust.autojs.runtime.api;
|
package com.stardust.autojs.core.web;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.stardust.autojs.runtime.api;
|
package com.stardust.autojs.core.web;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.webkit.ValueCallback;
|
import android.webkit.ValueCallback;
|
||||||
@@ -8,6 +8,7 @@ import android.os.MessageQueue;
|
|||||||
import com.stardust.autojs.runtime.api.Loopers;
|
import com.stardust.autojs.runtime.api.Loopers;
|
||||||
import com.stardust.autojs.script.JavaScriptSource;
|
import com.stardust.autojs.script.JavaScriptSource;
|
||||||
import com.stardust.autojs.script.ScriptSource;
|
import com.stardust.autojs.script.ScriptSource;
|
||||||
|
import com.stardust.util.Callback;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Stardust on 2017/7/28.
|
* Created by Stardust on 2017/7/28.
|
||||||
@@ -24,18 +25,27 @@ public class LoopBasedJavaScriptEngine extends RhinoJavaScriptEngine {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object execute(final JavaScriptSource source) {
|
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() {
|
Runnable r = new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
LoopBasedJavaScriptEngine.super.execute(source);
|
Object o = LoopBasedJavaScriptEngine.super.execute((JavaScriptSource) source);
|
||||||
|
if (callback != null)
|
||||||
|
callback.call(o);
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
mHandler.post(r);
|
mHandler.post(r);
|
||||||
if (!mLooping && Looper.myLooper() != Looper.getMainLooper()) {
|
if (!mLooping && Looper.myLooper() != Looper.getMainLooper()) {
|
||||||
mLooping = true;
|
mLooping = true;
|
||||||
Looper.loop();
|
Looper.loop();
|
||||||
|
mLooping = false;
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -3,10 +3,8 @@ package com.stardust.autojs.engine;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.Patterns;
|
|
||||||
|
|
||||||
import com.stardust.autojs.runtime.api.AbstractShell;
|
import com.stardust.autojs.core.util.ProcessShell;
|
||||||
import com.stardust.autojs.runtime.api.ProcessShell;
|
|
||||||
import com.stardust.autojs.core.inputevent.InputDevices;
|
import com.stardust.autojs.core.inputevent.InputDevices;
|
||||||
import com.stardust.autojs.runtime.exception.ScriptException;
|
import com.stardust.autojs.runtime.exception.ScriptException;
|
||||||
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
||||||
|
|||||||
+58
@@ -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();
|
engine.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object doExecution(ScriptEngine engine) {
|
protected Object doExecution(ScriptEngine engine) {
|
||||||
engine.setTag(ScriptEngine.TAG_SOURCE, getSource());
|
engine.setTag(ScriptEngine.TAG_SOURCE, getSource());
|
||||||
getListener().onStart(this);
|
getListener().onStart(this);
|
||||||
Object result = null;
|
Object result = null;
|
||||||
@@ -64,14 +64,19 @@ public class RunnableScriptExecution extends ScriptExecution.AbstractScriptExecu
|
|||||||
sleep(delay);
|
sleep(delay);
|
||||||
ScriptSource source = getSource();
|
ScriptSource source = getSource();
|
||||||
for (int i = 0; i < times; i++) {
|
for (int i = 0; i < times; i++) {
|
||||||
result = engine.execute(source);
|
result = execute(engine, source);
|
||||||
sleep(interval);
|
sleep(interval);
|
||||||
}
|
}
|
||||||
getListener().onSuccess(this, result);
|
getListener().onSuccess(this, result);
|
||||||
return 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) {
|
if (i <= 0) {
|
||||||
return;
|
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.Events;
|
||||||
import com.stardust.autojs.runtime.api.Loopers;
|
import com.stardust.autojs.runtime.api.Loopers;
|
||||||
import com.stardust.autojs.runtime.api.Timers;
|
import com.stardust.autojs.runtime.api.Timers;
|
||||||
import com.stardust.autojs.runtime.api.UiSelector;
|
import com.stardust.autojs.core.accessibility.UiSelector;
|
||||||
import com.stardust.autojs.runtime.api.image.Images;
|
import com.stardust.autojs.runtime.api.Images;
|
||||||
import com.stardust.autojs.runtime.api.image.ScreenCaptureRequester;
|
import com.stardust.autojs.core.image.ScreenCaptureRequester;
|
||||||
import com.stardust.autojs.runtime.api.ui.Dialogs;
|
import com.stardust.autojs.runtime.api.Dialogs;
|
||||||
import com.stardust.autojs.runtime.exception.ScriptEnvironmentException;
|
import com.stardust.autojs.runtime.exception.ScriptEnvironmentException;
|
||||||
import com.stardust.autojs.runtime.exception.ScriptException;
|
import com.stardust.autojs.runtime.exception.ScriptException;
|
||||||
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
||||||
import com.stardust.autojs.core.accessibility.SimpleActionAutomator;
|
import com.stardust.autojs.core.accessibility.SimpleActionAutomator;
|
||||||
import com.stardust.concurrent.VolatileBox;
|
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.pio.UncheckedIOException;
|
||||||
import com.stardust.util.ClipboardUtil;
|
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.ScreenMetrics;
|
||||||
import com.stardust.util.SdkVersionUtil;
|
import com.stardust.util.SdkVersionUtil;
|
||||||
import com.stardust.util.Supplier;
|
import com.stardust.util.Supplier;
|
||||||
|
|||||||
@@ -28,10 +28,10 @@ public abstract class AbstractShell {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static final String COMMAND_SU = "su";
|
protected static final String COMMAND_SU = "su";
|
||||||
static final String COMMAND_SH = "sh";
|
protected static final String COMMAND_SH = "sh";
|
||||||
static final String COMMAND_EXIT = "exit\n";
|
protected static final String COMMAND_EXIT = "exit\n";
|
||||||
static final String COMMAND_LINE_END = "\n";
|
protected static final String COMMAND_LINE_END = "\n";
|
||||||
|
|
||||||
|
|
||||||
private int mTouchDevice = -1;
|
private int mTouchDevice = -1;
|
||||||
|
|||||||
+2
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.stardust.autojs.runtime.api.ui;
|
package com.stardust.autojs.runtime.api;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -9,6 +9,7 @@ import com.afollestad.materialdialogs.MaterialDialog;
|
|||||||
import com.afollestad.materialdialogs.Theme;
|
import com.afollestad.materialdialogs.Theme;
|
||||||
import com.stardust.autojs.R;
|
import com.stardust.autojs.R;
|
||||||
import com.stardust.autojs.annotation.ScriptInterface;
|
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.exception.ScriptInterruptedException;
|
||||||
import com.stardust.autojs.runtime.api.AppUtils;
|
import com.stardust.autojs.runtime.api.AppUtils;
|
||||||
import com.stardust.concurrent.VolatileBox;
|
import com.stardust.concurrent.VolatileBox;
|
||||||
@@ -10,6 +10,7 @@ import android.view.accessibility.AccessibilityEvent;
|
|||||||
|
|
||||||
import com.stardust.autojs.R;
|
import com.stardust.autojs.R;
|
||||||
import com.stardust.autojs.core.accessibility.AccessibilityBridge;
|
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.ScriptBridges;
|
||||||
import com.stardust.autojs.runtime.exception.ScriptException;
|
import com.stardust.autojs.runtime.exception.ScriptException;
|
||||||
import com.stardust.autojs.core.inputevent.InputEventObserver;
|
import com.stardust.autojs.core.inputevent.InputEventObserver;
|
||||||
|
|||||||
+4
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.stardust.autojs.runtime.api.image;
|
package com.stardust.autojs.runtime.api;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -15,6 +15,9 @@ import android.view.Display;
|
|||||||
import android.view.Surface;
|
import android.view.Surface;
|
||||||
import android.view.WindowManager;
|
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.ScriptRuntime;
|
||||||
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
||||||
import com.stardust.autojs.annotation.ScriptVariable;
|
import com.stardust.autojs.annotation.ScriptVariable;
|
||||||
@@ -6,7 +6,6 @@ import android.os.MessageQueue;
|
|||||||
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
||||||
import com.stardust.lang.ThreadCompat;
|
import com.stardust.lang.ThreadCompat;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -15,10 +14,15 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||||||
|
|
||||||
public class Loopers {
|
public class Loopers {
|
||||||
|
|
||||||
|
public interface LooperQuitHandler {
|
||||||
|
boolean shouldQuit();
|
||||||
|
}
|
||||||
|
|
||||||
public volatile boolean waitWhenIdle = false;
|
public volatile boolean waitWhenIdle = false;
|
||||||
private volatile Looper mServantLooper;
|
private volatile Looper mServantLooper;
|
||||||
private static volatile ConcurrentHashMap<Thread, Looper> sLoopers = new ConcurrentHashMap<>();
|
private static volatile ConcurrentHashMap<Thread, Looper> sLoopers = new ConcurrentHashMap<>();
|
||||||
private Timers mTimers;
|
private Timers mTimers;
|
||||||
|
private LooperQuitHandler mLooperQuitHandler;
|
||||||
|
|
||||||
public Loopers(Timers timers) {
|
public Loopers(Timers timers) {
|
||||||
mTimers = timers;
|
mTimers = timers;
|
||||||
@@ -29,8 +33,11 @@ public class Loopers {
|
|||||||
@Override
|
@Override
|
||||||
public boolean queueIdle() {
|
public boolean queueIdle() {
|
||||||
Looper l = Looper.myLooper();
|
Looper l = Looper.myLooper();
|
||||||
if (l != null && shouldQuitLooper())
|
if (l != null && shouldQuitLooper()) {
|
||||||
l.quit();
|
if (mLooperQuitHandler != null && mLooperQuitHandler.shouldQuit()) {
|
||||||
|
l.quit();
|
||||||
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -102,4 +109,8 @@ public class Loopers {
|
|||||||
if (looper != null)
|
if (looper != null)
|
||||||
looper.quit();
|
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.Handler;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
|
import android.util.Log;
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
|
|
||||||
import com.stardust.autojs.runtime.ScriptBridges;
|
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();
|
ensureHandler();
|
||||||
mCallbackMaxId++;
|
mCallbackMaxId++;
|
||||||
final int id = mCallbackMaxId;
|
final int id = mCallbackMaxId;
|
||||||
|
|||||||
+3
-1
@@ -1,7 +1,9 @@
|
|||||||
package com.stardust.autojs.runtime.api.ui;
|
package com.stardust.autojs.runtime.api;
|
||||||
|
|
||||||
import android.content.Context;
|
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 com.stardust.autojs.rhino.ProxyObject;
|
||||||
|
|
||||||
import org.mozilla.javascript.Scriptable;
|
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 android.util.Log;
|
||||||
|
|
||||||
import com.stardust.autojs.runtime.api.ProcessShell;
|
import com.stardust.autojs.core.util.ProcessShell;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,7 @@
|
|||||||
package com.stardust.autojs;
|
package com.stardust.autojs;
|
||||||
|
|
||||||
import com.stardust.autojs.runtime.api.image.ColorDetector;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Example local unit test, which will execute on the development machine (host).
|
* Example local unit test, which will execute on the development machine (host).
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.stardust.autojs.runtime.api.ui;
|
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.junit.Test;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
|
|||||||
@@ -134,21 +134,21 @@ public class UiObject extends AccessibilityNodeInfoCompat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public CharSequence text() {
|
public String text() {
|
||||||
CharSequence t = getText();
|
CharSequence t = getText();
|
||||||
return t == null ? "" : t;
|
return t == null ? "" : t.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public CharSequence desc() {
|
public String desc() {
|
||||||
return getContentDescription();
|
return getContentDescription().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public CharSequence className() {
|
public String className() {
|
||||||
return getClassName();
|
return getClassName().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public CharSequence packageName() {
|
public String packageName() {
|
||||||
return getPackageName();
|
return getPackageName().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean performAction(int action, ActionArgument... arguments) {
|
public boolean performAction(int action, ActionArgument... arguments) {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import android.provider.Settings;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import com.stardust.auojs.inrt.App;
|
import com.stardust.auojs.inrt.App;
|
||||||
import com.stardust.autojs.runtime.api.ProcessShell;
|
import com.stardust.autojs.core.util.ProcessShell;
|
||||||
|
|
||||||
import java.util.Locale;
|
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.ScriptRuntime;
|
||||||
import com.stardust.autojs.runtime.api.AbstractShell;
|
import com.stardust.autojs.runtime.api.AbstractShell;
|
||||||
import com.stardust.autojs.runtime.api.AppUtils;
|
import com.stardust.autojs.runtime.api.AppUtils;
|
||||||
import com.stardust.autojs.runtime.api.Console;
|
import com.stardust.autojs.core.util.Shell;
|
||||||
import com.stardust.autojs.core.console.NoOpConsole;
|
import com.stardust.autojs.core.image.ScreenCaptureRequestActivity;
|
||||||
import com.stardust.autojs.runtime.api.Shell;
|
import com.stardust.autojs.core.image.ScreenCaptureRequester;
|
||||||
import com.stardust.autojs.runtime.api.image.ScreenCaptureRequestActivity;
|
|
||||||
import com.stardust.autojs.runtime.api.image.ScreenCaptureRequester;
|
|
||||||
import com.stardust.autojs.core.console.StardustConsole;
|
import com.stardust.autojs.core.console.StardustConsole;
|
||||||
import com.stardust.autojs.runtime.exception.ScriptException;
|
import com.stardust.autojs.runtime.exception.ScriptException;
|
||||||
import com.stardust.autojs.script.AutoFileSource;
|
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.AccessibilityInfoProvider;
|
||||||
import com.stardust.view.accessibility.AccessibilityService;
|
import com.stardust.view.accessibility.AccessibilityService;
|
||||||
import com.stardust.view.accessibility.AccessibilityServiceUtils;
|
import com.stardust.view.accessibility.AccessibilityServiceUtils;
|
||||||
import com.stardust.view.accessibility.LayoutInspector;
|
|
||||||
import com.stardust.view.accessibility.NotificationListener;
|
import com.stardust.view.accessibility.NotificationListener;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user