diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index d1f39408..ae3cf381 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -12,6 +12,7 @@
+
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 9a7977f1..58fc8a76 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -7,6 +7,7 @@
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 78bba16f..8d4b0ae2 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -97,7 +97,6 @@ dependencies {
compile 'com.android.support:multidex:1.0.1'
// Personal libraries
compile 'com.github.hyb1996:MutableTheme:0.2.2'
- compile 'com.github.hyb1996:EnhancedFloaty:0.17'
// Material Dialogs
compile 'com.afollestad.material-dialogs:core:0.9.2.3'
// Gson
@@ -121,10 +120,6 @@ dependencies {
compile 'com.android.volley:volley:1.0.0'
compile 'com.flurry.android:analytics:7.0.0@aar'
compile 'com.pushtorefresh.storio:sqlite:1.12.3'
- // Terminal emulator
- compile(name: 'libtermexec-release', ext: 'aar')
- compile(name: 'emulatorview-release', ext: 'aar')
- compile(name: 'term-debug', ext: 'aar')
// 920 Text Editor
compile 'com.afollestad.material-dialogs:commons:0.9.2.3'
compile 'com.makeramen:roundedimageview:2.2.1'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 54ccb915..fda5ea51 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -24,7 +24,7 @@
android:theme="@style/AppTheme"
tools:replace="android:label, android:icon, android:allowBackup">
-
-
-
-
-
-
-
-
-
-
-
+
+
+
() {
@Override
public com.stardust.autojs.runtime.ScriptRuntime get() {
return new ScriptRuntime.Builder()
- .setConsole(new StardustConsole(mUiHandler))
+ .setConsole(new StardustConsole(mUiHandler, globalConsole))
.setScreenCaptureRequester(mScreenCaptureRequester)
.setAccessibilityBridge(AutoJs.this)
.setUiHandler(mUiHandler)
@@ -109,7 +106,7 @@ public class AutoJs implements AccessibilityBridge {
.setShellSupplier(new Supplier() {
@Override
public AbstractShell get() {
- return new Shell(true);
+ return new Shell(context, true);
}
}).build();
}
@@ -142,20 +139,14 @@ public class AutoJs implements AccessibilityBridge {
}
private ScriptEngineManager createScriptEngineManager(Context context) {
- RhinoJavaScriptEngineManager manager = new RhinoJavaScriptEngineManager(context);
- try {
- manager.setInitScript(PFile.read(context.getAssets().open(INIT_SCRIPT_PATH)));
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- return manager;
+ return new RhinoJavaScriptEngineManager(context);
}
private void addAccessibilityServiceDelegates() {
- AccessibilityWatchDogService.addDelegate(100, mAccessibilityInfoProvider);
- AccessibilityWatchDogService.addDelegate(300, mAccessibilityActionRecorder);
- // AccessibilityWatchDogService.addDelegate(400, mSimpleActionPerformHost);
- //AccessibilityWatchDogService.addDelegate(500, mAccessibilityEventCommandHost);
+ AccessibilityService.addDelegate(100, mAccessibilityInfoProvider);
+ AccessibilityService.addDelegate(300, mAccessibilityActionRecorder);
+ // AccessibilityService.addDelegate(400, mSimpleActionPerformHost);
+ //AccessibilityService.addDelegate(500, mAccessibilityEventCommandHost);
}
public AccessibilityActionRecorder getAccessibilityActionRecorder() {
@@ -186,15 +177,15 @@ public class AutoJs implements AccessibilityBridge {
@Nullable
@Override
- public AccessibilityService getService() {
- return AccessibilityWatchDogService.getInstance();
+ public android.accessibilityservice.AccessibilityService getService() {
+ return AccessibilityService.getInstance();
}
@Override
public void ensureServiceEnabled() {
- if (AccessibilityWatchDogService.getInstance() == null) {
+ if (AccessibilityService.getInstance() == null) {
String errorMessage = null;
- if (AccessibilityServiceUtils.isAccessibilityServiceEnabled(App.getApp(), AccessibilityWatchDogService.class)) {
+ if (AccessibilityServiceUtils.isAccessibilityServiceEnabled(App.getApp(), AccessibilityService.class)) {
errorMessage = App.getApp().getString(R.string.text_auto_operate_service_enabled_but_not_running);
} else {
if (Pref.enableAccessibilityServiceByRoot()) {
diff --git a/app/src/main/java/com/stardust/scriptdroid/autojs/ScriptRuntime.java b/app/src/main/java/com/stardust/scriptdroid/autojs/ScriptRuntime.java
deleted file mode 100644
index 5c052e38..00000000
--- a/app/src/main/java/com/stardust/scriptdroid/autojs/ScriptRuntime.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.stardust.scriptdroid.autojs;
-
-import com.stardust.autojs.runtime.AccessibilityBridge;
-import com.stardust.autojs.runtime.ScriptVariable;
-import com.stardust.autojs.runtime.api.AbstractShell;
-import com.stardust.autojs.runtime.api.AppUtils;
-import com.stardust.autojs.runtime.api.Console;
-import com.stardust.scriptdroid.autojs.api.Dialogs;
-import com.stardust.util.Supplier;
-import com.stardust.util.UiHandler;
-
-/**
- * Created by Stardust on 2017/5/8.
- */
-
-public class ScriptRuntime extends com.stardust.autojs.runtime.ScriptRuntime {
-
-
- public static class Builder extends com.stardust.autojs.runtime.ScriptRuntime.Builder {
-
-
- public Builder() {
-
- }
-
-
- public ScriptRuntime build() {
- return new ScriptRuntime(this);
- }
-
- }
-
- @ScriptVariable
- public Dialogs dialogs;
-
- private ScriptRuntime(Builder builder) {
- super(builder);
- dialogs = new Dialogs(app, getUiHandler());
- }
-
-
-}
diff --git a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/MainMenuNavigatorContent.java b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/MainMenuNavigatorContent.java
index 7d38e173..a366ba95 100644
--- a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/MainMenuNavigatorContent.java
+++ b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/MainMenuNavigatorContent.java
@@ -13,8 +13,8 @@ import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.external.floatingwindow.menu.HoverMenuService;
import com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector.LayoutInspector;
+import com.stardust.scriptdroid.ui.main.MainActivity_;
import com.stardust.util.ClipboardUtil;
-import com.stardust.scriptdroid.ui.main.MainActivity;
import com.stardust.util.MessageEvent;
import com.stardust.view.ViewBinder;
import com.stardust.view.ViewBinding;
@@ -82,7 +82,7 @@ public class MainMenuNavigatorContent implements NavigatorContent {
@ViewBinding.Click(R.id.open_launcher)
private void openMainActivity() {
- App.getApp().startActivity(new Intent(App.getApp(), MainActivity.class)
+ App.getApp().startActivity(new Intent(App.getApp(), MainActivity_.class)
.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY | Intent.FLAG_ACTIVITY_NEW_TASK));
HoverMenuService.postIntent(new Intent(HoverMenuService.ACTION_COLLAPSE_MENU));
}
@@ -95,7 +95,6 @@ public class MainMenuNavigatorContent implements NavigatorContent {
@Override
public void onShown(@NonNull Navigator navigator) {
-
}
@SuppressLint("SetTextI18n")
diff --git a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/RecordNavigatorContent.java b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/RecordNavigatorContent.java
index 77792167..78024dca 100644
--- a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/RecordNavigatorContent.java
+++ b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/RecordNavigatorContent.java
@@ -79,7 +79,7 @@ public class RecordNavigatorContent implements NavigatorContent, Recorder.OnStat
HoverMenuService.getEventBus().register(this);
App.getApp().getVolumeChangeObserver().addOnVolumeChangeListener(mOnVolumeChangeListener);
if (Pref.hasRecordTrigger()) {
- mKeyObserver = new KeyObserver();
+ mKeyObserver = new KeyObserver(mContext);
mKeyObserver.startListening();
mKeyObserver.setKeyListener(this);
}
@@ -134,7 +134,7 @@ public class RecordNavigatorContent implements NavigatorContent, Recorder.OnStat
}
private void startRecord() {
- mRecorder = mRecordedByRootSwitch.isChecked() ? new TouchRecorder() : AutoJs.getInstance().getAccessibilityActionRecorder();
+ mRecorder = mRecordedByRootSwitch.isChecked() ? new TouchRecorder(mContext) : AutoJs.getInstance().getAccessibilityActionRecorder();
mRecorder.setOnStateChangedListener(this);
mRecorder.start();
setState(Recorder.STATE_RECORDING);
diff --git a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/layout_inspector/LayoutInspector.java b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/layout_inspector/LayoutInspector.java
index 4cbfbbd0..4dac54cf 100644
--- a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/layout_inspector/LayoutInspector.java
+++ b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/layout_inspector/LayoutInspector.java
@@ -1,9 +1,8 @@
package com.stardust.scriptdroid.external.floatingwindow.menu.layout_inspector;
-import android.accessibilityservice.AccessibilityService;
import android.view.accessibility.AccessibilityNodeInfo;
-import com.stardust.scriptdroid.service.AccessibilityWatchDogService;
+import com.stardust.view.accessibility.AccessibilityService;
import com.stardust.util.UnderuseExecutors;
import java.util.concurrent.Executor;
@@ -19,7 +18,7 @@ public class LayoutInspector {
private Executor mExecutor = UnderuseExecutors.getExecutor();
public void captureCurrentWindow() {
- AccessibilityWatchDogService service = AccessibilityWatchDogService.getInstance();
+ AccessibilityService service = AccessibilityService.getInstance();
if (service == null) {
mCapture = null;
} else {
diff --git a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/record/inputevent/InputEventRecorder.java b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/record/inputevent/InputEventRecorder.java
index 43ffb642..bf8acc79 100644
--- a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/record/inputevent/InputEventRecorder.java
+++ b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/record/inputevent/InputEventRecorder.java
@@ -1,6 +1,9 @@
package com.stardust.scriptdroid.external.floatingwindow.menu.record.inputevent;
-import com.stardust.scriptdroid.autojs.api.Shell;
+import android.content.Context;
+
+import com.stardust.autojs.runtime.api.Shell;
+import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.external.floatingwindow.menu.record.Recorder;
/**
@@ -13,15 +16,17 @@ public class InputEventRecorder extends Recorder.AbstractRecorder {
private String mGetEventCommand;
private Shell mShell;
protected InputEventConverter mInputEventConverter;
+ private Context mContext;
- protected InputEventRecorder(InputEventConverter inputEventConverter) {
+ protected InputEventRecorder(Context context, InputEventConverter inputEventConverter) {
mGetEventCommand = inputEventConverter.getGetEventCommand();
mInputEventConverter = inputEventConverter;
+ mContext = context;
}
public void listen() {
- mShell = new Shell(true);
+ mShell = new Shell(mContext, true);
mShell.setCallback(new Shell.SimpleCallback() {
@Override
public void onNewLine(String str) {
diff --git a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/record/inputevent/KeyObserver.java b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/record/inputevent/KeyObserver.java
index ddee4075..5c8bc501 100644
--- a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/record/inputevent/KeyObserver.java
+++ b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/record/inputevent/KeyObserver.java
@@ -1,5 +1,6 @@
package com.stardust.scriptdroid.external.floatingwindow.menu.record.inputevent;
+import android.content.Context;
import android.support.annotation.NonNull;
/**
@@ -19,14 +20,14 @@ public class KeyObserver {
private InputEventRecorder mObserver;
private KeyListener mKeyListener;
- public KeyObserver(){
- mObserver = new InputEventRecorder(new InputEventConverter() {
+ public KeyObserver(Context context) {
+ mObserver = new InputEventRecorder(context, new InputEventConverter() {
@Override
public void convertEvent(@NonNull Event event) {
- if(event.value.equalsIgnoreCase("UP")){
+ if (event.value.equalsIgnoreCase("UP")) {
notifyKeyUp(event.code);
}
- if(event.value.equalsIgnoreCase("DOWN")){
+ if (event.value.equalsIgnoreCase("DOWN")) {
notifyKeyDown(event.code);
}
}
@@ -42,23 +43,23 @@ public class KeyObserver {
mKeyListener = keyListener;
}
- public void startListening(){
+ public void startListening() {
mObserver.listen();
mObserver.start();
}
- public void stopListening(){
+ public void stopListening() {
mObserver.stopImpl();
}
private void notifyKeyDown(String keyName) {
- if(mKeyListener != null){
+ if (mKeyListener != null) {
mKeyListener.onKeyDown(keyName);
}
}
private void notifyKeyUp(String keyName) {
- if(mKeyListener != null){
+ if (mKeyListener != null) {
mKeyListener.onKeyUp(keyName);
}
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/record/inputevent/TouchRecorder.java b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/record/inputevent/TouchRecorder.java
index 158fdb91..74288e42 100644
--- a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/record/inputevent/TouchRecorder.java
+++ b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/record/inputevent/TouchRecorder.java
@@ -1,13 +1,15 @@
package com.stardust.scriptdroid.external.floatingwindow.menu.record.inputevent;
+import android.content.Context;
+
/**
* Created by Stardust on 2017/3/16.
*/
public class TouchRecorder extends InputEventRecorder {
- public TouchRecorder() {
- super(new InputEventToSendEventJsConverter());
+ public TouchRecorder(Context context) {
+ super(context, new InputEventToSendEventJsConverter());
listen();
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/service/AccessibilityWatchDogService.java b/app/src/main/java/com/stardust/scriptdroid/service/AccessibilityWatchDogService.java
deleted file mode 100644
index a9e5ef0f..00000000
--- a/app/src/main/java/com/stardust/scriptdroid/service/AccessibilityWatchDogService.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package com.stardust.scriptdroid.service;
-
-import android.accessibilityservice.AccessibilityServiceInfo;
-import android.content.Context;
-import android.os.Build;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.accessibility.AccessibilityEvent;
-import android.view.accessibility.AccessibilityNodeInfo;
-
-import com.nickandjerry.dynamiclayoutinflator.lib.DynamicLayoutInflator;
-import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
-import com.stardust.view.accessibility.AccessibilityDelegate;
-import com.stardust.view.accessibility.AccessibilityService;
-import com.stardust.view.accessibility.AccessibilityServiceUtils;
-
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-/**
- * Created by Stardust on 2017/2/14.
- */
-
-public class AccessibilityWatchDogService extends AccessibilityService {
-
- private static final String TAG = "AccessibilityWatchDog";
-
- private static final SortedMap mDelegates = new TreeMap<>();
- private static final Object LOCK = new Object();
- private static AccessibilityWatchDogService instance;
- private static boolean containsAllEventTypes = false;
- private static final Set eventTypes = new HashSet<>();
-
- public static void addDelegate(int uniquePriority, AccessibilityDelegate delegate) {
- mDelegates.put(uniquePriority, delegate);
- Set set = delegate.getEventTypes();
- if (set == null)
- containsAllEventTypes = true;
- else
- eventTypes.addAll(set);
- }
-
- public static boolean isEnable(Context context) {
- return AccessibilityServiceUtils.isAccessibilityServiceEnabled(context, AccessibilityWatchDogService.class);
- }
-
- public static AccessibilityWatchDogService getInstance() {
- return instance;
- }
-
- @Override
- public void onAccessibilityEvent(final AccessibilityEvent event) {
- Log.v(TAG, "onAccessibilityEvent: " + event);
- super.onAccessibilityEvent(event);
- if (!containsAllEventTypes && !eventTypes.contains(event.getEventType()))
- return;
- for (Map.Entry entry : mDelegates.entrySet()) {
- AccessibilityDelegate delegate = entry.getValue();
- Set types = delegate.getEventTypes();
- if (types != null && !delegate.getEventTypes().contains(event.getEventType()))
- continue;
- long start = System.currentTimeMillis();
- if (delegate.onAccessibilityEvent(AccessibilityWatchDogService.this, event))
- break;
- Log.v(TAG, "millis: " + (System.currentTimeMillis() - start) + " delegate: " + entry.getValue().getClass().getName());
- }
- }
-
- @Override
- protected boolean onKeyEvent(KeyEvent event) {
- Log.v(TAG, "onKeyEvent: " + event);
- return super.onKeyEvent(event);
- }
-
- @Override
- protected boolean onGesture(int gestureId) {
- Log.v(TAG, "onGesture: " + gestureId);
- return super.onGesture(gestureId);
- }
-
- @Override
- public void onInterrupt() {
- }
-
- @Override
- public void onDestroy() {
- instance = null;
- super.onDestroy();
- }
-
- @Override
- protected void onServiceConnected() {
- Log.v(TAG, "onServiceConnected: " + getServiceInfo().toString());
- instance = this;
- super.onServiceConnected();
- synchronized (LOCK) {
- LOCK.notifyAll();
- }
- // FIXME: 2017/2/12 有时在无障碍中开启服务后这里不会调用服务也不会运行,安卓的BUG???
- }
-
- public static void disable() {
- if (instance != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
- instance.disableSelf();
- } else {
- AccessibilityServiceTool.goToAccessibilitySetting();
- }
- }
-
- public static void waitForEnabled(long timeOut) {
- synchronized (LOCK) {
- try {
- LOCK.wait(timeOut);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
-}
diff --git a/app/src/main/java/com/stardust/scriptdroid/tool/AccessibilityServiceTool.java b/app/src/main/java/com/stardust/scriptdroid/tool/AccessibilityServiceTool.java
index 4c22bd14..6a3a6451 100644
--- a/app/src/main/java/com/stardust/scriptdroid/tool/AccessibilityServiceTool.java
+++ b/app/src/main/java/com/stardust/scriptdroid/tool/AccessibilityServiceTool.java
@@ -1,13 +1,12 @@
package com.stardust.scriptdroid.tool;
-import android.accessibilityservice.AccessibilityService;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.text.TextUtils;
import android.widget.Toast;
import com.stardust.scriptdroid.Pref;
-import com.stardust.scriptdroid.service.AccessibilityWatchDogService;
+import com.stardust.view.accessibility.AccessibilityService;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.R;
import com.stardust.autojs.runtime.api.ProcessShell;
@@ -23,7 +22,7 @@ public class AccessibilityServiceTool {
public static void enableAccessibilityService() {
if (Pref.enableAccessibilityServiceByRoot()) {
- if (!enableAccessibilityServiceByRoot(AccessibilityWatchDogService.class)) {
+ if (!enableAccessibilityServiceByRoot(AccessibilityService.class)) {
goToAccessibilitySetting();
}
} else {
@@ -53,22 +52,22 @@ public class AccessibilityServiceTool {
"settings put secure enabled_accessibility_services $enabled\n" +
"fi";
- public static boolean enableAccessibilityServiceByRoot(Class extends AccessibilityService> accessibilityService) {
+ public static boolean enableAccessibilityServiceByRoot(Class extends android.accessibilityservice.AccessibilityService> accessibilityService) {
String serviceName = App.getApp().getPackageName() + "/" + accessibilityService.getName();
return TextUtils.isEmpty(ProcessShell.execCommand(String.format(Locale.getDefault(), cmd, serviceName), true).error);
}
public static boolean enableAccessibilityServiceByRootAndWaitFor(long timeOut) {
- if (enableAccessibilityServiceByRoot(AccessibilityWatchDogService.class)) {
- AccessibilityWatchDogService.waitForEnabled(timeOut);
+ if (enableAccessibilityServiceByRoot(AccessibilityService.class)) {
+ AccessibilityService.waitForEnabled(timeOut);
}
return true;
}
public static void enableAccessibilityServiceByRootIfNeeded() {
- if (AccessibilityWatchDogService.getInstance() == null)
+ if (AccessibilityService.getInstance() == null)
if (Pref.enableAccessibilityServiceByRoot()) {
- AccessibilityServiceTool.enableAccessibilityServiceByRoot(AccessibilityWatchDogService.class);
+ AccessibilityServiceTool.enableAccessibilityServiceByRoot(AccessibilityService.class);
}
}
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/console/JraskaConsole.java b/app/src/main/java/com/stardust/scriptdroid/ui/console/JraskaConsole.java
index 709516bc..8d260660 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/console/JraskaConsole.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/console/JraskaConsole.java
@@ -76,7 +76,7 @@ public class JraskaConsole extends AbstractConsole {
@Override
public void show() {
- App.getApp().startActivity(new Intent(App.getApp(), LogActivity.class)
+ App.getApp().startActivity(new Intent(App.getApp(), LogActivity_.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/console/LogActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/console/LogActivity.java
index 728e05cf..e20988dc 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/console/LogActivity.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/console/LogActivity.java
@@ -13,20 +13,17 @@ import com.stardust.scriptdroid.ui.BaseActivity;
import com.jraska.console.Console;
import com.stardust.scriptdroid.R;
+import org.androidannotations.annotations.AfterViews;
+import org.androidannotations.annotations.EActivity;
+
/**
* Created by Stardust on 2017/2/12.
*/
-
+@EActivity(R.layout.activity_console)
public class LogActivity extends BaseActivity {
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setUpUI();
- }
-
- private void setUpUI() {
- setContentView(R.layout.activity_console);
+ @AfterViews
+ void setUpUI() {
setToolbarAsBack(getString(R.string.text_log));
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/edit/EditActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/edit/EditActivity.java
index bde63587..aa1f7768 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/edit/EditActivity.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/edit/EditActivity.java
@@ -39,16 +39,19 @@ import com.stardust.scriptdroid.ui.help.HelpCatalogueActivity;
import com.stardust.theme.ThemeColorManager;
import com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder;
import com.stardust.util.SparseArrayEntries;
-import com.stardust.view.ViewBinder;
-import com.stardust.view.ViewBinding;
import com.stardust.widget.ToolbarMenuItem;
+import org.androidannotations.annotations.AfterViews;
+import org.androidannotations.annotations.Click;
+import org.androidannotations.annotations.EActivity;
+import org.androidannotations.annotations.ViewById;
+
import java.io.File;
/**
* Created by Stardust on 2017/1/29.
*/
-
+@EActivity(R.layout.activity_edit)
public class EditActivity extends Editor920Activity implements OnActivityResultDelegate.DelegateHost {
@@ -81,26 +84,28 @@ public class EditActivity extends Editor920Activity implements OnActivityResultD
}
- public static final String EXTRA_CONTENT = "Still Love Eating 17.4.5";
+ public static final String EXTRA_PATH = "Still Love Eating 17.4.5";
+ private static final String EXTRA_NAME = "Still love you 17.6.29 But....(ಥ_ಥ)";
public static void editFile(Context context, String path) {
editFile(context, null, path);
}
public static void editFile(Context context, String name, String path) {
- context.startActivity(new Intent(context, EditActivity.class)
+ context.startActivity(new Intent(context, EditActivity_.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
- .putExtra("path", path)
- .putExtra("name", name));
+ .putExtra(EXTRA_PATH, path)
+ .putExtra(EXTRA_NAME, name));
}
public static void editFile(Context context, ScriptFile file) {
editFile(context, file.getSimplifiedName(), file.getPath());
}
+ @ViewById(R.id.content_view)
+ View mView;
private String mName;
private File mFile;
- private View mView;
private EditorDelegate mEditorDelegate;
private SparseArray mMenuMap;
private boolean mReadOnly = false;
@@ -124,17 +129,21 @@ public class EditActivity extends Editor920Activity implements OnActivityResultD
public void onCreate(Bundle b) {
super.onCreate(b);
setTheme(R.style.EditorTheme);
- mView = View.inflate(this, R.layout.activity_edit, null);
- setContentView(mView);
handleIntent(getIntent());
- setUpUI();
- setUpEditor();
registerReceiver(mOnRunFinishedReceiver, new IntentFilter(Scripts.ACTION_ON_EXECUTION_FINISHED));
}
+ @AfterViews
+ void setUpViews() {
+ ThemeColorManager.addActivityStatusBar(this);
+ setUpToolbar();
+ initMenuItem();
+ setUpEditor();
+ }
+
private void handleIntent(Intent intent) {
- String path = intent.getStringExtra("path");
- mName = intent.getStringExtra("name");
+ String path = intent.getStringExtra(EXTRA_PATH);
+ mName = intent.getStringExtra(EXTRA_NAME);
mReadOnly = intent.getBooleanExtra("readOnly", false);
boolean saveEnabled = intent.getBooleanExtra("saveEnabled", true);
if (mReadOnly || !saveEnabled) {
@@ -152,13 +161,6 @@ public class EditActivity extends Editor920Activity implements OnActivityResultD
}
}
- private void setUpUI() {
- ThemeColorManager.addActivityStatusBar(this);
- setUpToolbar();
- initMenuItem();
- ViewBinder.bind(this);
- }
-
private void setUpEditor() {
final EditorView editorView = (EditorView) findViewById(R.id.editor);
mEditorDelegate.setEditorView(editorView);
@@ -184,8 +186,8 @@ public class EditActivity extends Editor920Activity implements OnActivityResultD
BaseActivity.setToolbarAsBack(this, R.id.toolbar, mName);
}
- @ViewBinding.Click(R.id.run)
- private void runAndSaveFileIFNeeded() {
+ @Click(R.id.run)
+ void runAndSaveFileIFNeeded() {
if (!mReadOnly && mEditorDelegate.isChanged()) {
saveFile(false, new SaveListener() {
@Override
@@ -213,21 +215,21 @@ public class EditActivity extends Editor920Activity implements OnActivityResultD
}
- @ViewBinding.Click(R.id.undo)
- private void undo() {
+ @Click(R.id.undo)
+ void undo() {
Command command = new Command(Command.CommandEnum.UNDO);
mEditorDelegate.doCommand(command);
}
- @ViewBinding.Click(R.id.redo)
- private void redo() {
+ @Click(R.id.redo)
+ void redo() {
Command command = new Command(Command.CommandEnum.REDO);
mEditorDelegate.doCommand(command);
}
- @ViewBinding.Click(R.id.save)
- private void saveFile() {
+ @Click(R.id.save)
+ void saveFile() {
saveFile(false, null);
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/edit/sidemenu/EditSideMenuFragment.java b/app/src/main/java/com/stardust/scriptdroid/ui/edit/sidemenu/EditSideMenuFragment.java
index 9832b613..f4d01657 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/edit/sidemenu/EditSideMenuFragment.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/edit/sidemenu/EditSideMenuFragment.java
@@ -10,13 +10,13 @@ import android.view.View;
import android.view.ViewGroup;
import com.stardust.app.Fragment;
+import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.external.floatingwindow.FloatingWindowManger;
import com.stardust.scriptdroid.external.floatingwindow.menu.HoverMenuService;
-import com.stardust.view.ViewBinding;
-import com.stardust.scriptdroid.R;
-import com.stardust.scriptdroid.ui.console.LogActivity;
+import com.stardust.scriptdroid.ui.console.LogActivity_;
import com.stardust.scriptdroid.ui.help.HelpCatalogueActivity;
import com.stardust.view.ViewBinder;
+import com.stardust.view.ViewBinding;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -92,7 +92,7 @@ public class EditSideMenuFragment extends Fragment {
@ViewBinding.Click(R.id.console)
private void startConsoleActivity() {
- startActivity(new Intent(getContext(), LogActivity.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
+ startActivity(new Intent(getContext(), LogActivity_.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
@ViewBinding.Check(R.id.sw_floating_window)
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java
index eac78a05..df2b94c4 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java
@@ -38,7 +38,7 @@ import com.stardust.scriptdroid.external.floatingwindow.FloatingWindowManger;
import com.stardust.scriptdroid.script.ScriptFile;
import com.stardust.scriptdroid.script.StorageScriptProvider;
import com.stardust.scriptdroid.script.sample.Sample;
-import com.stardust.scriptdroid.service.AccessibilityWatchDogService;
+import com.stardust.view.accessibility.AccessibilityService;
import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
import com.stardust.scriptdroid.tool.DrawableSaver;
import com.stardust.scriptdroid.ui.BaseActivity;
@@ -46,25 +46,27 @@ import com.stardust.scriptdroid.ui.main.sample_list.SampleScriptListFragment;
import com.stardust.scriptdroid.ui.main.script_list.MyScriptListFragment;
import com.stardust.scriptdroid.ui.main.script_list.ScriptFileChooserDialogBuilder;
import com.stardust.scriptdroid.ui.main.task.TaskManagerFragment;
-import com.stardust.scriptdroid.ui.settings.SettingsActivity;
+import com.stardust.scriptdroid.ui.settings.SettingsActivity_;
import com.stardust.scriptdroid.ui.update.VersionGuard;
import com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder;
import com.stardust.util.BackPressedHandler;
import com.stardust.util.Callback;
import com.stardust.util.MessageEvent;
import com.stardust.view.DrawerAutoClose;
-import com.stardust.view.ViewBinder;
-import com.stardust.view.ViewBinding;
import com.stardust.view.accessibility.AccessibilityServiceUtils;
import com.stardust.widget.CommonMarkdownView;
import com.stardust.widget.SlidingUpPanel;
+import org.androidannotations.annotations.AfterViews;
+import org.androidannotations.annotations.Click;
+import org.androidannotations.annotations.EActivity;
+import org.androidannotations.annotations.ViewById;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import java.io.IOException;
-
+@EActivity(R.layout.activity_main)
public class MainActivity extends BaseActivity implements OnActivityResultDelegate.DelegateHost {
public static final String MESSAGE_CLEAR_BACKGROUND_SETTINGS = "MESSAGE_CLEAR_BACKGROUND_SETTINGS";
@@ -80,21 +82,22 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
private static final String ARGUMENT_SAMPLE = "Take a chance on me...ok...?";
- private DrawerLayout mDrawerLayout;
- @ViewBinding.Id(R.id.bottom_menu)
- private SlidingUpPanel mAddBottomMenuPanel;
+ @ViewById(R.id.drawer_layout)
+ DrawerLayout mDrawerLayout;
+ @ViewById(R.id.bottom_menu)
+ SlidingUpPanel mAddBottomMenuPanel;
+ @ViewById(R.id.viewpager)
+ ViewPager mViewPager;
private FragmentPagerAdapterBuilder.StoredFragmentPagerAdapter mPagerAdapter;
private OnActivityResultDelegate.Mediator mActivityResultMediator = new OnActivityResultDelegate.Mediator();
private DrawableSaver mDrawerHeaderBackgroundSaver, mAppbarBackgroundSaver;
private VersionGuard mVersionGuard;
private Intent mIntentToHandle;
- private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setUpUI();
checkPermissions();
registerBackPressHandlers();
mIntentToHandle = getIntent();
@@ -103,9 +106,14 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
showAnnunciationIfNeeded();
}
- @Override
- protected void onStart() {
- super.onStart();
+ @AfterViews
+ void setUpViews() {
+ setUpToolbar();
+ setUpTabViewPager();
+ setUpDrawerHeader();
+ setUpFragment();
+ getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
+
}
private void showAnnunciationIfNeeded() {
@@ -143,7 +151,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
}
private void showAccessibilitySettingPromptIfDisabled() {
- if (!AccessibilityServiceUtils.isAccessibilityServiceEnabled(this, AccessibilityWatchDogService.class)) {
+ if (!AccessibilityServiceUtils.isAccessibilityServiceEnabled(this, AccessibilityService.class)) {
new NotAskAgainDialog.Builder(this, "Eating...love you...miss you...17.4.12")
.title(R.string.text_need_to_enable_accessibility_service)
.content(R.string.explain_accessibility_permission)
@@ -158,17 +166,6 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
}
}
- private void setUpUI() {
- mDrawerLayout = (DrawerLayout) View.inflate(this, R.layout.activity_main, null);
- setContentView(mDrawerLayout);
- setUpToolbar();
- setUpTabViewPager();
- setUpDrawerHeader();
- setUpFragment();
- ViewBinder.bind(this);
- getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
- }
-
private void setUpFragment() {
SideMenuFragment.setFragment(this, R.id.fragment_slide_menu);
}
@@ -193,7 +190,6 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
private void setUpTabViewPager() {
TabLayout tabLayout = $(R.id.tab);
- mViewPager = $(R.id.viewpager);
mPagerAdapter = new FragmentPagerAdapterBuilder(this)
.add(new MyScriptListFragment(), R.string.text_my_script)
.add(new SampleScriptListFragment(), R.string.text_sample_script)
@@ -212,13 +208,13 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
});
}
- @ViewBinding.Click(R.id.add)
- private void showAddFilePanel() {
+ @Click(R.id.add)
+ void showAddFilePanel() {
mAddBottomMenuPanel.show();
}
- @ViewBinding.Click(R.id.create_new_file)
- private void createScriptFile() {
+ @Click(R.id.create_new_file)
+ void createScriptFile() {
doWithMyScriptListFragment(new Callback() {
@Override
public void call(MyScriptListFragment myScriptListFragment) {
@@ -227,8 +223,8 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
});
}
- @ViewBinding.Click(R.id.create_new_directory)
- private void createNewDirectory() {
+ @Click(R.id.create_new_directory)
+ void createNewDirectory() {
doWithMyScriptListFragment(new Callback() {
@Override
public void call(MyScriptListFragment myScriptListFragment) {
@@ -237,8 +233,8 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
});
}
- @ViewBinding.Click(R.id.import_from_file)
- private void showFileChooser() {
+ @Click(R.id.import_from_file)
+ void showFileChooser() {
final StorageScriptProvider provider = StorageScriptProvider.getExternalStorageProvider();
new ScriptFileChooserDialogBuilder(this)
.scriptProvider(provider)
@@ -272,12 +268,12 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
.show();
}
- @ViewBinding.Click(R.id.setting)
- private void startSettingActivity() {
- startActivity(new Intent(this, SettingsActivity.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
+ @Click(R.id.setting)
+ void startSettingActivity() {
+ startActivity(new Intent(this, SettingsActivity_.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
- @ViewBinding.Click(R.id.exit)
+ @Click(R.id.exit)
public void exitCompletely() {
FloatingWindowManger.hideHoverMenu();
stopService(new Intent(this, FloatyService.class));
@@ -285,7 +281,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
finish();
}
- @ViewBinding.Click(R.id.drawer_header_img)
+ @Click(R.id.drawer_header_img)
public void selectHeaderImage() {
mDrawerHeaderBackgroundSaver.select(this, mActivityResultMediator);
}
@@ -384,14 +380,14 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
public static void importScriptFile(Context context, String path) {
- context.startActivity(new Intent(context, MainActivity.class)
+ context.startActivity(new Intent(context, MainActivity_.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP)
.putExtra(EXTRA_ACTION, ACTION_IMPORT_SCRIPT)
.putExtra(ARGUMENT_PATH, path));
}
public static void importSample(Context context, Sample sample) {
- context.startActivity(new Intent(context, MainActivity.class)
+ context.startActivity(new Intent(context, MainActivity_.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP)
.putExtra(EXTRA_ACTION, ACTION_IMPORT_SAMPLE)
.putExtra(ARGUMENT_SAMPLE, sample));
@@ -424,7 +420,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
return ((MyScriptListFragment) mPagerAdapter.getStoredFragment(0));
}
- @ViewBinding.Click(R.id.toolbar)
+ @Click(R.id.toolbar)
public void OnToolbarClick() {
mAppbarBackgroundSaver.select(this, mActivityResultMediator);
}
@@ -456,7 +452,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
public static void onRecordStop(Context context, String script) {
- Intent intent = new Intent(context, MainActivity.class)
+ Intent intent = new Intent(context, MainActivity_.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra(EXTRA_ACTION, ACTION_ON_ACTION_RECORD_STOPPED)
.putExtra(ARGUMENT_SCRIPT, script);
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/SideMenuFragment.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/SideMenuFragment.java
index 39a97189..5601c47b 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/main/SideMenuFragment.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/SideMenuFragment.java
@@ -10,7 +10,6 @@ import android.support.v7.widget.SwitchCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.Toast;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
@@ -21,12 +20,12 @@ import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.external.floatingwindow.FloatingWindowManger;
import com.stardust.scriptdroid.external.floatingwindow.menu.HoverMenuService;
-import com.stardust.scriptdroid.service.AccessibilityWatchDogService;
+import com.stardust.view.accessibility.AccessibilityService;
import com.stardust.scriptdroid.sublime.SublimePluginClient;
import com.stardust.scriptdroid.sublime.SublimePluginService;
import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
import com.stardust.scriptdroid.tool.WifiTool;
-import com.stardust.scriptdroid.ui.console.LogActivity;
+import com.stardust.scriptdroid.ui.console.LogActivity_;
import com.stardust.scriptdroid.ui.help.HelpCatalogueActivity;
import com.stardust.util.IntentUtil;
import com.stardust.util.UnderuseExecutors;
@@ -89,7 +88,7 @@ public class SideMenuFragment extends Fragment {
mExecutor.execute(new Runnable() {
@Override
public void run() {
- final boolean checked = AccessibilityWatchDogService.isEnable(App.getApp());
+ final boolean checked = AccessibilityService.isEnable(App.getApp());
mAccessibilityServiceSwitch.post(new Runnable() {
@Override
public void run() {
@@ -112,7 +111,7 @@ public class SideMenuFragment extends Fragment {
@ViewBinding.Click(R.id.console)
private void startConsoleActivity() {
- startActivity(new Intent(getActivity(), LogActivity.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
+ startActivity(new Intent(getActivity(), LogActivity_.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
@ViewBinding.Click(R.id.syntax_and_api)
@@ -127,11 +126,13 @@ public class SideMenuFragment extends Fragment {
@ViewBinding.Check(R.id.sw_auto_operate_service)
private void setAutoOperateServiceEnable(boolean enable) {
- boolean isWatchDogServiceEnabled = AccessibilityWatchDogService.isEnable(App.getApp());
- if (enable && !isWatchDogServiceEnabled) {
+ boolean isAccessibilityServiceEnabled = AccessibilityService.isEnable(App.getApp());
+ if (enable && !isAccessibilityServiceEnabled) {
AccessibilityServiceTool.enableAccessibilityService();
- } else if (!enable && isWatchDogServiceEnabled) {
- AccessibilityWatchDogService.disable();
+ } else if (!enable && isAccessibilityServiceEnabled) {
+ if (!AccessibilityService.disable()) {
+ AccessibilityServiceTool.goToAccessibilitySetting();
+ }
}
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/settings/AboutActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/settings/AboutActivity.java
index 941f249a..0530645e 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/settings/AboutActivity.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/settings/AboutActivity.java
@@ -1,11 +1,7 @@
package com.stardust.scriptdroid.ui.settings;
import android.annotation.SuppressLint;
-import android.content.ClipData;
-import android.content.ClipboardManager;
-import android.os.Bundle;
import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.util.Log;
import android.view.View;
import android.view.accessibility.AccessibilityNodeInfo;
@@ -15,35 +11,37 @@ import android.widget.Toast;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.stardust.automator.UiObject;
-import com.stardust.scriptdroid.service.AccessibilityWatchDogService;
+import com.stardust.view.accessibility.AccessibilityService;
import com.stardust.scriptdroid.tool.IntentTool;
import com.stardust.scriptdroid.ui.BaseActivity;
import com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder;
import com.stardust.util.IntentUtil;
-import com.stardust.view.ViewBinding;
import com.stardust.scriptdroid.BuildConfig;
import com.stardust.scriptdroid.R;
import com.stardust.view.ViewBinder;
+import org.androidannotations.annotations.AfterViews;
+import org.androidannotations.annotations.Click;
+import org.androidannotations.annotations.EActivity;
+import org.androidannotations.annotations.ViewById;
+
import moe.feng.alipay.zerosdk.AlipayZeroSdk;
/**
* Created by Stardust on 2017/2/2.
*/
-
+@EActivity(R.layout.activity_about)
public class AboutActivity extends BaseActivity {
private static final String TAG = "AboutActivity";
+ @ViewById(R.id.version)
+ TextView mVersion;
+
private int mLolClickCount = 0;
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setUpUI();
- }
- private void setUpUI() {
- setContentView(R.layout.activity_about);
+ @AfterViews
+ void setUpViews() {
setVersionName();
setToolbarAsBack(getString(R.string.text_about));
ViewBinder.bind(this);
@@ -51,32 +49,31 @@ public class AboutActivity extends BaseActivity {
@SuppressLint("SetTextI18n")
private void setVersionName() {
- TextView version = $(R.id.version);
- version.setText("Version " + BuildConfig.VERSION_NAME);
+ mVersion.setText("Version " + BuildConfig.VERSION_NAME);
}
- @ViewBinding.Click(R.id.github)
- private void openGitHub() {
+ @Click(R.id.github)
+ void openGitHub() {
IntentTool.browse(this, getString(R.string.my_github));
}
- @ViewBinding.Click(R.id.qq)
- private void openQQToChatWithMe() {
+ @Click(R.id.qq)
+ void openQQToChatWithMe() {
String qq = getString(R.string.qq);
if (!IntentUtil.chatWithQQ(this, qq)) {
Toast.makeText(this, R.string.text_mobile_qq_not_installed, Toast.LENGTH_SHORT).show();
}
}
- @ViewBinding.Click(R.id.email)
- private void openEmailToSendMe() {
+ @Click(R.id.email)
+ void openEmailToSendMe() {
String email = getString(R.string.email);
IntentUtil.sendMailTo(this, email);
}
- @ViewBinding.Click(R.id.donate)
- private void showDonateMeDialog() {
+ @Click(R.id.donate)
+ void showDonateMeDialog() {
new ThemeColorMaterialDialogBuilder(this)
.title(R.string.donate)
.items("支付宝")
@@ -95,13 +92,13 @@ public class AboutActivity extends BaseActivity {
.show();
}
- @ViewBinding.Click(R.id.share)
- private void share() {
+ @Click(R.id.share)
+ void share() {
IntentUtil.shareText(this, getString(R.string.share_app));
}
- @ViewBinding.Click(R.id.icon)
- private void lol() {
+ @Click(R.id.icon)
+ void lol() {
mLolClickCount++;
Toast.makeText(this, R.string.text_lll, Toast.LENGTH_LONG).show();
if (mLolClickCount >= 5) {
@@ -121,7 +118,7 @@ public class AboutActivity extends BaseActivity {
public void run() {
int i = 0;
while (true) {
- AccessibilityNodeInfo root = AccessibilityWatchDogService.getInstance().getRootInActiveWindow();
+ AccessibilityNodeInfo root = AccessibilityService.getInstance().getRootInActiveWindow();
if (root != null) {
UiObject uiObject = UiObject.createRoot(root);
UiObject child = uiObject.child(0);
@@ -153,8 +150,8 @@ public class AboutActivity extends BaseActivity {
}).show();
}
- @ViewBinding.Click(R.id.developer)
- private void hhh() {
+ @Click(R.id.developer)
+ void hhh() {
Toast.makeText(this, R.string.text_it_is_the_developer_of_app, Toast.LENGTH_LONG).show();
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/settings/SettingsActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/settings/SettingsActivity.java
index ac7a9bf5..777668ca 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/settings/SettingsActivity.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/settings/SettingsActivity.java
@@ -23,6 +23,8 @@ import com.stardust.theme.app.ColorSelectActivity;
import com.stardust.theme.util.ListBuilder;
import com.stardust.util.MessageEvent;
+import org.androidannotations.annotations.AfterViews;
+import org.androidannotations.annotations.EActivity;
import org.greenrobot.eventbus.EventBus;
import java.util.List;
@@ -35,7 +37,7 @@ import de.psdev.licensesdialog.licenses.License;
/**
* Created by Stardust on 2017/2/2.
*/
-
+@EActivity(R.layout.activity_settings)
public class SettingsActivity extends BaseActivity {
private static final List COLOR_ITEMS;
@@ -64,14 +66,8 @@ public class SettingsActivity extends BaseActivity {
.list();
}
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setUpUI();
- }
-
- private void setUpUI() {
- setContentView(R.layout.activity_settings);
+ @AfterViews
+ void setUpUI() {
setUpToolbar();
getFragmentManager().beginTransaction().replace(R.id.fragment_setting, new PreferenceFragment()).commit();
}
@@ -141,7 +137,7 @@ public class SettingsActivity extends BaseActivity {
.entry(getString(R.string.text_about_me_and_repo), new Runnable() {
@Override
public void run() {
- startActivity(new Intent(getActivity(), AboutActivity.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
+ startActivity(new Intent(getActivity(), AboutActivity_.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
})
.entry(getString(R.string.text_licenses), new Runnable() {
diff --git a/app/src/main/res/layout/activity_edit.xml b/app/src/main/res/layout/activity_edit.xml
index 0208b4f0..a9a966af 100644
--- a/app/src/main/res/layout/activity_edit.xml
+++ b/app/src/main/res/layout/activity_edit.xml
@@ -3,6 +3,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/content_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
diff --git a/app/src/main/res/layout/floating_console_expand.xml b/app/src/main/res/layout/floating_console_expand.xml
index d7b26e2f..adb18c44 100644
--- a/app/src/main/res/layout/floating_console_expand.xml
+++ b/app/src/main/res/layout/floating_console_expand.xml
@@ -68,7 +68,7 @@
-
AutoJs
设置
- 使脚本自动操作(点击、长按、滑动等)所需,若关闭则只能执行不涉及自动操作的脚本。
新建文件
从文件导入
创建失败
diff --git a/autojs/build.gradle b/autojs/build.gradle
index b7347382..f2595cc0 100644
--- a/autojs/build.gradle
+++ b/autojs/build.gradle
@@ -38,6 +38,12 @@ dependencies {
compile 'com.github.hyb1996:DynamicLayoutInflator:0.1'
compile 'org.greenrobot:eventbus:3.0.0'
compile 'net.lingala.zip4j:zip4j:1.3.2'
+ compile 'com.afollestad.material-dialogs:core:0.9.2.3'
+ compile 'com.github.hyb1996:EnhancedFloaty:0.17'
+ // Terminal emulator
+ compile(name: 'libtermexec-release', ext: 'aar')
+ compile(name: 'emulatorview-release', ext: 'aar')
+ compile(name: 'term-debug', ext: 'aar')
compile project(path: ':common')
compile project(path: ':automator')
}
diff --git a/autojs/libs/emulatorview-release.aar b/autojs/libs/emulatorview-release.aar
new file mode 100644
index 00000000..84e3e334
Binary files /dev/null and b/autojs/libs/emulatorview-release.aar differ
diff --git a/autojs/libs/libtermexec-release.aar b/autojs/libs/libtermexec-release.aar
new file mode 100644
index 00000000..f49ae349
Binary files /dev/null and b/autojs/libs/libtermexec-release.aar differ
diff --git a/autojs/libs/term-debug.aar b/autojs/libs/term-debug.aar
new file mode 100644
index 00000000..b32ad432
Binary files /dev/null and b/autojs/libs/term-debug.aar differ
diff --git a/autojs/src/main/AndroidManifest.xml b/autojs/src/main/AndroidManifest.xml
index fc3b0229..f76f0326 100644
--- a/autojs/src/main/AndroidManifest.xml
+++ b/autojs/src/main/AndroidManifest.xml
@@ -7,6 +7,20 @@
android:label="@string/app_name"
>
+
+
+
+
+
+
+
diff --git a/autojs/src/main/assets/javascript_engine_init.js b/autojs/src/main/assets/javascript_engine_init.js
index dd1886b9..acb0ee54 100644
--- a/autojs/src/main/assets/javascript_engine_init.js
+++ b/autojs/src/main/assets/javascript_engine_init.js
@@ -27,10 +27,12 @@ require("__general__")(__runtime__, this);
(function(scope){
- var modules = ['app', 'automator', 'console', 'io', 'selector', 'shell', 'web', 'ui', "images"];
+ var modules = ['app', 'automator', 'console', 'dialogs', 'io', 'selector', 'shell', 'web', 'ui', "images"];
var len = modules.length;
for(var i = 0; i < len; i++) {
var m = modules[i];
scope[m] = require('__' + m + '__')(scope.__runtime__, scope);
}
})(__that__);
+
+__importClass__(com.stardust.autojs.runtime.api.Shell);
diff --git a/autojs/src/main/assets/modules/__dialogs__.js b/autojs/src/main/assets/modules/__dialogs__.js
new file mode 100644
index 00000000..6f54be53
--- /dev/null
+++ b/autojs/src/main/assets/modules/__dialogs__.js
@@ -0,0 +1,67 @@
+
+module.exports = function(__runtime__, scope){
+ var dialogs = {};
+
+ dialogs.rawInput = function(title, prefill){
+ prefill = prefill || "";
+ var s = __runtime__.dialogs.rawInput(title, prefill);
+ return s ? String(s) : null;
+ };
+
+ dialogs.input = function(title, prefill){
+ return eval(dialogs.rawInput(title, prefill));
+ }
+
+ dialogs.prompt = dialogs.rawInput;
+
+ dialogs.alert = function(title, prefill){
+ prefill = prefill || "";
+ return __runtime__.dialogs.alert(title, prefill);
+ }
+
+ dialogs.confirm = function(title, prefill){
+ prefill = prefill || "";
+ return __runtime__.dialogs.confirm(title, prefill);
+ }
+
+ dialogs.select = function(title, items){
+ if(items instanceof Array){
+ return __runtime__.dialogs.select(title, items);
+ }
+ return __runtime__.dialogs.select(title, [].slice.call(arguments, 1));
+ }
+
+ dialogs.singleChoice = function(title, items, index){
+ index = index || 0;
+ return __runtime__.dialogs.singleChoice(title, index, items);
+ }
+
+ dialogs.multiChoice = function(title, items, index){
+ index = index || [];
+ var javaArray = __runtime__.dialogs.multiChoice(title, index, items);
+ var jsArray = [];
+ var len = javaArray.length;
+ for (var i = 0;i < len;i++){
+ jsArray.push(javaArray[i]);
+ }
+ return jsArray;
+ }
+
+ scope.rawInput = function(title, prefill){
+ return dialogs.rawInput(title, prefill);
+ }
+
+ scope.alert = function(title, prefill){
+ dialogs.alert(title, prefill);
+ }
+
+ scope.confirm = function(title, prefill){
+ return dialogs.confirm(title, prefill);
+ }
+
+ scope.prompt = function(title, prefill){
+ return dialogs.prompt(title, prefill);
+ }
+
+ return dialogs;
+}
\ No newline at end of file
diff --git a/autojs/src/main/java/com/stardust/autojs/ScriptEngineService.java b/autojs/src/main/java/com/stardust/autojs/ScriptEngineService.java
index db782141..e5e8296f 100644
--- a/autojs/src/main/java/com/stardust/autojs/ScriptEngineService.java
+++ b/autojs/src/main/java/com/stardust/autojs/ScriptEngineService.java
@@ -13,6 +13,7 @@ import com.stardust.autojs.execution.ScriptExecutionListener;
import com.stardust.autojs.execution.ScriptExecutionObserver;
import com.stardust.autojs.execution.ScriptExecutionTask;
import com.stardust.autojs.execution.SimpleScriptExecutionListener;
+import com.stardust.autojs.runtime.AbstractScriptRuntime;
import com.stardust.autojs.runtime.ScriptRuntime;
import com.stardust.autojs.runtime.api.Console;
import com.stardust.autojs.script.ScriptSource;
@@ -87,6 +88,7 @@ public class ScriptEngineService {
mScriptExecutionObserver.registerScriptExecutionListener(GLOBAL_LISTENER);
EVENT_BUS.register(this);
mScriptEngineManager.putGlobal("context", mUiHandler.getContext());
+ AbstractScriptRuntime.setApplicationContext(builder.mUiHandler.getContext());
}
public Console getGlobalConsole() {
diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/AbstractScriptRuntime.java b/autojs/src/main/java/com/stardust/autojs/runtime/AbstractScriptRuntime.java
index 10ef41d2..c0872272 100644
--- a/autojs/src/main/java/com/stardust/autojs/runtime/AbstractScriptRuntime.java
+++ b/autojs/src/main/java/com/stardust/autojs/runtime/AbstractScriptRuntime.java
@@ -10,11 +10,15 @@ import com.stardust.autojs.runtime.api.Console;
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.runtime.api.ui.UI;
import com.stardust.autojs.runtime.simpleaction.SimpleActionAutomator;
import com.stardust.util.ScreenMetrics;
+import com.stardust.util.UiHandler;
import com.stardust.view.accessibility.AccessibilityInfoProvider;
+import java.lang.ref.WeakReference;
+
/**
* Created by Stardust on 2017/5/4.
*/
@@ -39,13 +43,30 @@ public abstract class AbstractScriptRuntime {
@ScriptVariable
public Images images;
- public AbstractScriptRuntime(Context context, Console console, AccessibilityBridge bridge, AppUtils appUtils, ScreenCaptureRequester screenCaptureRequester) {
+ @ScriptVariable
+ public Dialogs dialogs;
+
+ private static WeakReference applicationContext;
+
+ public AbstractScriptRuntime(UiHandler uiHandler, Console console, AccessibilityBridge bridge, AppUtils appUtils, ScreenCaptureRequester screenCaptureRequester) {
this.app = appUtils;
this.console = console;
this.automator = new SimpleActionAutomator(bridge, this);
this.info = bridge.getInfoProvider();
- this.ui = new UI(context);
- images = new Images(context, this, screenCaptureRequester);
+ this.ui = new UI(uiHandler.getContext());
+ images = new Images(uiHandler.getContext(), this, screenCaptureRequester);
+ dialogs = new Dialogs(app, uiHandler);
+ }
+
+ public static void setApplicationContext(Context context) {
+ applicationContext = new WeakReference<>(context);
+ }
+
+ public static Context getApplicationContext() {
+ if (applicationContext == null || applicationContext.get() == null) {
+ throw new ScriptEnvironmentException("No application context");
+ }
+ return applicationContext.get();
}
@ScriptInterface
diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/ScriptEnvironmentException.java b/autojs/src/main/java/com/stardust/autojs/runtime/ScriptEnvironmentException.java
new file mode 100644
index 00000000..6d94e46c
--- /dev/null
+++ b/autojs/src/main/java/com/stardust/autojs/runtime/ScriptEnvironmentException.java
@@ -0,0 +1,11 @@
+package com.stardust.autojs.runtime;
+
+/**
+ * Created by Stardust on 2017/7/1.
+ */
+
+public class ScriptEnvironmentException extends RuntimeException {
+ public ScriptEnvironmentException(String s) {
+ super(s);
+ }
+}
diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java b/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java
index cf53b5d3..68204ba2 100644
--- a/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java
+++ b/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java
@@ -92,7 +92,7 @@ public class ScriptRuntime extends AbstractScriptRuntime {
protected ScriptRuntime(Builder builder) {
- super(builder.mUiHandler.getContext(), builder.mConsole, builder.mAccessibilityBridge, builder.mAppUtils, builder.mScreenCaptureRequester);
+ super(builder.mUiHandler, builder.mConsole, builder.mAccessibilityBridge, builder.mAppUtils, builder.mScreenCaptureRequester);
mAccessibilityBridge = builder.mAccessibilityBridge;
mUiHandler = builder.mUiHandler;
mShellSupplier = builder.mShellSupplier;
diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/api/AbstractShell.java b/autojs/src/main/java/com/stardust/autojs/runtime/api/AbstractShell.java
index ba902d37..66b84337 100644
--- a/autojs/src/main/java/com/stardust/autojs/runtime/api/AbstractShell.java
+++ b/autojs/src/main/java/com/stardust/autojs/runtime/api/AbstractShell.java
@@ -1,5 +1,6 @@
package com.stardust.autojs.runtime.api;
+import android.content.Context;
import android.text.TextUtils;
import com.stardust.util.ScreenMetrics;
@@ -36,12 +37,18 @@ public abstract class AbstractShell {
private ScreenMetrics mScreenMetrics;
private boolean mRoot;
+ protected Context mContext;
public AbstractShell() {
this(false);
}
public AbstractShell(boolean root) {
+ this(null, root);
+ }
+
+ public AbstractShell(Context context, boolean root) {
+ mContext = context;
mRoot = root;
init(root ? COMMAND_SU : COMMAND_SH);
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/autojs/api/Shell.java b/autojs/src/main/java/com/stardust/autojs/runtime/api/Shell.java
similarity index 92%
rename from app/src/main/java/com/stardust/scriptdroid/autojs/api/Shell.java
rename to autojs/src/main/java/com/stardust/autojs/runtime/api/Shell.java
index 42b5300d..c2775216 100644
--- a/app/src/main/java/com/stardust/scriptdroid/autojs/api/Shell.java
+++ b/autojs/src/main/java/com/stardust/autojs/runtime/api/Shell.java
@@ -1,17 +1,14 @@
-package com.stardust.scriptdroid.autojs.api;
+package com.stardust.autojs.runtime.api;
import android.content.Context;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.util.Log;
+import com.stardust.autojs.runtime.AbstractScriptRuntime;
import com.stardust.autojs.runtime.ScriptInterruptedException;
-import com.stardust.autojs.runtime.api.AbstractShell;
import com.stardust.lang.ThreadCompat;
import com.stardust.pio.UncheckedIOException;
-import com.stardust.scriptdroid.App;
-import com.stardust.scriptdroid.autojs.AutoJs;
-import com.stardust.scriptdroid.tool.UpdateChecker;
import java.io.BufferedReader;
import java.io.IOException;
@@ -74,24 +71,29 @@ public class Shell extends AbstractShell implements AutoCloseable {
private volatile boolean mWaitingExit = false;
private Callback mCallback;
+ public Shell(Context context) {
+ this(context, false);
+ }
+
+ public Shell(Context context, boolean root) {
+ super(context, root);
+ }
+
public Shell() {
- super();
+ this(false);
}
public Shell(boolean root) {
- super(root);
+ this(AbstractScriptRuntime.getApplicationContext(), root);
}
@Override
- protected void init(String initialCommand) {
- init(initialCommand, App.getApp(), AutoJs.getInstance().getUiHandler());
- }
-
- private void init(final String initialCommand, final Context context, Handler uiHandler) {
+ protected void init(final String initialCommand) {
+ Handler uiHandler = new Handler(mContext.getMainLooper());
uiHandler.post(new Runnable() {
@Override
public void run() {
- TermSettings settings = new TermSettings(context.getResources(), PreferenceManager.getDefaultSharedPreferences(context));
+ TermSettings settings = new TermSettings(mContext.getResources(), PreferenceManager.getDefaultSharedPreferences(mContext));
try {
mTermSession = new MyShellTermSession(settings, initialCommand);
mTermSession.initializeEmulator(40, 40);
diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/api/image/Images.java b/autojs/src/main/java/com/stardust/autojs/runtime/api/image/Images.java
index 8e375d57..05b4cba5 100644
--- a/autojs/src/main/java/com/stardust/autojs/runtime/api/image/Images.java
+++ b/autojs/src/main/java/com/stardust/autojs/runtime/api/image/Images.java
@@ -4,10 +4,16 @@ import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.media.Image;
+import android.media.ImageReader;
+import android.media.ImageWriter;
+import android.media.MediaCodec;
import android.os.Build;
+import android.provider.ContactsContract;
import android.support.annotation.RequiresApi;
+import android.view.Surface;
import com.stardust.autojs.runtime.AbstractScriptRuntime;
import com.stardust.autojs.runtime.ScriptInterruptedException;
@@ -100,6 +106,19 @@ public class Images {
return bitmap;
}
+ public static int pixel(Image image, int x, int y) {
+ Image.Plane plane = image.getPlanes()[0];
+ int offset = y * plane.getRowStride() + x * plane.getPixelStride();
+ return plane.getBuffer().getInt(offset);
+ }
+
+ public static int pixel(Bitmap bitmap, int x, int y) {
+ return bitmap.getPixel(x, y);
+ }
+
+ public static Bitmap read(String path) {
+ return BitmapFactory.decodeFile(path);
+ }
public static void saveBitmap(Bitmap bitmap, String path) {
try {
@@ -109,12 +128,21 @@ public class Images {
}
}
+ public static void saveBitmap(Bitmap bitmap, String path, int width, int height) {
+ if (width != bitmap.getWidth() || height != bitmap.getHeight()) {
+ Bitmap scaleBitmap = scaleBitmap(bitmap, width, height);
+ saveBitmap(scaleBitmap, path);
+ if (scaleBitmap != bitmap) {
+ scaleBitmap.recycle();
+ }
+ } else {
+ saveBitmap(bitmap, path);
+ }
+ }
+
public void saveImage(Image image, String path, int width, int height) {
Bitmap bitmap = toBitmap(image);
- if (width != bitmap.getWidth() || height != bitmap.getHeight()) {
- bitmap = scaleBitmap(bitmap, width, height);
- }
- saveBitmap(bitmap, path);
+ saveBitmap(bitmap, path, width, height);
bitmap.recycle();
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/autojs/api/ScreenCaptureRequestActivity.java b/autojs/src/main/java/com/stardust/autojs/runtime/api/image/ScreenCaptureRequestActivity.java
similarity index 86%
rename from app/src/main/java/com/stardust/scriptdroid/autojs/api/ScreenCaptureRequestActivity.java
rename to autojs/src/main/java/com/stardust/autojs/runtime/api/image/ScreenCaptureRequestActivity.java
index d70d6865..4e9bfd85 100644
--- a/app/src/main/java/com/stardust/scriptdroid/autojs/api/ScreenCaptureRequestActivity.java
+++ b/autojs/src/main/java/com/stardust/autojs/runtime/api/image/ScreenCaptureRequestActivity.java
@@ -1,4 +1,4 @@
-package com.stardust.scriptdroid.autojs.api;
+package com.stardust.autojs.runtime.api.image;
import android.content.Context;
import android.content.Intent;
@@ -6,17 +6,16 @@ import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
+import android.support.v7.app.AppCompatActivity;
import com.stardust.app.OnActivityResultDelegate;
-import com.stardust.autojs.runtime.api.image.ScreenCaptureRequester;
-import com.stardust.scriptdroid.ui.BaseActivity;
/**
* Created by Stardust on 2017/5/22.
*/
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
-public class ScreenCaptureRequestActivity extends BaseActivity {
+public class ScreenCaptureRequestActivity extends AppCompatActivity {
private static ScreenCaptureRequester.Callback sCallback;
diff --git a/app/src/main/java/com/stardust/scriptdroid/autojs/api/BlockedMaterialDialog.java b/autojs/src/main/java/com/stardust/autojs/runtime/api/ui/BlockedMaterialDialog.java
similarity index 99%
rename from app/src/main/java/com/stardust/scriptdroid/autojs/api/BlockedMaterialDialog.java
rename to autojs/src/main/java/com/stardust/autojs/runtime/api/ui/BlockedMaterialDialog.java
index 101694f3..873b4c07 100644
--- a/app/src/main/java/com/stardust/scriptdroid/autojs/api/BlockedMaterialDialog.java
+++ b/autojs/src/main/java/com/stardust/autojs/runtime/api/ui/BlockedMaterialDialog.java
@@ -1,4 +1,4 @@
-package com.stardust.scriptdroid.autojs.api;
+package com.stardust.autojs.runtime.api.ui;
import android.app.Activity;
import android.content.Context;
diff --git a/app/src/main/java/com/stardust/scriptdroid/autojs/api/Dialogs.java b/autojs/src/main/java/com/stardust/autojs/runtime/api/ui/Dialogs.java
similarity index 91%
rename from app/src/main/java/com/stardust/scriptdroid/autojs/api/Dialogs.java
rename to autojs/src/main/java/com/stardust/autojs/runtime/api/ui/Dialogs.java
index c42befe7..f91263ea 100644
--- a/app/src/main/java/com/stardust/scriptdroid/autojs/api/Dialogs.java
+++ b/autojs/src/main/java/com/stardust/autojs/runtime/api/ui/Dialogs.java
@@ -1,4 +1,4 @@
-package com.stardust.scriptdroid.autojs.api;
+package com.stardust.autojs.runtime.api.ui;
import android.content.Context;
import android.content.ContextWrapper;
@@ -6,11 +6,12 @@ import android.text.TextUtils;
import android.view.ContextThemeWrapper;
import com.afollestad.materialdialogs.MaterialDialog;
+import com.afollestad.materialdialogs.Theme;
+import com.stardust.autojs.R;
import com.stardust.autojs.runtime.ScriptInterface;
import com.stardust.autojs.runtime.ScriptInterruptedException;
import com.stardust.autojs.runtime.api.AppUtils;
import com.stardust.concurrent.VolatileBox;
-import com.stardust.scriptdroid.R;
import com.stardust.util.ArrayUtils;
import com.stardust.util.UiHandler;
@@ -22,7 +23,6 @@ public class Dialogs {
private AppUtils mAppUtils;
private UiHandler mUiHandler;
- private ContextWrapper mContextWrapper;
public Dialogs(AppUtils appUtils, UiHandler uiHandler) {
mAppUtils = appUtils;
@@ -70,10 +70,7 @@ public class Dialogs {
}
private Context getContext() {
- if (mContextWrapper == null) {
- mContextWrapper = new ContextThemeWrapper(mUiHandler.getContext(), R.style.AppTheme);
- }
- return mContextWrapper;
+ return mUiHandler.getContext();
}
@ScriptInterface
@@ -117,6 +114,7 @@ public class Dialogs {
if (context == null) {
context = getContext();
}
- return new BlockedMaterialDialog.Builder(context, mUiHandler);
+ return (BlockedMaterialDialog.Builder) new BlockedMaterialDialog.Builder(context, mUiHandler)
+ .theme(Theme.LIGHT);
}
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/console/ConsoleFloaty.java b/autojs/src/main/java/com/stardust/autojs/runtime/console/ConsoleFloaty.java
similarity index 97%
rename from app/src/main/java/com/stardust/scriptdroid/ui/console/ConsoleFloaty.java
rename to autojs/src/main/java/com/stardust/autojs/runtime/console/ConsoleFloaty.java
index 4e26dd0d..114136d5 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/console/ConsoleFloaty.java
+++ b/autojs/src/main/java/com/stardust/autojs/runtime/console/ConsoleFloaty.java
@@ -1,4 +1,4 @@
-package com.stardust.scriptdroid.ui.console;
+package com.stardust.autojs.runtime.console;
import android.content.Context;
import android.content.ContextWrapper;
@@ -10,8 +10,8 @@ import android.widget.TextView;
import com.stardust.enhancedfloaty.FloatyService;
import com.stardust.enhancedfloaty.ResizableExpandableFloaty;
import com.stardust.enhancedfloaty.ResizableExpandableFloatyWindow;
-import com.stardust.scriptdroid.R;
import com.stardust.util.ViewUtil;
+import com.stardust.autojs.R;
/**
* Created by Stardust on 2017/4/20.
@@ -47,7 +47,7 @@ public class ConsoleFloaty extends ResizableExpandableFloaty.AbstractResizableEx
private void ensureContextWrapper(Context context) {
if (mContextWrapper == null) {
- mContextWrapper = new ContextThemeWrapper(context, R.style.AppTheme);
+ mContextWrapper = new ContextThemeWrapper(context, R.style.ConsoleTheme);
}
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/console/ConsoleView.java b/autojs/src/main/java/com/stardust/autojs/runtime/console/ConsoleView.java
similarity index 97%
rename from app/src/main/java/com/stardust/scriptdroid/ui/console/ConsoleView.java
rename to autojs/src/main/java/com/stardust/autojs/runtime/console/ConsoleView.java
index 39821022..f11c38c4 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/console/ConsoleView.java
+++ b/autojs/src/main/java/com/stardust/autojs/runtime/console/ConsoleView.java
@@ -1,4 +1,4 @@
-package com.stardust.scriptdroid.ui.console;
+package com.stardust.autojs.runtime.console;
import android.content.Context;
import android.support.annotation.Nullable;
@@ -18,14 +18,14 @@ import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
+import com.stardust.autojs.R;
+import com.stardust.autojs.runtime.console.StardustConsole;
import com.stardust.enhancedfloaty.ResizableExpandableFloatyWindow;
-import com.stardust.scriptdroid.R;
import com.stardust.util.SparseArrayEntries;
/**
* Created by Stardust on 2017/5/2.
*/
-
public class ConsoleView extends FrameLayout implements StardustConsole.LogListener {
private static final SparseArray COLORS = new SparseArrayEntries()
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/console/StardustConsole.java b/autojs/src/main/java/com/stardust/autojs/runtime/console/StardustConsole.java
similarity index 86%
rename from app/src/main/java/com/stardust/scriptdroid/ui/console/StardustConsole.java
rename to autojs/src/main/java/com/stardust/autojs/runtime/console/StardustConsole.java
index 8d756982..73bae91d 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/console/StardustConsole.java
+++ b/autojs/src/main/java/com/stardust/autojs/runtime/console/StardustConsole.java
@@ -1,4 +1,4 @@
-package com.stardust.scriptdroid.ui.console;
+package com.stardust.autojs.runtime.console;
import android.content.Context;
import android.content.Intent;
@@ -11,10 +11,10 @@ import com.stardust.autojs.runtime.api.AbstractConsole;
import com.stardust.autojs.runtime.api.Console;
import com.stardust.enhancedfloaty.FloatyService;
import com.stardust.enhancedfloaty.ResizableExpandableFloatyWindow;
-import com.stardust.scriptdroid.R;
-import com.stardust.scriptdroid.autojs.AutoJs;
-import com.stardust.scriptdroid.external.floatingwindow.FloatingWindowManger;
+import com.stardust.util.FloatingWindowUtils;
+import com.stardust.util.IntentUtil;
import com.stardust.util.UiHandler;
+import com.stardust.autojs.R;
import java.util.ArrayList;
import java.util.List;
@@ -44,7 +44,7 @@ public class StardustConsole extends AbstractConsole {
void onLogClear();
}
- private final Console GLOBAL_CONSOLE = AutoJs.getInstance().getScriptEngineService().getGlobalConsole();
+ private final Console mGlobalConsole;
private List mLogs = new ArrayList<>();
private ResizableExpandableFloatyWindow mFloatyWindow;
private ConsoleFloaty mConsoleFloaty;
@@ -55,9 +55,14 @@ public class StardustConsole extends AbstractConsole {
private volatile boolean mShown = false;
public StardustConsole(UiHandler uiHandler) {
+ this(uiHandler, null);
+ }
+
+ public StardustConsole(UiHandler uiHandler, Console globalConsole) {
mUiHandler = uiHandler;
mConsoleFloaty = new ConsoleFloaty(this);
mFloatyWindow = new ResizableExpandableFloatyWindow(mConsoleFloaty);
+ mGlobalConsole = globalConsole;
}
public void setConsoleView(ConsoleView consoleView) {
@@ -80,7 +85,9 @@ public class StardustConsole extends AbstractConsole {
public void println(int level, CharSequence charSequence) {
Log log = new Log(level, charSequence + "\n");
mLogs.add(log);
- GLOBAL_CONSOLE.println(level, charSequence);
+ if (mGlobalConsole != null) {
+ mGlobalConsole.println(level, charSequence);
+ }
if (mLogListener != null) {
mLogListener.onNewLog(log);
}
@@ -91,7 +98,9 @@ public class StardustConsole extends AbstractConsole {
public void write(int level, CharSequence charSequence) {
Log log = new Log(level, charSequence);
mLogs.add(log);
- GLOBAL_CONSOLE.print(level, charSequence);
+ if (mGlobalConsole != null) {
+ mGlobalConsole.print(level, charSequence);
+ }
if (mLogListener != null) {
mLogListener.onNewLog(log);
}
@@ -108,8 +117,8 @@ public class StardustConsole extends AbstractConsole {
@Override
public void show() {
- if (!FloatingWindowManger.hasFloatingWindowPermission(mUiHandler.getContext())) {
- FloatingWindowManger.goToFloatingWindowPermissionSetting();
+ if (!FloatingWindowUtils.hasOverlayPermission(mUiHandler.getContext())) {
+ IntentUtil.goToAppDetailSettings(mUiHandler.getContext());
mUiHandler.toast(R.string.text_no_floating_window_permission);
}
startFloatyService();
diff --git a/app/src/main/res/drawable-hdpi/ic_close_white_24dp.png b/autojs/src/main/res/drawable-hdpi/ic_close_white_24dp.png
similarity index 100%
rename from app/src/main/res/drawable-hdpi/ic_close_white_24dp.png
rename to autojs/src/main/res/drawable-hdpi/ic_close_white_24dp.png
diff --git a/app/src/main/res/drawable-hdpi/ic_debug_console.png b/autojs/src/main/res/drawable-hdpi/ic_debug_console.png
similarity index 100%
rename from app/src/main/res/drawable-hdpi/ic_debug_console.png
rename to autojs/src/main/res/drawable-hdpi/ic_debug_console.png
diff --git a/app/src/main/res/drawable-hdpi/ic_settings_ethernet_white_24dp.png b/autojs/src/main/res/drawable-hdpi/ic_settings_ethernet_white_24dp.png
similarity index 100%
rename from app/src/main/res/drawable-hdpi/ic_settings_ethernet_white_24dp.png
rename to autojs/src/main/res/drawable-hdpi/ic_settings_ethernet_white_24dp.png
diff --git a/app/src/main/res/drawable-mdpi/ic_close_white_24dp.png b/autojs/src/main/res/drawable-mdpi/ic_close_white_24dp.png
similarity index 100%
rename from app/src/main/res/drawable-mdpi/ic_close_white_24dp.png
rename to autojs/src/main/res/drawable-mdpi/ic_close_white_24dp.png
diff --git a/app/src/main/res/drawable-mdpi/ic_debug_console.png b/autojs/src/main/res/drawable-mdpi/ic_debug_console.png
similarity index 100%
rename from app/src/main/res/drawable-mdpi/ic_debug_console.png
rename to autojs/src/main/res/drawable-mdpi/ic_debug_console.png
diff --git a/app/src/main/res/drawable-mdpi/ic_settings_ethernet_white_24dp.png b/autojs/src/main/res/drawable-mdpi/ic_settings_ethernet_white_24dp.png
similarity index 100%
rename from app/src/main/res/drawable-mdpi/ic_settings_ethernet_white_24dp.png
rename to autojs/src/main/res/drawable-mdpi/ic_settings_ethernet_white_24dp.png
diff --git a/app/src/main/res/drawable-xhdpi/ic_close_white_24dp.png b/autojs/src/main/res/drawable-xhdpi/ic_close_white_24dp.png
similarity index 100%
rename from app/src/main/res/drawable-xhdpi/ic_close_white_24dp.png
rename to autojs/src/main/res/drawable-xhdpi/ic_close_white_24dp.png
diff --git a/app/src/main/res/drawable-xhdpi/ic_debug_console.png b/autojs/src/main/res/drawable-xhdpi/ic_debug_console.png
similarity index 100%
rename from app/src/main/res/drawable-xhdpi/ic_debug_console.png
rename to autojs/src/main/res/drawable-xhdpi/ic_debug_console.png
diff --git a/app/src/main/res/drawable-xhdpi/ic_settings_ethernet_white_24dp.png b/autojs/src/main/res/drawable-xhdpi/ic_settings_ethernet_white_24dp.png
similarity index 100%
rename from app/src/main/res/drawable-xhdpi/ic_settings_ethernet_white_24dp.png
rename to autojs/src/main/res/drawable-xhdpi/ic_settings_ethernet_white_24dp.png
diff --git a/app/src/main/res/drawable-xxhdpi/ic_close_white_24dp.png b/autojs/src/main/res/drawable-xxhdpi/ic_close_white_24dp.png
similarity index 100%
rename from app/src/main/res/drawable-xxhdpi/ic_close_white_24dp.png
rename to autojs/src/main/res/drawable-xxhdpi/ic_close_white_24dp.png
diff --git a/app/src/main/res/drawable-xxhdpi/ic_debug_console.png b/autojs/src/main/res/drawable-xxhdpi/ic_debug_console.png
similarity index 100%
rename from app/src/main/res/drawable-xxhdpi/ic_debug_console.png
rename to autojs/src/main/res/drawable-xxhdpi/ic_debug_console.png
diff --git a/app/src/main/res/drawable-xxhdpi/ic_settings_ethernet_white_24dp.png b/autojs/src/main/res/drawable-xxhdpi/ic_settings_ethernet_white_24dp.png
similarity index 100%
rename from app/src/main/res/drawable-xxhdpi/ic_settings_ethernet_white_24dp.png
rename to autojs/src/main/res/drawable-xxhdpi/ic_settings_ethernet_white_24dp.png
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_close_white_24dp.png b/autojs/src/main/res/drawable-xxxhdpi/ic_close_white_24dp.png
similarity index 100%
rename from app/src/main/res/drawable-xxxhdpi/ic_close_white_24dp.png
rename to autojs/src/main/res/drawable-xxxhdpi/ic_close_white_24dp.png
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_debug_console.png b/autojs/src/main/res/drawable-xxxhdpi/ic_debug_console.png
similarity index 100%
rename from app/src/main/res/drawable-xxxhdpi/ic_debug_console.png
rename to autojs/src/main/res/drawable-xxxhdpi/ic_debug_console.png
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_settings_ethernet_white_24dp.png b/autojs/src/main/res/drawable-xxxhdpi/ic_settings_ethernet_white_24dp.png
similarity index 100%
rename from app/src/main/res/drawable-xxxhdpi/ic_settings_ethernet_white_24dp.png
rename to autojs/src/main/res/drawable-xxxhdpi/ic_settings_ethernet_white_24dp.png
diff --git a/app/src/main/res/drawable/circle_cool_black.xml b/autojs/src/main/res/drawable/circle_cool_black.xml
similarity index 100%
rename from app/src/main/res/drawable/circle_cool_black.xml
rename to autojs/src/main/res/drawable/circle_cool_black.xml
diff --git a/app/src/main/res/drawable/floating_console_bg_bottom.xml b/autojs/src/main/res/drawable/floating_console_bg_bottom.xml
similarity index 100%
rename from app/src/main/res/drawable/floating_console_bg_bottom.xml
rename to autojs/src/main/res/drawable/floating_console_bg_bottom.xml
diff --git a/app/src/main/res/drawable/floating_console_bg_top.xml b/autojs/src/main/res/drawable/floating_console_bg_top.xml
similarity index 100%
rename from app/src/main/res/drawable/floating_console_bg_top.xml
rename to autojs/src/main/res/drawable/floating_console_bg_top.xml
diff --git a/app/src/main/res/drawable/ic_move_cursor.png b/autojs/src/main/res/drawable/ic_move_cursor.png
similarity index 100%
rename from app/src/main/res/drawable/ic_move_cursor.png
rename to autojs/src/main/res/drawable/ic_move_cursor.png
diff --git a/app/src/main/res/drawable/ic_remove_white_24dp.png b/autojs/src/main/res/drawable/ic_remove_white_24dp.png
similarity index 100%
rename from app/src/main/res/drawable/ic_remove_white_24dp.png
rename to autojs/src/main/res/drawable/ic_remove_white_24dp.png
diff --git a/app/src/main/res/drawable/ic_resizer.png b/autojs/src/main/res/drawable/ic_resizer.png
similarity index 100%
rename from app/src/main/res/drawable/ic_resizer.png
rename to autojs/src/main/res/drawable/ic_resizer.png
diff --git a/app/src/main/res/layout/console_view.xml b/autojs/src/main/res/layout/console_view.xml
similarity index 97%
rename from app/src/main/res/layout/console_view.xml
rename to autojs/src/main/res/layout/console_view.xml
index 22960912..8c9a3e79 100644
--- a/app/src/main/res/layout/console_view.xml
+++ b/autojs/src/main/res/layout/console_view.xml
@@ -47,7 +47,7 @@
android:layout_height="match_parent"
android:text="@string/ok"
android:textColor="@android:color/white"
- android:theme="@style/AppTheme.Console"/>
+ android:theme="@style/ConsoleTheme"/>
\ No newline at end of file
diff --git a/autojs/src/main/res/layout/floating_console_expand.xml b/autojs/src/main/res/layout/floating_console_expand.xml
new file mode 100644
index 00000000..adb18c44
--- /dev/null
+++ b/autojs/src/main/res/layout/floating_console_expand.xml
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/floating_window_collapse.xml b/autojs/src/main/res/layout/floating_window_collapse.xml
similarity index 100%
rename from app/src/main/res/layout/floating_window_collapse.xml
rename to autojs/src/main/res/layout/floating_window_collapse.xml
diff --git a/autojs/src/main/res/values/strings.xml b/autojs/src/main/res/values/strings.xml
index fd5d631e..8a8a2fa5 100644
--- a/autojs/src/main/res/values/strings.xml
+++ b/autojs/src/main/res/values/strings.xml
@@ -8,5 +8,11 @@
没有正在运行的脚本
已停止%d个正在运行的脚本
本脚本需要此安卓版本以上才能运行:
+ 确定
+ 取消
+ 控制台
+ 没有悬浮窗权限
+ 使脚本自动操作(点击、长按、滑动等)所需,若关闭则只能执行不涉及自动操作的脚本。
+
diff --git a/autojs/src/main/res/values/styles.xml b/autojs/src/main/res/values/styles.xml
new file mode 100644
index 00000000..a95206c6
--- /dev/null
+++ b/autojs/src/main/res/values/styles.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/accessibility_service_config.xml b/autojs/src/main/res/xml/accessibility_service_config.xml
similarity index 100%
rename from app/src/main/res/xml/accessibility_service_config.xml
rename to autojs/src/main/res/xml/accessibility_service_config.xml
diff --git a/automator/build.gradle b/automator/build.gradle
index 97e8cf44..cdb00d73 100644
--- a/automator/build.gradle
+++ b/automator/build.gradle
@@ -21,6 +21,12 @@ android {
}
}
+repositories {
+ flatDir {
+ dirs 'libs'
+ }
+}
+
dependencies {
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
diff --git a/automator/src/main/java/com/stardust/view/accessibility/AccessibilityService.java b/automator/src/main/java/com/stardust/view/accessibility/AccessibilityService.java
index 5b773127..4e8105cf 100644
--- a/automator/src/main/java/com/stardust/view/accessibility/AccessibilityService.java
+++ b/automator/src/main/java/com/stardust/view/accessibility/AccessibilityService.java
@@ -1,9 +1,18 @@
package com.stardust.view.accessibility;
+import android.content.Context;
+import android.os.Build;
import android.support.annotation.CallSuper;
+import android.util.Log;
+import android.view.KeyEvent;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CopyOnWriteArraySet;
@@ -11,18 +20,56 @@ import java.util.concurrent.CopyOnWriteArraySet;
* Created by Stardust on 2017/5/2.
*/
-public abstract class AccessibilityService extends android.accessibilityservice.AccessibilityService {
+public class AccessibilityService extends android.accessibilityservice.AccessibilityService {
private AccessibilityNodeInfo mRootInActiveWindow;
- @CallSuper
+
+ private static final String TAG = "AccessibilityService";
+
+ private static final SortedMap mDelegates = new TreeMap<>();
+ private static final Object LOCK = new Object();
+ private static AccessibilityService instance;
+ private static boolean containsAllEventTypes = false;
+ private static final Set eventTypes = new HashSet<>();
+
+ public static void addDelegate(int uniquePriority, AccessibilityDelegate delegate) {
+ mDelegates.put(uniquePriority, delegate);
+ Set set = delegate.getEventTypes();
+ if (set == null)
+ containsAllEventTypes = true;
+ else
+ eventTypes.addAll(set);
+ }
+
+ public static boolean isEnable(Context context) {
+ return AccessibilityServiceUtils.isAccessibilityServiceEnabled(context, AccessibilityService.class);
+ }
+
+ public static AccessibilityService getInstance() {
+ return instance;
+ }
+
@Override
- public void onAccessibilityEvent(AccessibilityEvent event) {
+ public void onAccessibilityEvent(final AccessibilityEvent event) {
+ Log.v(TAG, "onAccessibilityEvent: " + event);
if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED
|| event.getEventType() == AccessibilityEvent.TYPE_VIEW_HOVER_ENTER
|| event.getEventType() == AccessibilityEvent.TYPE_VIEW_HOVER_EXIT) {
mRootInActiveWindow = super.getRootInActiveWindow();
}
+ if (!containsAllEventTypes && !eventTypes.contains(event.getEventType()))
+ return;
+ for (Map.Entry entry : mDelegates.entrySet()) {
+ AccessibilityDelegate delegate = entry.getValue();
+ Set types = delegate.getEventTypes();
+ if (types != null && !delegate.getEventTypes().contains(event.getEventType()))
+ continue;
+ long start = System.currentTimeMillis();
+ if (delegate.onAccessibilityEvent(AccessibilityService.this, event))
+ break;
+ Log.v(TAG, "millis: " + (System.currentTimeMillis() - start) + " delegate: " + entry.getValue().getClass().getName());
+ }
}
@Override
@@ -35,4 +82,57 @@ public abstract class AccessibilityService extends android.accessibilityservice.
}
+ @Override
+ protected boolean onKeyEvent(KeyEvent event) {
+ Log.v(TAG, "onKeyEvent: " + event);
+ return super.onKeyEvent(event);
+ }
+
+ @Override
+ protected boolean onGesture(int gestureId) {
+ Log.v(TAG, "onGesture: " + gestureId);
+ return super.onGesture(gestureId);
+ }
+
+ @Override
+ public void onInterrupt() {
+ }
+
+ @Override
+ public void onDestroy() {
+ instance = null;
+ super.onDestroy();
+ }
+
+
+ @Override
+ protected void onServiceConnected() {
+ Log.v(TAG, "onServiceConnected: " + getServiceInfo().toString());
+ instance = this;
+ super.onServiceConnected();
+ synchronized (LOCK) {
+ LOCK.notifyAll();
+ }
+ // FIXME: 2017/2/12 有时在无障碍中开启服务后这里不会调用服务也不会运行,安卓的BUG???
+ }
+
+ public static boolean disable() {
+ if (instance != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ instance.disableSelf();
+ return true;
+ }
+ return false;
+ }
+
+ public static void waitForEnabled(long timeOut) {
+ synchronized (LOCK) {
+ try {
+ LOCK.wait(timeOut);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+
}
diff --git a/automator/src/main/java/com/stardust/view/accessibility/AccessibilityServiceUtils.java b/automator/src/main/java/com/stardust/view/accessibility/AccessibilityServiceUtils.java
index ac542281..35355bb0 100644
--- a/automator/src/main/java/com/stardust/view/accessibility/AccessibilityServiceUtils.java
+++ b/automator/src/main/java/com/stardust/view/accessibility/AccessibilityServiceUtils.java
@@ -7,6 +7,8 @@ import android.content.Intent;
import android.provider.Settings;
import android.text.TextUtils;
+import java.util.Locale;
+
/**
* Created by Stardust on 2017/1/26.
diff --git a/app/src/main/java/com/stardust/app/SimpleActivityLifecycleCallbacks.java b/common/src/main/java/com/stardust/app/SimpleActivityLifecycleCallbacks.java
similarity index 100%
rename from app/src/main/java/com/stardust/app/SimpleActivityLifecycleCallbacks.java
rename to common/src/main/java/com/stardust/app/SimpleActivityLifecycleCallbacks.java
diff --git a/common/src/main/java/com/stardust/util/FloatingWindowUtils.java b/common/src/main/java/com/stardust/util/FloatingWindowUtils.java
index f04d0133..3a69429c 100644
--- a/common/src/main/java/com/stardust/util/FloatingWindowUtils.java
+++ b/common/src/main/java/com/stardust/util/FloatingWindowUtils.java
@@ -3,6 +3,8 @@ package com.stardust.util;
import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
+import android.os.Build;
+import android.provider.Settings;
import android.widget.Toast;
/**
@@ -12,7 +14,7 @@ import android.widget.Toast;
public class FloatingWindowUtils {
public static boolean checkFloatingWindowPermission(Context context, int messageResId) {
- if (!isFloatingWindowPermitted(context)) {
+ if (!hasOverlayPermission(context)) {
Toast.makeText(context, messageResId, Toast.LENGTH_SHORT).show();
IntentUtil.goToAppDetailSettings(context, context.getPackageName());
return false;
@@ -28,4 +30,10 @@ public class FloatingWindowUtils {
== PackageManager.PERMISSION_GRANTED;
}
+ public static boolean hasOverlayPermission(Context context) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ return Settings.canDrawOverlays(context);
+ }
+ return true;
+ }
}
diff --git a/inrt/.gitignore b/inrt/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/inrt/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/inrt/build.gradle b/inrt/build.gradle
new file mode 100644
index 00000000..0a08778e
--- /dev/null
+++ b/inrt/build.gradle
@@ -0,0 +1,43 @@
+apply plugin: 'com.android.application'
+
+android {
+ compileSdkVersion 25
+ buildToolsVersion "25.0.2"
+
+ defaultConfig {
+ applicationId "com.stardust.auojs.inrt"
+ minSdkVersion 19
+ targetSdkVersion 23
+ versionCode 1
+ versionName "0.0.1"
+ testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ ndk {
+ abiFilters 'armeabi-v7a'
+ }
+
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ }
+ }
+}
+
+repositories {
+ flatDir {
+ dirs 'libs'
+ }
+}
+
+dependencies {
+ compile fileTree(dir: 'libs', include: ['*.jar'])
+ androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
+ exclude group: 'com.android.support', module: 'support-annotations'
+ })
+ compile 'com.android.support:appcompat-v7:25.3.0'
+ testCompile 'junit:junit:4.12'
+ compile project(':automator')
+ compile project(':common')
+ compile project(':autojs')
+}
diff --git a/inrt/libs/emulatorview-release.aar b/inrt/libs/emulatorview-release.aar
new file mode 100644
index 00000000..84e3e334
Binary files /dev/null and b/inrt/libs/emulatorview-release.aar differ
diff --git a/inrt/libs/libtermexec-release.aar b/inrt/libs/libtermexec-release.aar
new file mode 100644
index 00000000..f49ae349
Binary files /dev/null and b/inrt/libs/libtermexec-release.aar differ
diff --git a/inrt/libs/term-debug.aar b/inrt/libs/term-debug.aar
new file mode 100644
index 00000000..b32ad432
Binary files /dev/null and b/inrt/libs/term-debug.aar differ
diff --git a/inrt/proguard-rules.pro b/inrt/proguard-rules.pro
new file mode 100644
index 00000000..27b6816c
--- /dev/null
+++ b/inrt/proguard-rules.pro
@@ -0,0 +1,25 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in E:\YiBin\eclipse\Android_SDK_windows/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/inrt/src/androidTest/java/com/stardust/auojs/inrt/ExampleInstrumentedTest.java b/inrt/src/androidTest/java/com/stardust/auojs/inrt/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..c4dc2fb6
--- /dev/null
+++ b/inrt/src/androidTest/java/com/stardust/auojs/inrt/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.stardust.auojs.inrt;
+
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumentation test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() throws Exception {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getTargetContext();
+
+ assertEquals("com.stardust.auojs.inrt", appContext.getPackageName());
+ }
+}
diff --git a/inrt/src/main/AndroidManifest.xml b/inrt/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..8db7fb6c
--- /dev/null
+++ b/inrt/src/main/AndroidManifest.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/inrt/src/main/assets/script.js b/inrt/src/main/assets/script.js
new file mode 100644
index 00000000..f8f37872
--- /dev/null
+++ b/inrt/src/main/assets/script.js
@@ -0,0 +1,5 @@
+"auto";
+launch("com.tencent.mm");
+sleep(500);
+while(!click("发现"));
+while(!click("扫一扫"));
\ No newline at end of file
diff --git a/inrt/src/main/java/com/stardust/auojs/inrt/App.java b/inrt/src/main/java/com/stardust/auojs/inrt/App.java
new file mode 100644
index 00000000..12551ef8
--- /dev/null
+++ b/inrt/src/main/java/com/stardust/auojs/inrt/App.java
@@ -0,0 +1,18 @@
+package com.stardust.auojs.inrt;
+
+import android.app.Application;
+
+import com.stardust.auojs.inrt.rt.AutoJs;
+
+/**
+ * Created by Stardust on 2017/7/1.
+ */
+
+public class App extends Application {
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ AutoJs.initInstance(this);
+ }
+}
diff --git a/inrt/src/main/java/com/stardust/auojs/inrt/MainActivity.java b/inrt/src/main/java/com/stardust/auojs/inrt/MainActivity.java
new file mode 100644
index 00000000..b03d9189
--- /dev/null
+++ b/inrt/src/main/java/com/stardust/auojs/inrt/MainActivity.java
@@ -0,0 +1,29 @@
+package com.stardust.auojs.inrt;
+
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+
+import com.stardust.auojs.inrt.rt.AutoJs;
+import com.stardust.autojs.execution.ExecutionConfig;
+import com.stardust.autojs.script.StringScriptSource;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+public class MainActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ try {
+ InputStream is = getAssets().open("script.js");
+ byte[] data = new byte[is.available()];
+ is.read(data);
+ String js = new String(data);
+ StringScriptSource source = new StringScriptSource("