Add floating console support

This commit is contained in:
hyb1996
2017-05-03 01:20:29 +08:00
parent 68706fbd98
commit 7473d7c6a5
60 changed files with 1072 additions and 561 deletions

View File

@@ -2,24 +2,21 @@ package com.stardust.scriptdroid.autojs;
import android.accessibilityservice.AccessibilityService;
import android.content.Context;
import android.os.Handler;
import android.support.annotation.Nullable;
import com.flurry.android.FlurryAgent;
import com.stardust.autojs.ScriptEngineService;
import com.stardust.autojs.ScriptEngineServiceBuilder;
import com.stardust.autojs.ScriptExecutionListener;
import com.stardust.autojs.engine.JavaScriptEngine;
import com.stardust.autojs.engine.NodeJsJavaScriptEngineManager;
import com.stardust.autojs.runtime.*;
import com.stardust.autojs.script.ScriptSource;
import com.stardust.automator.AccessibilityEventCommandHost;
import com.stardust.automator.simple_action.SimpleActionPerformHost;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.scripts.StorageScriptProvider;
import com.stardust.scriptdroid.ui.console.StardustConsole;
import com.stardust.util.Supplier;
import com.stardust.util.UiHandler;
import com.stardust.view.accessibility.AccessibilityInfoProvider;
import com.stardust.scriptdroid.layout_inspector.LayoutInspector;
import com.stardust.scriptdroid.record.accessibility.AccessibilityActionRecorder;
@@ -51,54 +48,32 @@ public class AutoJs implements AccessibilityBridge {
private final LayoutInspector mLayoutInspector = new LayoutInspector();
private final ScriptEngineService mScriptEngineService;
private final AccessibilityInfoProvider mAccessibilityInfoProvider;
private final Handler mUiHandler;
private final UiHandler mUiHandler;
private AutoJs(final Context context) {
mUiHandler = new Handler(context.getMainLooper());
mUiHandler = new UiHandler(context);
mAccessibilityInfoProvider = new AccessibilityInfoProvider(context.getPackageManager());
NodeJsJavaScriptEngineManager manager = new NodeJsJavaScriptEngineManager(context);
manager.setRequirePath(StorageScriptProvider.DEFAULT_DIRECTORY_PATH);
mScriptEngineService = new ScriptEngineServiceBuilder()
.context(context)
.uiHandler(mUiHandler)
.globalConsole(new TimberConsole())
.engineManger(manager)
.runtime(new Supplier<ScriptRuntime>() {
@Override
public ScriptRuntime get() {
return new ScriptRuntime(context, mUiHandler, new TimberConsole(), AutoJs.this);
return new ScriptRuntime(mUiHandler, new StardustConsole(mUiHandler), AutoJs.this);
}
})
.build();
addAccessibilityServiceDelegates();
setDefaultScriptExecutionListener(mScriptEngineService);
}
private static void setDefaultScriptExecutionListener(ScriptEngineService scriptEngineService) {
final ScriptExecutionListener listener = scriptEngineService.getDefaultScriptExecutionListener();
scriptEngineService.setDefaultScriptExecutionListener(new ScriptExecutionListener() {
@Override
public void onStart(JavaScriptEngine engine, ScriptSource source) {
listener.onStart(engine, source);
FlurryAgent.logEvent("EXEC:" + source.toString());
}
@Override
public void onSuccess(JavaScriptEngine engine, ScriptSource source, Object result) {
listener.onSuccess(engine, source, result);
}
@Override
public void onException(JavaScriptEngine engine, ScriptSource source, Exception e) {
listener.onException(engine, source, e);
}
});
mScriptEngineService.registerGlobalScriptExecutionListener(new ScriptExecutionGlobalListener());
}
private void addAccessibilityServiceDelegates() {
AccessibilityWatchDogService.addDelegate(100, mAccessibilityInfoProvider);
// AccessibilityWatchDogService.addDelegate(200, mLayoutInspector);
AccessibilityWatchDogService.addDelegate(300, mAccessibilityActionRecorder);
// AccessibilityWatchDogService.addDelegate(400, mSimpleActionPerformHost);
//AccessibilityWatchDogService.addDelegate(500, mAccessibilityEventCommandHost);