diff --git a/.idea/misc.xml b/.idea/misc.xml
index 157352a8..497cbeb5 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -42,7 +42,7 @@
-
+
diff --git a/app-release-1.17.0215.apk b/app-release-1.17.0215(2).apk
similarity index 69%
rename from app-release-1.17.0215.apk
rename to app-release-1.17.0215(2).apk
index 2b1b9040..8a0706ed 100644
Binary files a/app-release-1.17.0215.apk and b/app-release-1.17.0215(2).apk differ
diff --git a/app/build.gradle b/app/build.gradle
index e8379456..77b92d0d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -7,8 +7,8 @@ android {
applicationId "com.stardust.scriptdroid"
minSdkVersion 19
targetSdkVersion 23
- versionCode 25
- versionName "1.17.0215"
+ versionCode 27
+ versionName "1.17.0215(2)"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
@@ -46,6 +46,9 @@ repositories {
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
+ debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
+ releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
+ testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.android.support:design:25.1.0'
diff --git a/app/src/main/java/com/stardust/scriptdroid/App.java b/app/src/main/java/com/stardust/scriptdroid/App.java
index 5b6a1e61..c9d8c13c 100644
--- a/app/src/main/java/com/stardust/scriptdroid/App.java
+++ b/app/src/main/java/com/stardust/scriptdroid/App.java
@@ -5,6 +5,8 @@ import android.app.Application;
import android.os.Bundle;
import android.preference.PreferenceManager;
+import com.squareup.leakcanary.LeakCanary;
+import com.stardust.scriptdroid.bounds_assist.BoundsAssistant;
import com.stardust.scriptdroid.droid.runtime.action.ActionPerformAccessibilityDelegate;
import com.stardust.scriptdroid.record.AccessibilityRecorderDelegate;
import com.stardust.scriptdroid.service.AccessibilityWatchDogService;
@@ -35,6 +37,12 @@ public class App extends Application {
public void onCreate() {
super.onCreate();
+ if (LeakCanary.isInAnalyzerProcess(this)) {
+ // This process is dedicated to LeakCanary for heap analysis.
+ // You should not init your app in this process.
+ return;
+ }
+ LeakCanary.install(this);
if (!BuildConfig.DEBUG)
Thread.setDefaultUncaughtExceptionHandler(new CrashHandler(ErrorReportActivity.class));
instance = new WeakReference<>(this);
@@ -43,9 +51,12 @@ public class App extends Application {
initAccessibilityServiceDelegates();
}
+
private void initAccessibilityServiceDelegates() {
AccessibilityWatchDogService.addDelegateIfNeeded(100, ActionPerformAccessibilityDelegate.class);
AccessibilityWatchDogService.addDelegateIfNeeded(200, AccessibilityRecorderDelegate.getInstance());
+ AccessibilityWatchDogService.addDelegateIfNeeded(300, BoundsAssistant.class);
+
}
private void registerActivityLifecycleCallback() {
diff --git a/app/src/main/java/com/stardust/scriptdroid/bounds_assist/BoundsAssistant.java b/app/src/main/java/com/stardust/scriptdroid/bounds_assist/BoundsAssistant.java
index 6cc26512..57fdc58b 100644
--- a/app/src/main/java/com/stardust/scriptdroid/bounds_assist/BoundsAssistant.java
+++ b/app/src/main/java/com/stardust/scriptdroid/bounds_assist/BoundsAssistant.java
@@ -1,5 +1,6 @@
package com.stardust.scriptdroid.bounds_assist;
+import android.accessibilityservice.AccessibilityService;
import android.graphics.Rect;
import android.preference.PreferenceManager;
import android.view.accessibility.AccessibilityEvent;
@@ -10,15 +11,16 @@ import com.afollestad.materialdialogs.MaterialDialog;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R;
+import com.stardust.scriptdroid.service.AccessibilityDelegate;
/**
* Created by Stardust on 2017/2/4.
*/
-public class BoundsAssistant {
- public static final String KEY_BOUNDS_ASSIST_ENABLE = "ASSIST_MODE_ENABLE";
+public class BoundsAssistant implements AccessibilityDelegate {
+ public static final String KEY_BOUNDS_ASSIST_ENABLE = "ASSIST_MODE_ENABLE";
private static boolean assistModeEnable;
private static BoundsAssistClipList boundsAssistClipList = SharedPrefBoundsAssistClipList.getInstance();
@@ -43,7 +45,7 @@ public class BoundsAssistant {
.show();
}
- public static void performAssistance(AccessibilityEvent event) {
+ private static void performAssistance(AccessibilityEvent event) {
if (!assistModeEnable) {
return;
}
@@ -59,6 +61,12 @@ public class BoundsAssistant {
}
}
+ @Override
+ public boolean onAccessibilityEvent(AccessibilityService service, AccessibilityEvent event) {
+ performAssistance(event);
+ return false;
+ }
+
public static Rect getBoundsInScreen(AccessibilityNodeInfo nodeInfo) {
Rect rect = new Rect();
nodeInfo.getBoundsInScreen(rect);
@@ -80,4 +88,5 @@ public class BoundsAssistant {
assistModeEnable = PreferenceManager.getDefaultSharedPreferences(App.getApp()).getBoolean(KEY_BOUNDS_ASSIST_ENABLE, false);
}
+
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/droid/Droid.java b/app/src/main/java/com/stardust/scriptdroid/droid/Droid.java
index 396de90e..01974fa3 100644
--- a/app/src/main/java/com/stardust/scriptdroid/droid/Droid.java
+++ b/app/src/main/java/com/stardust/scriptdroid/droid/Droid.java
@@ -13,6 +13,7 @@ import com.stardust.scriptdroid.file.FileUtils;
import java.io.File;
import java.io.FileNotFoundException;
+import java.io.Serializable;
import timber.log.Timber;
@@ -30,7 +31,7 @@ public class Droid {
public static final String UI = "\"ui\";";
- public interface OnRunFinishedListener {
+ public interface OnRunFinishedListener extends Serializable {
void onRunFinished(Object result, Exception e);
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/droid/script/ScriptExecuteActivity.java b/app/src/main/java/com/stardust/scriptdroid/droid/script/ScriptExecuteActivity.java
index 47346969..717a41df 100644
--- a/app/src/main/java/com/stardust/scriptdroid/droid/script/ScriptExecuteActivity.java
+++ b/app/src/main/java/com/stardust/scriptdroid/droid/script/ScriptExecuteActivity.java
@@ -16,44 +16,52 @@ import static com.stardust.scriptdroid.droid.Droid.JAVA_SCRIPT_ENGINE;
public class ScriptExecuteActivity extends Activity {
- private static String script;
- private static Droid.OnRunFinishedListener onRunFinishedListener;
- private static RunningConfig runningConfig;
+ private static final String EXTRA_SCRIPT = "EXTRA_SCRIPT";
+ private static final String EXTRA_ON_RUN_FINISHED_LISTENER = "EXTRA_ON_RUN_FINISHED_LISTENER";
private Object mResult;
+ private String mScript;
+ private Droid.OnRunFinishedListener mOnRunFinishedListener;
public static void runScript(String script, Droid.OnRunFinishedListener listener, RunningConfig config) {
- ScriptExecuteActivity.script = script;
- ScriptExecuteActivity.onRunFinishedListener = listener;
- ScriptExecuteActivity.runningConfig = config;
- App.getApp().startActivity(new Intent(App.getApp(), ScriptExecuteActivity.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
+ App.getApp().startActivity(new Intent(App.getApp(), ScriptExecuteActivity.class)
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ .putExtra(EXTRA_SCRIPT, script)
+ .putExtra(EXTRA_ON_RUN_FINISHED_LISTENER, listener));
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ handleIntent(getIntent());
runScript();
}
+ private void handleIntent(Intent intent) {
+ mScript = intent.getStringExtra(EXTRA_SCRIPT);
+ mOnRunFinishedListener = (Droid.OnRunFinishedListener) intent.getSerializableExtra(EXTRA_ON_RUN_FINISHED_LISTENER);
+ }
+
private void runScript() {
JAVA_SCRIPT_ENGINE.set("activity", Activity.class, this);
try {
- mResult = JAVA_SCRIPT_ENGINE.execute(script);
+ mResult = JAVA_SCRIPT_ENGINE.execute(mScript);
} catch (Exception e) {
- onRunFinishedListener.onRunFinished(null, e);
+ mOnRunFinishedListener.onRunFinished(null, e);
finish();
}
}
@Override
public void finish() {
- onRunFinishedListener.onRunFinished(mResult, null);
+ mOnRunFinishedListener.onRunFinished(mResult, null);
super.finish();
}
@Override
protected void onDestroy() {
super.onDestroy();
+ JAVA_SCRIPT_ENGINE.set("activity", Activity.class, null);
JAVA_SCRIPT_ENGINE.removeAndDestroy(Thread.currentThread());
}
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/external/notification/record/ActionRecordNotificationHandleService.java b/app/src/main/java/com/stardust/scriptdroid/external/notification/record/ActionRecordNotificationHandleService.java
index 15d8089e..2ba5e1c8 100644
--- a/app/src/main/java/com/stardust/scriptdroid/external/notification/record/ActionRecordNotificationHandleService.java
+++ b/app/src/main/java/com/stardust/scriptdroid/external/notification/record/ActionRecordNotificationHandleService.java
@@ -29,6 +29,7 @@ public class ActionRecordNotificationHandleService extends Service {
private static final int ACTION_STOP = 17771;
private static final int ACTION_START_OR_PAUSE = 17772;
private static final int ACTION_DELETE = 17773;
+ private static final int ACTION_REDO = 17774;
public static PendingIntent getStartOrPauseIntent() {
Intent intent = new Intent(App.getApp(), ActionRecordNotificationHandleService.class)
@@ -51,6 +52,15 @@ public class ActionRecordNotificationHandleService extends Service {
return PendingIntent.getService(App.getApp(), ACTION_DELETE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
+
+ public static PendingIntent getRedoIntent() {
+ Intent intent = new Intent(App.getApp(), ActionRecordNotificationHandleService.class)
+ .putExtra(EXTRA_INTENT_VALID, true)
+ .putExtra(EXTRA_ACTION, ACTION_REDO);
+ return PendingIntent.getService(App.getApp(), ACTION_REDO, intent, PendingIntent.FLAG_UPDATE_CURRENT);
+ }
+
+
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
boolean intentValid = intent.getBooleanExtra(EXTRA_INTENT_VALID, false);
@@ -65,16 +75,23 @@ public class ActionRecordNotificationHandleService extends Service {
switch (action) {
case ACTION_STOP:
stopRecord();
+ collapseNotificationBar();
break;
case ACTION_START_OR_PAUSE:
startOrPauseRecord();
+ collapseNotificationBar();
break;
case ACTION_DELETE:
+ ActionRecordSwitchNotification.cancelNotification();
stopRecordIfNeeded();
+ break;
+ case ACTION_REDO:
+ redoRecord();
+ break;
}
- collapseNotificationBar();
}
+
private void collapseNotificationBar() {
sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
}
@@ -115,9 +132,18 @@ public class ActionRecordNotificationHandleService extends Service {
}
}
+ private void redoRecord() {
+ if (AccessibilityRecorderDelegate.getInstance().getState() != STOPPED) {
+ AccessibilityRecorderDelegate.getInstance().stopRecord();
+ ActionRecordSwitchView.getInstance().setState(STOPPED);
+ }
+ }
+
+
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
+
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/external/notification/record/ActionRecordSwitchNotification.java b/app/src/main/java/com/stardust/scriptdroid/external/notification/record/ActionRecordSwitchNotification.java
index 6cf13fd0..91b389ba 100644
--- a/app/src/main/java/com/stardust/scriptdroid/external/notification/record/ActionRecordSwitchNotification.java
+++ b/app/src/main/java/com/stardust/scriptdroid/external/notification/record/ActionRecordSwitchNotification.java
@@ -33,4 +33,9 @@ public class ActionRecordSwitchNotification {
NotificationManager notificationManager = (NotificationManager) App.getApp().getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(NOTIFY_ID, notification);
}
+
+ public static void cancelNotification() {
+ NotificationManager notificationManager = (NotificationManager) App.getApp().getSystemService(Context.NOTIFICATION_SERVICE);
+ notificationManager.cancel(NOTIFY_ID);
+ }
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/external/notification/record/ActionRecordSwitchView.java b/app/src/main/java/com/stardust/scriptdroid/external/notification/record/ActionRecordSwitchView.java
index f59a1a0e..6b45e1e7 100644
--- a/app/src/main/java/com/stardust/scriptdroid/external/notification/record/ActionRecordSwitchView.java
+++ b/app/src/main/java/com/stardust/scriptdroid/external/notification/record/ActionRecordSwitchView.java
@@ -50,5 +50,7 @@ public class ActionRecordSwitchView extends RemoteViews {
private void setUpOnClick() {
setOnClickPendingIntent(R.id.stop, ActionRecordNotificationHandleService.getStopIntent());
setOnClickPendingIntent(R.id.start_or_pause, ActionRecordNotificationHandleService.getStartOrPauseIntent());
+ setOnClickPendingIntent(R.id.close, ActionRecordNotificationHandleService.getDeleteIntent());
+ setOnClickPendingIntent(R.id.redo, ActionRecordNotificationHandleService.getRedoIntent());
}
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/record/ActionRecorder.java b/app/src/main/java/com/stardust/scriptdroid/record/ActionRecorder.java
index 218106b5..cbc5b165 100644
--- a/app/src/main/java/com/stardust/scriptdroid/record/ActionRecorder.java
+++ b/app/src/main/java/com/stardust/scriptdroid/record/ActionRecorder.java
@@ -62,6 +62,8 @@ public class ActionRecorder {
@Override
public void onAccessibilityEvent(AccessibilityEvent event, StringBuilder sb) {
AccessibilityNodeInfo source = event.getSource();
+ if (source == null)
+ return;
String bounds = boundsToString(getBoundsInScreen(source));
source.recycle();
onAccessibilityEvent(event, bounds, sb);
diff --git a/app/src/main/java/com/stardust/scriptdroid/service/AccessibilityWatchDogService.java b/app/src/main/java/com/stardust/scriptdroid/service/AccessibilityWatchDogService.java
index ce68959b..bb66fbbd 100644
--- a/app/src/main/java/com/stardust/scriptdroid/service/AccessibilityWatchDogService.java
+++ b/app/src/main/java/com/stardust/scriptdroid/service/AccessibilityWatchDogService.java
@@ -8,6 +8,7 @@ import android.view.accessibility.AccessibilityEvent;
import com.stardust.scriptdroid.App;
import com.stardust.view.accessibility.AccessibilityServiceUtils;
+import java.lang.ref.WeakReference;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
@@ -21,7 +22,7 @@ public class AccessibilityWatchDogService extends AccessibilityService {
private static final String TAG = "AccessibilityWatchDog";
private static final SortedMap mDelegates = new TreeMap<>();
- private static AccessibilityWatchDogService instance;
+ private static WeakReference instance;
public static void addDelegate(AccessibilityDelegate delegate, int uniquePriority) {
synchronized (mDelegates) {
@@ -62,7 +63,9 @@ public class AccessibilityWatchDogService extends AccessibilityService {
}
public static AccessibilityWatchDogService getInstance() {
- return instance;
+ if (instance == null)
+ return null;
+ return instance.get();
}
@Override
@@ -85,12 +88,12 @@ public class AccessibilityWatchDogService extends AccessibilityService {
super.onServiceConnected();
// FIXME: 2017/2/12 有时在无障碍中开启服务后这里不会调用服务也不会运行,安卓的BUG???
Log.v(TAG, "onServiceConnected");
- instance = this;
+ instance = new WeakReference<>(this);
}
public static void disable() {
- if (instance != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
- instance.disableSelf();
+ if (instance != null && instance.get() != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ instance.get().disableSelf();
} else {
AccessibilityServiceUtils.goToAccessibilitySetting(App.getApp());
}
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 b02cb855..a380bfa5 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
@@ -1,7 +1,9 @@
package com.stardust.scriptdroid.ui.edit;
+import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.Snackbar;
@@ -18,6 +20,7 @@ import com.jecelyin.editor.v2.common.SaveListener;
import com.jecelyin.editor.v2.ui.EditorDelegate;
import com.jecelyin.editor.v2.view.EditorView;
import com.jecelyin.editor.v2.view.menu.MenuDef;
+import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.droid.Droid;
@@ -40,6 +43,18 @@ public class EditActivity extends Editor920Activity {
private static final String KEY_EDIT_ACTIVITY_FIRST_USE = "KEY_EDIT_ACTIVITY_FIRST_USE";
+ private static final String ACTION_ON_RUN_FINISHED = "ACTION_ON_RUN_FINISHED";
+ private static final String EXTRA_EXCEPTION = "EXTRA_EXCEPTION";
+
+ private static final Droid.OnRunFinishedListener ON_RUN_FINISHED_LISTENER = new Droid.OnRunFinishedListener() {
+
+ @Override
+ public void onRunFinished(Object result, Exception e) {
+ App.getApp().sendBroadcast(new Intent(ACTION_ON_RUN_FINISHED)
+ .putExtra(EXTRA_EXCEPTION, e));
+ }
+ };
+
public static void editFile(Context context, String path) {
editFile(context, null, path);
}
@@ -57,12 +72,24 @@ public class EditActivity extends Editor920Activity {
private DrawerLayout mDrawerLayout;
private EditorDelegate mEditorDelegate;
private SparseArray mMenuMap;
+ private BroadcastReceiver mOnRunFinishedReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (intent.getAction().equals(ACTION_ON_RUN_FINISHED)) {
+ setMenuStatus(R.id.run, MenuDef.STATUS_NORMAL);
+ Exception e = (Exception) intent.getSerializableExtra(EXTRA_EXCEPTION);
+ if (e != null)
+ Snackbar.make(mView, getString(R.string.text_error) + ": " + e.getMessage(), Snackbar.LENGTH_INDEFINITE).show();
+ }
+ }
+ };
public void onCreate(Bundle b) {
super.onCreate(b);
handleIntent();
setUpUI();
setUpEditor();
+ registerReceiver(mOnRunFinishedReceiver, new IntentFilter(ACTION_ON_RUN_FINISHED));
}
@Override
@@ -175,19 +202,7 @@ public class EditActivity extends Editor920Activity {
private void run() {
Snackbar.make(mView, R.string.text_start_running, Snackbar.LENGTH_SHORT).show();
setMenuStatus(R.id.run, MenuDef.STATUS_DISABLED);
- Droid.getInstance().runScriptFile(mFile, new Droid.OnRunFinishedListener() {
- @Override
- public void onRunFinished(Object result, final Exception e) {
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- setMenuStatus(R.id.run, MenuDef.STATUS_NORMAL);
- if (e != null)
- Snackbar.make(mView, getString(R.string.text_error) + ": " + e.getMessage(), Snackbar.LENGTH_INDEFINITE).show();
- }
- });
- }
- });
+ Droid.getInstance().runScriptFile(mFile, ON_RUN_FINISHED_LISTENER);
}
@ViewBinding.Click(R.id.undo)
@@ -261,4 +276,10 @@ public class EditActivity extends Editor920Activity {
public void doCommand(Command command) {
mEditorDelegate.doCommand(command);
}
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ unregisterReceiver(mOnRunFinishedReceiver);
+ }
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/error/IssueReportActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/error/IssueReportActivity.java
index f7c90523..66ecfed6 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/error/IssueReportActivity.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/error/IssueReportActivity.java
@@ -125,7 +125,7 @@ public class IssueReportActivity extends IssueReporterActivity {
@Override
protected String getGuestToken() {
- return "f32d789662645640ff22e240b80f5d76117181a1";
+ return "899ce4e559f7c3fad7a3a34a05777724758550de";
}
}
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 439d7cbf..65e6f48f 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
@@ -284,7 +284,7 @@ public class MainActivity extends BaseActivity implements FileChooserDialog.File
public static void onActionRecordStopped(Context context, String script) {
Intent intent = new Intent(context, MainActivity.class)
- .addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra(EXTRA_ACTION, ACTION_ON_ACTION_RECORD_STOPPED)
.putExtra(ARGUMENT_SCRIPT, script);
context.startActivity(intent);
diff --git a/app/src/main/res/drawable/ic_add_file_green.png b/app/src/main/res/drawable/ic_add_file_green.png
index 6e0e83ef..bfce3dff 100644
Binary files a/app/src/main/res/drawable/ic_add_file_green.png and b/app/src/main/res/drawable/ic_add_file_green.png differ
diff --git a/app/src/main/res/drawable/ic_add_file_white.png b/app/src/main/res/drawable/ic_add_file_white.png
deleted file mode 100644
index 0f9981cc..00000000
Binary files a/app/src/main/res/drawable/ic_add_file_white.png and /dev/null differ
diff --git a/app/src/main/res/drawable/ic_close_gray600_48dp.png b/app/src/main/res/drawable/ic_close_gray600_48dp.png
new file mode 100644
index 00000000..63151859
Binary files /dev/null and b/app/src/main/res/drawable/ic_close_gray600_48dp.png differ
diff --git a/app/src/main/res/drawable/ic_close_green_48dp.png b/app/src/main/res/drawable/ic_close_green_48dp.png
index d10f6b91..0a8ac8d0 100644
Binary files a/app/src/main/res/drawable/ic_close_green_48dp.png and b/app/src/main/res/drawable/ic_close_green_48dp.png differ
diff --git a/app/src/main/res/drawable/ic_console_green.png b/app/src/main/res/drawable/ic_console_green.png
index 0a147a07..40567b9c 100644
Binary files a/app/src/main/res/drawable/ic_console_green.png and b/app/src/main/res/drawable/ic_console_green.png differ
diff --git a/app/src/main/res/drawable/ic_developer_512.png b/app/src/main/res/drawable/ic_developer_512.png
index 2562420e..f9ce7d04 100644
Binary files a/app/src/main/res/drawable/ic_developer_512.png and b/app/src/main/res/drawable/ic_developer_512.png differ
diff --git a/app/src/main/res/drawable/ic_edit_gray_48dp.png b/app/src/main/res/drawable/ic_edit_gray_48dp.png
index aacbcf71..ba889489 100644
Binary files a/app/src/main/res/drawable/ic_edit_gray_48dp.png and b/app/src/main/res/drawable/ic_edit_gray_48dp.png differ
diff --git a/app/src/main/res/drawable/ic_folder_open_outline_green.png b/app/src/main/res/drawable/ic_folder_open_outline_green.png
index 7798f638..145b63db 100644
Binary files a/app/src/main/res/drawable/ic_folder_open_outline_green.png and b/app/src/main/res/drawable/ic_folder_open_outline_green.png differ
diff --git a/app/src/main/res/drawable/ic_folder_open_outline_white.png b/app/src/main/res/drawable/ic_folder_open_outline_white.png
deleted file mode 100644
index 5e5d8abb..00000000
Binary files a/app/src/main/res/drawable/ic_folder_open_outline_white.png and /dev/null differ
diff --git a/app/src/main/res/drawable/ic_function_mathematical_green.png b/app/src/main/res/drawable/ic_function_mathematical_green.png
index ea641aa4..3fb865a4 100644
Binary files a/app/src/main/res/drawable/ic_function_mathematical_green.png and b/app/src/main/res/drawable/ic_function_mathematical_green.png differ
diff --git a/app/src/main/res/drawable/ic_github_mark.png b/app/src/main/res/drawable/ic_github_mark.png
index 92d3c954..d4622a68 100644
Binary files a/app/src/main/res/drawable/ic_github_mark.png and b/app/src/main/res/drawable/ic_github_mark.png differ
diff --git a/app/src/main/res/drawable/ic_js.png b/app/src/main/res/drawable/ic_js.png
index aebd2600..f63ec228 100644
Binary files a/app/src/main/res/drawable/ic_js.png and b/app/src/main/res/drawable/ic_js.png differ
diff --git a/app/src/main/res/drawable/ic_license_green.png b/app/src/main/res/drawable/ic_license_green.png
index 644c6634..7322b97b 100644
Binary files a/app/src/main/res/drawable/ic_license_green.png and b/app/src/main/res/drawable/ic_license_green.png differ
diff --git a/app/src/main/res/drawable/ic_money_black.png b/app/src/main/res/drawable/ic_money_black.png
index 81a01b23..ce917dda 100644
Binary files a/app/src/main/res/drawable/ic_money_black.png and b/app/src/main/res/drawable/ic_money_black.png differ
diff --git a/app/src/main/res/drawable/ic_navigation_show_more_vertical_512.png b/app/src/main/res/drawable/ic_navigation_show_more_vertical_512.png
index 0d4a3898..ad25063f 100644
Binary files a/app/src/main/res/drawable/ic_navigation_show_more_vertical_512.png and b/app/src/main/res/drawable/ic_navigation_show_more_vertical_512.png differ
diff --git a/app/src/main/res/drawable/ic_play_green.png b/app/src/main/res/drawable/ic_play_green.png
index 62d48972..a223b07f 100644
Binary files a/app/src/main/res/drawable/ic_play_green.png and b/app/src/main/res/drawable/ic_play_green.png differ
diff --git a/app/src/main/res/drawable/ic_qq_black.png b/app/src/main/res/drawable/ic_qq_black.png
index 00523a9c..6e62e08e 100644
Binary files a/app/src/main/res/drawable/ic_qq_black.png and b/app/src/main/res/drawable/ic_qq_black.png differ
diff --git a/app/src/main/res/drawable/ic_redo_gray600.png b/app/src/main/res/drawable/ic_redo_gray600.png
new file mode 100644
index 00000000..69891702
Binary files /dev/null and b/app/src/main/res/drawable/ic_redo_gray600.png differ
diff --git a/app/src/main/res/drawable/ic_rename_green.png b/app/src/main/res/drawable/ic_rename_green.png
index 72033f6b..64f9824b 100644
Binary files a/app/src/main/res/drawable/ic_rename_green.png and b/app/src/main/res/drawable/ic_rename_green.png differ
diff --git a/app/src/main/res/drawable/ic_robot_green.png b/app/src/main/res/drawable/ic_robot_green.png
index 69fe5222..9ee76742 100644
Binary files a/app/src/main/res/drawable/ic_robot_green.png and b/app/src/main/res/drawable/ic_robot_green.png differ
diff --git a/app/src/main/res/drawable/ic_robot_head.png b/app/src/main/res/drawable/ic_robot_head.png
index 286babd7..e5905271 100644
Binary files a/app/src/main/res/drawable/ic_robot_head.png and b/app/src/main/res/drawable/ic_robot_head.png differ
diff --git a/app/src/main/res/drawable/ic_robot_head_green.png b/app/src/main/res/drawable/ic_robot_head_green.png
index b0eae7e9..f509a6cb 100644
Binary files a/app/src/main/res/drawable/ic_robot_head_green.png and b/app/src/main/res/drawable/ic_robot_head_green.png differ
diff --git a/app/src/main/res/drawable/ic_service_green.png b/app/src/main/res/drawable/ic_service_green.png
index 1bddad6c..1b2f152a 100644
Binary files a/app/src/main/res/drawable/ic_service_green.png and b/app/src/main/res/drawable/ic_service_green.png differ
diff --git a/app/src/main/res/drawable/ic_settings_applications_green_48dp.png b/app/src/main/res/drawable/ic_settings_applications_green_48dp.png
index a1a37633..caa0822d 100644
Binary files a/app/src/main/res/drawable/ic_settings_applications_green_48dp.png and b/app/src/main/res/drawable/ic_settings_applications_green_48dp.png differ
diff --git a/app/src/main/res/drawable/ic_shortcut_green.png b/app/src/main/res/drawable/ic_shortcut_green.png
index fc0e2bea..9ac3d47c 100644
Binary files a/app/src/main/res/drawable/ic_shortcut_green.png and b/app/src/main/res/drawable/ic_shortcut_green.png differ
diff --git a/app/src/main/res/drawable/ic_video_record.png b/app/src/main/res/drawable/ic_video_record.png
index 7fa29e20..fc0232a1 100644
Binary files a/app/src/main/res/drawable/ic_video_record.png and b/app/src/main/res/drawable/ic_video_record.png differ
diff --git a/app/src/main/res/drawable/slide_menu_img.png b/app/src/main/res/drawable/slide_menu_img.png
deleted file mode 100644
index 4f4fc654..00000000
Binary files a/app/src/main/res/drawable/slide_menu_img.png and /dev/null differ
diff --git a/app/src/main/res/drawable/slide_menu_img_200px.png b/app/src/main/res/drawable/slide_menu_img_200px.png
new file mode 100644
index 00000000..bae8cb97
Binary files /dev/null and b/app/src/main/res/drawable/slide_menu_img_200px.png differ
diff --git a/app/src/main/res/layout/drawer.xml b/app/src/main/res/layout/drawer.xml
index dac9a957..8973831b 100644
--- a/app/src/main/res/layout/drawer.xml
+++ b/app/src/main/res/layout/drawer.xml
@@ -18,7 +18,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
- android:src="@drawable/slide_menu_img"/>
+ android:src="@drawable/slide_menu_img_200px"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e40a415b..1c63239c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -115,4 +115,6 @@
需要打开\"自动操作服务“才能录制脚本
加入QQ交流群
已复制群号到剪贴板
+ 关闭
+ 重新录制
diff --git a/app/src/test/java/com/stardust/scriptdroid/ExampleUnitTest.java b/app/src/test/java/com/stardust/scriptdroid/ExampleUnitTest.java
index 18923ec6..c790e3d1 100644
--- a/app/src/test/java/com/stardust/scriptdroid/ExampleUnitTest.java
+++ b/app/src/test/java/com/stardust/scriptdroid/ExampleUnitTest.java
@@ -1,11 +1,10 @@
package com.stardust.scriptdroid;
+import android.os.Bundle;
+
import org.junit.Test;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
+import java.io.Serializable;
/**
* Example local unit test, which will execute on the development machine (host).
@@ -15,69 +14,18 @@ import java.util.TreeMap;
public class ExampleUnitTest {
@Test
public void testSync() throws Exception {
- final Sync sync = new Sync();
- //sync.print(11);
- add(sync, 11, 123);
- //Thread.sleep(1);
- sync.print(11);
- add(sync, 11, 456);
- sync.print(11);
- }
-
- private void add(final Sync sync, final int key, final int i) {
- new Thread(new Runnable() {
+ Bundle bundle = new Bundle();
+ bundle.putSerializable("xxx", new XXX() {
@Override
- public void run() {
- sync.add(key, i);
+ void run() {
+ System.out.println("xxx");
}
- }).start();
+ });
+ ((XXX) bundle.getSerializable("xxx")).run();
}
- private static class Sync {
+ private static abstract class XXX implements Serializable {
- private final Map> mMap = new TreeMap<>();
-
- Sync() {
- for (int i = 0; i < 10; i++) {
- List list = new ArrayList<>();
- for (int j = 0; j < 10; j++) {
- list.add(j * i);
- }
- mMap.put(i, list);
- }
- }
-
- public Sync add(int key, int i) {
- synchronized (mMap) {
- List list = ensureList(key);
- list.add(i);
- System.out.println("add:" + key + " " + i);
- }
- return this;
- }
-
- private List ensureList(int key) {
- List list = mMap.get(key);
- if (list == null) {
- list = new ArrayList<>();
- mMap.put(key, list);
- }
- return list;
- }
-
- public void print(int key) {
- synchronized (mMap) {
- List list = mMap.get(key);
- System.out.print(key + ":");
- if (list == null) {
- System.out.print("null");
- } else {
- for (Integer i : list) {
- System.out.print(i + " ");
- }
- }
- System.out.println();
- }
- }
+ abstract void run();
}
}
\ No newline at end of file