add: auto() function and two mode of fetching rootInActiveWindow

This commit is contained in:
hyb1996
2017-07-31 10:15:39 +08:00
parent dc9f8f417a
commit 33cdef21c6
13 changed files with 163 additions and 104 deletions

View File

@@ -1,4 +1,4 @@
"auto";
auto();
var 好友验证信息 = "AutoJs自动添加群好友";
var 延迟 = 500;

View File

@@ -1,4 +1,4 @@
"auto";
auto("fast");
toast("请打开一个聊天窗口");

View File

@@ -5,7 +5,6 @@ import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import com.stardust.autojs.runtime.api.AutomatorConfig;
import com.stardust.automator.AccessibilityEventCommandHost;
import com.stardust.scriptdroid.autojs.AutoJs;
import org.mozilla.javascript.NativeArray;
@@ -25,9 +24,7 @@ public class Pref {
private static SharedPreferences.OnSharedPreferenceChangeListener onSharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.equals(getString(R.string.key_run_mode))) {
AutoJs.getInstance().getCommandHost().setRunMode(getRunModeFromValue(sharedPreferences.getString(key, null)));
} else if (key.equals(getString(R.string.key_guard_mode))) {
if (key.equals(getString(R.string.key_guard_mode))) {
AutomatorConfig.setIsUnintendedGuardEnabled(sharedPreferences.getBoolean(getString(R.string.key_guard_mode), false));
}
}
@@ -37,19 +34,6 @@ public class Pref {
AutomatorConfig.setIsUnintendedGuardEnabled(def().getBoolean(getString(R.string.key_guard_mode), false));
}
private static int getRunModeFromValue(String value) {
if (value == null)
return AccessibilityEventCommandHost.RUN_MODE_THREAD_POOL;
switch (value) {
case "KEY_THREAD_POOL":
return AccessibilityEventCommandHost.RUN_MODE_THREAD_POOL;
case "KEY_NEW_THREAD_EVERY_TIME":
return AccessibilityEventCommandHost.RUN_MODE_NEW_THREAD_EVERY_TIME;
default:
return AccessibilityEventCommandHost.RUN_MODE_SINGLE_THREAD;
}
}
private static SharedPreferences def() {
return PreferenceManager.getDefaultSharedPreferences(App.getApp());
}

View File

@@ -42,7 +42,7 @@ import com.stardust.view.accessibility.LayoutInspector;
* Created by Stardust on 2017/4/2.
*/
public class AutoJs implements AccessibilityBridge {
public class AutoJs {
private static AutoJs instance;
@@ -56,36 +56,29 @@ public class AutoJs implements AccessibilityBridge {
private final AccessibilityActionRecorder mAccessibilityActionRecorder = new AccessibilityActionRecorder();
private final LayoutInspector mLayoutInspector = new LayoutInspector();
private final ScriptEngineService mScriptEngineService;
private final AccessibilityInfoProvider mAccessibilityInfoProvider;
private final Context mContext;
private final UiHandler mUiHandler;
private final AppUtils mAppUtils;
private final ScreenCaptureRequester mScreenCaptureRequester = new ScreenCaptureRequester.AbstractScreenCaptureRequester() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void request() {
Activity activity = mAppUtils.getCurrentActivity();
if (activity instanceof OnActivityResultDelegate.DelegateHost) {
ScreenCaptureRequester requester = new ActivityScreenCaptureRequester(
((OnActivityResultDelegate.DelegateHost) activity).getOnActivityResultDelegateMediator(), activity);
requester.setOnActivityResultCallback(mCallback);
requester.request();
} else {
ScreenCaptureRequestActivity.request(mUiHandler.getContext(), mCallback);
}
}
};
private final AccessibilityInfoProvider mAccessibilityInfoProvider;
private final ScreenCaptureRequester mScreenCaptureRequester = new ScreenCaptureRequesterImpl();
private final ScriptEngineService mScriptEngineService;
private AutoJs(final Context context) {
mContext = context;
mUiHandler = new UiHandler(context);
mAppUtils = new AppUtils(context);
mAccessibilityInfoProvider = new AccessibilityInfoProvider(context.getPackageManager());
ScriptEngineManager manager = createScriptEngineManager(context);
mScriptEngineService = buildScriptEngineService();
addAccessibilityServiceDelegates();
mScriptEngineService.registerGlobalScriptExecutionListener(new ScriptExecutionGlobalListener());
registerActivityLifecycleCallbacks();
}
private ScriptEngineService buildScriptEngineService() {
ScriptEngineManager manager = createScriptEngineManager(mContext);
final Console globalConsole = new JraskaConsole();
mScriptEngineService = new ScriptEngineServiceBuilder()
return new ScriptEngineServiceBuilder()
.uiHandler(mUiHandler)
.globalConsole(globalConsole)
.engineManger(manager)
@@ -96,21 +89,18 @@ public class AutoJs implements AccessibilityBridge {
return new ScriptRuntime.Builder()
.setConsole(new StardustConsole(mUiHandler, globalConsole))
.setScreenCaptureRequester(mScreenCaptureRequester)
.setAccessibilityBridge(AutoJs.this)
.setAccessibilityBridge(new AccessibilityBridgeImpl())
.setUiHandler(mUiHandler)
.setAppUtils(mAppUtils)
.setShellSupplier(new Supplier<AbstractShell>() {
@Override
public AbstractShell get() {
return new Shell(context, true);
return new Shell(mContext, true);
}
}).build();
}
})
.build();
addAccessibilityServiceDelegates();
mScriptEngineService.registerGlobalScriptExecutionListener(new ScriptExecutionGlobalListener());
registerActivityLifecycleCallbacks();
}
private void registerActivityLifecycleCallbacks() {
@@ -159,14 +149,16 @@ public class AutoJs implements AccessibilityBridge {
return mLayoutInspector;
}
@Nullable
@Override
public AccessibilityService getService() {
return AccessibilityService.getInstance();
public ScriptEngineService getScriptEngineService() {
return mScriptEngineService;
}
@Override
public void ensureServiceEnabled() {
public AccessibilityInfoProvider getInfoProvider() {
return mAccessibilityInfoProvider;
}
public void ensureAccessibilityServiceEnabled() {
if (AccessibilityService.getInstance() == null) {
String errorMessage = null;
if (AccessibilityServiceUtils.isAccessibilityServiceEnabled(App.getApp(), AccessibilityService.class)) {
@@ -187,12 +179,40 @@ public class AutoJs implements AccessibilityBridge {
}
}
@Override
public AccessibilityInfoProvider getInfoProvider() {
return mAccessibilityInfoProvider;
private class AccessibilityBridgeImpl extends AccessibilityBridge {
@Override
public void ensureServiceEnabled() {
AutoJs.this.ensureAccessibilityServiceEnabled();
}
@Nullable
@Override
public AccessibilityService getService() {
return AccessibilityService.getInstance();
}
@Override
public AccessibilityInfoProvider getInfoProvider() {
return mAccessibilityInfoProvider;
}
}
public ScriptEngineService getScriptEngineService() {
return mScriptEngineService;
private class ScreenCaptureRequesterImpl extends ScreenCaptureRequester.AbstractScreenCaptureRequester {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void request() {
Activity activity = mAppUtils.getCurrentActivity();
if (activity instanceof OnActivityResultDelegate.DelegateHost) {
ScreenCaptureRequester requester = new ActivityScreenCaptureRequester(
((OnActivityResultDelegate.DelegateHost) activity).getOnActivityResultDelegateMediator(), activity);
requester.setOnActivityResultCallback(mCallback);
requester.request();
} else {
ScreenCaptureRequestActivity.request(mContext, mCallback);
}
}
}
}