From 7ac7795caf8db16b57c3d52983519fe13f87afd7 Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Tue, 27 Nov 2018 11:50:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=A2=9E=E5=8A=A0Auto.js=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/caches/build_file_checksums.ser | Bin 733 -> 733 bytes app/build.gradle | 2 +- app/src/main/java/org/autojs/autojs/App.java | 180 ------------------ app/src/main/java/org/autojs/autojs/App.kt | 177 +++++++++++++++++ .../receiver/DynamicBroadcastReceivers.java | 44 +++-- .../org/autojs/autojs/network/Glides.java | 11 -- .../storage/database/IntentTaskDatabase.java | 14 +- .../org/autojs/autojs/timing/IntentTask.java | 10 + .../autojs/timing/TimedTaskManager.java | 10 +- .../autojs/ui/main/drawer/DrawerFragment.java | 21 +- .../ui/project/ProjectConfigActivity.java | 5 +- .../ui/timing/TimedTaskSettingActivity.java | 9 +- .../autojs/autojs/ui/widget/AvatarView.java | 15 +- .../autojs/ui/widget/BackgroundTarget.kt | 25 +++ .../layout/activity_timed_task_setting.xml | 8 + app/src/main/res/values/strings.xml | 1 + .../java/com/stardust/automator/UiObject.kt | 5 +- 17 files changed, 290 insertions(+), 247 deletions(-) delete mode 100644 app/src/main/java/org/autojs/autojs/App.java create mode 100644 app/src/main/java/org/autojs/autojs/App.kt delete mode 100644 app/src/main/java/org/autojs/autojs/network/Glides.java create mode 100644 app/src/main/java/org/autojs/autojs/ui/widget/BackgroundTarget.kt diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index bcbe7e87d0cf122f75bb707343dc6b4c81c7989c..4ddecf6c310a34e95d99a0317df6b64c15b094e6 100644 GIT binary patch delta 36 scmcc1dY5&=43=Oq4dID%$_0*J{$cTvp*=6>yTvO#M}f-C%8a`h0UN{*2mk;8 delta 36 ucmV+<0NelF1>FUZm;_JHSZ|S>cMutsn`62=zaA|{u~rz%-RQF;0lEPtkq^88 diff --git a/app/build.gradle b/app/build.gradle index 0613d094..c178f93d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -139,7 +139,7 @@ dependencies { implementation('com.github.bumptech.glide:glide:4.8.0', { exclude group: 'com.android.support' }) - annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0' + kapt 'com.github.bumptech.glide:compiler:4.8.0' //joda time implementation 'joda-time:joda-time:2.9.9' // Tasker Plugin diff --git a/app/src/main/java/org/autojs/autojs/App.java b/app/src/main/java/org/autojs/autojs/App.java deleted file mode 100644 index a7492be9..00000000 --- a/app/src/main/java/org/autojs/autojs/App.java +++ /dev/null @@ -1,180 +0,0 @@ -package org.autojs.autojs; - -import android.annotation.SuppressLint; -import android.app.usage.UsageStatsManager; -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.drawable.Drawable; -import android.net.Uri; -import android.support.multidex.MultiDexApplication; -import android.support.v7.app.AppCompatDelegate; -import android.view.View; -import android.widget.ImageView; - -import com.bumptech.glide.request.target.SimpleTarget; -import com.bumptech.glide.request.transition.Transition; -import com.flurry.android.FlurryAgent; -import com.squareup.leakcanary.LeakCanary; -import com.stardust.app.GlobalAppContext; -import com.stardust.autojs.core.ui.inflater.ImageLoader; -import com.stardust.autojs.core.ui.inflater.util.Drawables; -import com.stardust.theme.ThemeColor; -import com.stardust.theme.ThemeColorManager; -import com.tencent.bugly.Bugly; -import com.tencent.bugly.crashreport.CrashReport; - -import org.autojs.autojs.autojs.AutoJs; -import org.autojs.autojs.autojs.key.GlobalKeyObserver; -import org.autojs.autojs.external.receiver.DynamicBroadcastReceivers; -import org.autojs.autojs.network.GlideApp; -import org.autojs.autojs.theme.ThemeColorManagerCompat; -import org.autojs.autojs.timing.IntentTask; -import org.autojs.autojs.timing.TimedTaskManager; -import org.autojs.autojs.timing.TimedTaskScheduler; -import org.autojs.autojs.tool.CrashHandler; -import org.autojs.autojs.ui.error.ErrorReportActivity; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; - -/** - * Created by Stardust on 2017/1/27. - */ - -public class App extends MultiDexApplication { - - private static final String TAG = "App"; - private static final String BUGLY_APP_ID = "19b3607b53"; - - private static WeakReference instance; - private DynamicBroadcastReceivers mDynamicBroadcastReceivers; - - public static App getApp() { - return instance.get(); - } - - public void onCreate() { - super.onCreate(); - GlobalAppContext.set(this); - instance = new WeakReference<>(this); - setUpStaticsTool(); - setUpDebugEnvironment(); - init(); - } - - public DynamicBroadcastReceivers getDynamicBroadcastReceivers() { - return mDynamicBroadcastReceivers; - } - - private void setUpStaticsTool() { - if (BuildConfig.DEBUG) - return; - new FlurryAgent.Builder() - .withLogEnabled(BuildConfig.DEBUG) - .build(this, "D42MH48ZN4PJC5TKNYZD"); - } - - - @Override - protected void attachBaseContext(Context base) { - super.attachBaseContext(base); - } - - private void setUpDebugEnvironment() { - Bugly.isDev = false; - CrashHandler crashHandler = new CrashHandler(ErrorReportActivity.class); - - CrashReport.UserStrategy strategy = new CrashReport.UserStrategy(getApplicationContext()); - strategy.setCrashHandleCallback(crashHandler); - - CrashReport.initCrashReport(getApplicationContext(), BUGLY_APP_ID, false, strategy); - - crashHandler.setBuglyHandler(Thread.getDefaultUncaughtExceptionHandler()); - Thread.setDefaultUncaughtExceptionHandler(crashHandler); - 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); - - } - - private void init() { - ThemeColorManagerCompat.init(this, new ThemeColor(getResources().getColor(R.color.colorPrimary), getResources().getColor(R.color.colorPrimaryDark), getResources().getColor(R.color.colorAccent))); - AutoJs.initInstance(this); - if (Pref.isRunningVolumeControlEnabled()) { - GlobalKeyObserver.init(); - } - setupDrawableImageLoader(); - TimedTaskScheduler.checkTasksRepeatedlyIfNeeded(this); - initDynamicBroadcastReceivers(); - - } - - @SuppressLint("CheckResult") - private void initDynamicBroadcastReceivers() { - mDynamicBroadcastReceivers = new DynamicBroadcastReceivers(this); - TimedTaskManager.getInstance().getAllIntentTasks() - .filter(task -> task.getAction() != null) - .map(IntentTask::getAction) - .collectInto(new ArrayList(), ArrayList::add) - .subscribe(list -> mDynamicBroadcastReceivers.register(list), - Throwable::printStackTrace); - } - - private void setupDrawableImageLoader() { - Drawables.setDefaultImageLoader(new ImageLoader() { - @Override - public void loadInto(ImageView imageView, Uri uri) { - GlideApp.with(App.this) - .load(uri) - .into(imageView); - } - - @Override - public void loadIntoBackground(View view, Uri uri) { - GlideApp.with(App.this) - .load(uri) - .into(new SimpleTarget() { - @Override - public void onResourceReady(Drawable resource, Transition transition) { - view.setBackground(resource); - } - }); - } - - @Override - public Drawable load(View view, Uri uri) { - throw new UnsupportedOperationException(); - } - - @Override - public void load(View view, Uri uri, DrawableCallback drawableCallback) { - GlideApp.with(App.this) - .load(uri) - .into(new SimpleTarget() { - @Override - public void onResourceReady(Drawable resource, Transition transition) { - drawableCallback.onLoaded(resource); - } - }); - } - - @Override - public void load(View view, Uri uri, BitmapCallback bitmapCallback) { - GlideApp.with(App.this) - .asBitmap() - .load(uri) - .into(new SimpleTarget() { - @Override - public void onResourceReady(Bitmap resource, Transition transition) { - bitmapCallback.onLoaded(resource); - } - }); - } - }); - } - - -} diff --git a/app/src/main/java/org/autojs/autojs/App.kt b/app/src/main/java/org/autojs/autojs/App.kt new file mode 100644 index 00000000..204ed194 --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/App.kt @@ -0,0 +1,177 @@ +package org.autojs.autojs + +import android.annotation.SuppressLint +import android.content.Context +import android.content.Intent +import android.graphics.Bitmap +import android.graphics.drawable.Drawable +import android.net.Uri +import android.support.multidex.MultiDexApplication +import android.support.v4.content.LocalBroadcastManager +import android.view.View +import android.widget.ImageView +import com.bumptech.glide.Glide +import com.bumptech.glide.request.target.SimpleTarget +import com.bumptech.glide.request.transition.Transition +import com.flurry.android.FlurryAgent +import com.squareup.leakcanary.LeakCanary +import com.stardust.app.GlobalAppContext +import com.stardust.autojs.core.ui.inflater.ImageLoader +import com.stardust.autojs.core.ui.inflater.util.Drawables +import com.stardust.theme.ThemeColor +import com.tencent.bugly.Bugly +import com.tencent.bugly.crashreport.CrashReport +import org.autojs.autojs.autojs.AutoJs +import org.autojs.autojs.autojs.key.GlobalKeyObserver +import org.autojs.autojs.external.receiver.DynamicBroadcastReceivers +import org.autojs.autojs.theme.ThemeColorManagerCompat +import org.autojs.autojs.timing.TimedTaskManager +import org.autojs.autojs.timing.TimedTaskScheduler +import org.autojs.autojs.tool.CrashHandler +import org.autojs.autojs.ui.error.ErrorReportActivity +import java.lang.ref.WeakReference +import java.util.* + +/** + * Created by Stardust on 2017/1/27. + */ + +class App : MultiDexApplication() { + lateinit var dynamicBroadcastReceivers: DynamicBroadcastReceivers + private set + + override fun onCreate() { + super.onCreate() + GlobalAppContext.set(this) + instance = WeakReference(this) + setUpStaticsTool() + setUpDebugEnvironment() + init() + } + + private fun setUpStaticsTool() { + if (BuildConfig.DEBUG) + return + FlurryAgent.Builder() + .withLogEnabled(BuildConfig.DEBUG) + .build(this, "D42MH48ZN4PJC5TKNYZD") + } + + private fun setUpDebugEnvironment() { + Bugly.isDev = false + val crashHandler = CrashHandler(ErrorReportActivity::class.java) + + val strategy = CrashReport.UserStrategy(applicationContext) + strategy.setCrashHandleCallback(crashHandler) + + CrashReport.initCrashReport(applicationContext, BUGLY_APP_ID, false, strategy) + + crashHandler.setBuglyHandler(Thread.getDefaultUncaughtExceptionHandler()) + Thread.setDefaultUncaughtExceptionHandler(crashHandler) + 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); + + } + + private fun init() { + ThemeColorManagerCompat.init(this, ThemeColor(resources.getColor(R.color.colorPrimary), resources.getColor(R.color.colorPrimaryDark), resources.getColor(R.color.colorAccent))) + AutoJs.initInstance(this) + if (Pref.isRunningVolumeControlEnabled()) { + GlobalKeyObserver.init() + } + setupDrawableImageLoader() + TimedTaskScheduler.checkTasksRepeatedlyIfNeeded(this) + initDynamicBroadcastReceivers() + } + + @SuppressLint("CheckResult") + private fun initDynamicBroadcastReceivers() { + dynamicBroadcastReceivers = DynamicBroadcastReceivers(this) + val localActions = ArrayList() + val actions = ArrayList() + TimedTaskManager.getInstance().allIntentTasks + .filter { task -> task.action != null } + .doOnComplete { + if (localActions.isNotEmpty()) { + dynamicBroadcastReceivers.register(localActions, true) + } + if (actions.isNotEmpty()) { + dynamicBroadcastReceivers.register(actions, false) + } + LocalBroadcastManager.getInstance(applicationContext).sendBroadcast(Intent( + DynamicBroadcastReceivers.ACTION_STARTUP + )) + } + .subscribe({ + if (it.isLocal) { + localActions.add(it.action) + } else { + actions.add(it.action) + } + }, { it.printStackTrace() }) + + + } + + private fun setupDrawableImageLoader() { + Drawables.setDefaultImageLoader(object : ImageLoader { + override fun loadInto(imageView: ImageView, uri: Uri) { + Glide.with(imageView) + .load(uri) + .into(imageView) + } + + override fun loadIntoBackground(view: View, uri: Uri) { + Glide.with(view) + .load(uri) + .into(object : SimpleTarget() { + override fun onResourceReady(resource: Drawable, transition: Transition?) { + view.background = resource + } + }) + } + + override fun load(view: View, uri: Uri): Drawable { + throw UnsupportedOperationException() + } + + override fun load(view: View, uri: Uri, drawableCallback: ImageLoader.DrawableCallback) { + Glide.with(view) + .load(uri) + .into(object : SimpleTarget() { + override fun onResourceReady(resource: Drawable, transition: Transition?) { + drawableCallback.onLoaded(resource) + } + }) + } + + override fun load(view: View, uri: Uri, bitmapCallback: ImageLoader.BitmapCallback) { + Glide.with(view) + .asBitmap() + .load(uri) + .into(object : SimpleTarget() { + override fun onResourceReady(resource: Bitmap, transition: Transition?) { + bitmapCallback.onLoaded(resource) + } + }) + } + }) + } + + companion object { + + private val TAG = "App" + private val BUGLY_APP_ID = "19b3607b53" + + private lateinit var instance: WeakReference + + val app: App + get() = instance.get()!! + } + + +} diff --git a/app/src/main/java/org/autojs/autojs/external/receiver/DynamicBroadcastReceivers.java b/app/src/main/java/org/autojs/autojs/external/receiver/DynamicBroadcastReceivers.java index faf0388c..5cec0c52 100644 --- a/app/src/main/java/org/autojs/autojs/external/receiver/DynamicBroadcastReceivers.java +++ b/app/src/main/java/org/autojs/autojs/external/receiver/DynamicBroadcastReceivers.java @@ -2,14 +2,15 @@ package org.autojs.autojs.external.receiver; import android.content.BroadcastReceiver; import android.content.Context; +import android.content.Intent; import android.content.IntentFilter; import android.os.Build; -import android.support.design.widget.TabLayout; +import android.support.v4.content.LocalBroadcastManager; import android.util.Log; -import android.util.Pair; + +import org.autojs.autojs.timing.IntentTask; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Iterator; @@ -17,15 +18,10 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Set; -import static android.content.Intent.ACTION_BATTERY_CHANGED; -import static android.content.Intent.ACTION_CONFIGURATION_CHANGED; -import static android.content.Intent.ACTION_PACKAGES_SUSPENDED; -import static android.content.Intent.ACTION_PACKAGES_UNSUSPENDED; -import static android.content.Intent.ACTION_SCREEN_OFF; -import static android.content.Intent.ACTION_SCREEN_ON; - public class DynamicBroadcastReceivers { + public static final String ACTION_STARTUP = "org.autojs.autojs.action.startup"; + private static final String LOG_TAG = "DynBroadcastReceivers"; private final Set mActions = new LinkedHashSet<>(); @@ -43,15 +39,13 @@ public class DynamicBroadcastReceivers { filter.addDataScheme("package"); mContext.registerReceiver(mPackageActionReceiver, filter); } - - } - public void register(String action) { - register(Collections.singletonList(action)); + public void register(IntentTask task) { + register(Collections.singletonList(task.getAction()), task.isLocal()); } - public synchronized void register(List actions) { + public synchronized void register(List actions, boolean local) { LinkedHashSet newActions = new LinkedHashSet<>(); for (String action : actions) { if (!StaticBroadcastReceiver.ACTIONS.contains(action) @@ -63,7 +57,7 @@ public class DynamicBroadcastReceivers { if (newActions.isEmpty()) { return; } - ReceiverRegistry receiverRegistry = new ReceiverRegistry(newActions); + ReceiverRegistry receiverRegistry = new ReceiverRegistry(newActions, local); receiverRegistry.register(); mReceiverRegistries.add(receiverRegistry); } @@ -110,21 +104,33 @@ public class DynamicBroadcastReceivers { private class ReceiverRegistry { BroadcastReceiver receiver; LinkedHashSet actions; + boolean local; - ReceiverRegistry(LinkedHashSet actions) { + ReceiverRegistry(LinkedHashSet actions, boolean local) { this.actions = actions; + this.local = local; receiver = new BaseBroadcastReceiver(); } void unregister() { - mContext.unregisterReceiver(receiver); + if (local) { + LocalBroadcastManager broadcastManager = LocalBroadcastManager.getInstance(mContext); + broadcastManager.unregisterReceiver(receiver); + } else { + mContext.unregisterReceiver(receiver); + } } boolean register() { if (actions.isEmpty()) return false; IntentFilter intentFilter = createIntentFilter(actions); - mContext.registerReceiver(receiver, intentFilter); + if (local) { + LocalBroadcastManager broadcastManager = LocalBroadcastManager.getInstance(mContext); + broadcastManager.registerReceiver(receiver, intentFilter); + } else { + mContext.registerReceiver(receiver, intentFilter); + } Log.d(LOG_TAG, "register: " + actions); return true; } diff --git a/app/src/main/java/org/autojs/autojs/network/Glides.java b/app/src/main/java/org/autojs/autojs/network/Glides.java deleted file mode 100644 index f7ad3ade..00000000 --- a/app/src/main/java/org/autojs/autojs/network/Glides.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.autojs.autojs.network; - -import com.bumptech.glide.annotation.GlideModule; -import com.bumptech.glide.module.AppGlideModule; - -/** - * Created by Stardust on 2017/10/26. - */ -@GlideModule -public class Glides extends AppGlideModule { -} diff --git a/app/src/main/java/org/autojs/autojs/storage/database/IntentTaskDatabase.java b/app/src/main/java/org/autojs/autojs/storage/database/IntentTaskDatabase.java index 9a8803d3..5e9200f9 100644 --- a/app/src/main/java/org/autojs/autojs/storage/database/IntentTaskDatabase.java +++ b/app/src/main/java/org/autojs/autojs/storage/database/IntentTaskDatabase.java @@ -11,10 +11,10 @@ import org.autojs.autojs.timing.IntentTask; public class IntentTaskDatabase extends Database { - private static final int VERSION = 1; + private static final int VERSION = 2; private static final String NAME = "IntentTaskDatabase"; - public IntentTaskDatabase(Context context){ + public IntentTaskDatabase(Context context) { super(new SQLHelper(context), IntentTask.TABLE); } @@ -25,6 +25,7 @@ public class IntentTaskDatabase extends Database { values.put("action", model.getAction()); values.put("category", model.getCategory()); values.put("data_type", model.getDataType()); + values.put("local", model.isLocal() ? 1 : 0); return values; } @@ -36,6 +37,7 @@ public class IntentTaskDatabase extends Database { task.setAction(cursor.getString(2)); task.setCategory(cursor.getString(3)); task.setDataType(cursor.getString(4)); + task.setLocal(cursor.getInt(5) != 0); return task; } @@ -53,12 +55,16 @@ public class IntentTaskDatabase extends Database { "`script_path` TEXT NOT NULL ON CONFLICT FAIL, " + "`action` TEXT, " + "`category` TEXT, " + - "`data_type` TEXT);"); + "`data_type` TEXT, " + + "`local` INT);"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - + if (oldVersion == 1 && newVersion == 2) { + db.execSQL("ALTER TABLE " + IntentTask.TABLE + "\n" + + "ADD local INT"); + } } } } diff --git a/app/src/main/java/org/autojs/autojs/timing/IntentTask.java b/app/src/main/java/org/autojs/autojs/timing/IntentTask.java index 1937ea84..e271d753 100644 --- a/app/src/main/java/org/autojs/autojs/timing/IntentTask.java +++ b/app/src/main/java/org/autojs/autojs/timing/IntentTask.java @@ -16,6 +16,8 @@ public class IntentTask extends BaseModel { private String mDataType; + private boolean mLocal; + public IntentFilter getIntentFilter() { IntentFilter filter = new IntentFilter(); if (mAction != null) { @@ -65,4 +67,12 @@ public class IntentTask extends BaseModel { public void setDataType(String dataType) { mDataType = dataType; } + + public boolean isLocal() { + return mLocal; + } + + public void setLocal(boolean local) { + mLocal = local; + } } diff --git a/app/src/main/java/org/autojs/autojs/timing/TimedTaskManager.java b/app/src/main/java/org/autojs/autojs/timing/TimedTaskManager.java index f2218244..5f1dada0 100644 --- a/app/src/main/java/org/autojs/autojs/timing/TimedTaskManager.java +++ b/app/src/main/java/org/autojs/autojs/timing/TimedTaskManager.java @@ -85,8 +85,8 @@ public class TimedTaskManager { mIntentTaskDatabase.insert(intentTask) .subscribe(i -> { if(!TextUtils.isEmpty(intentTask.getAction())){ - App.getApp().getDynamicBroadcastReceivers() - .register(intentTask.getAction()); + App.Companion.getApp().getDynamicBroadcastReceivers() + .register(intentTask); } }, Throwable::printStackTrace); } @@ -96,7 +96,7 @@ public class TimedTaskManager { mIntentTaskDatabase.delete(intentTask) .subscribe(i -> { if(!TextUtils.isEmpty(intentTask.getAction())){ - App.getApp().getDynamicBroadcastReceivers() + App.Companion.getApp().getDynamicBroadcastReceivers() .unregister(intentTask.getAction()); } }, Throwable::printStackTrace); @@ -144,8 +144,8 @@ public class TimedTaskManager { mIntentTaskDatabase.update(task) .subscribe(i -> { if(i > 0 && !TextUtils.isEmpty(task.getAction())){ - App.getApp().getDynamicBroadcastReceivers() - .register(task.getAction()); + App.Companion.getApp().getDynamicBroadcastReceivers() + .register(task); } }, Throwable::printStackTrace); } diff --git a/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.java b/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.java index c4439965..906c2151 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.java +++ b/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.java @@ -6,6 +6,7 @@ import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; import android.provider.Settings; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; @@ -15,7 +16,10 @@ import android.widget.TextView; import android.widget.Toast; import com.afollestad.materialdialogs.MaterialDialog; +import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.bumptech.glide.request.RequestOptions; +import com.bumptech.glide.request.target.CustomViewTarget; import com.bumptech.glide.request.target.SimpleTarget; import com.bumptech.glide.request.transition.Transition; import com.stardust.app.GlobalAppContext; @@ -24,7 +28,6 @@ import com.stardust.notification.NotificationListenerService; import org.autojs.autojs.Pref; import org.autojs.autojs.R; import org.autojs.autojs.external.foreground.ForegroundService; -import org.autojs.autojs.network.GlideApp; import org.autojs.autojs.network.UserService; import org.autojs.autojs.tool.Observers; import org.autojs.autojs.ui.BaseActivity; @@ -62,6 +65,7 @@ import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.Click; import org.androidannotations.annotations.EFragment; import org.androidannotations.annotations.ViewById; +import org.autojs.autojs.ui.widget.BackgroundTarget; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; @@ -373,17 +377,12 @@ public class DrawerFragment extends android.support.v4.app.Fragment { } else { mDefaultCover.setVisibility(View.GONE); mShadow.setVisibility(View.VISIBLE); - GlideApp.with(getContext()) + Glide.with(this) .load(NodeBB.BASE_URL + user.getCoverUrl()) - .diskCacheStrategy(DiskCacheStrategy.NONE) - .into(new SimpleTarget() { - @Override - public void onResourceReady(Drawable resource, Transition transition) { - if (mHeaderView != null) { - mHeaderView.setBackground(resource); - } - } - }); + .apply(new RequestOptions() + .diskCacheStrategy(DiskCacheStrategy.NONE) + ) + .into(new BackgroundTarget(mHeaderView)); } } diff --git a/app/src/main/java/org/autojs/autojs/ui/project/ProjectConfigActivity.java b/app/src/main/java/org/autojs/autojs/ui/project/ProjectConfigActivity.java index 03210a45..1bd9c585 100644 --- a/app/src/main/java/org/autojs/autojs/ui/project/ProjectConfigActivity.java +++ b/app/src/main/java/org/autojs/autojs/ui/project/ProjectConfigActivity.java @@ -14,6 +14,7 @@ import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast; +import com.bumptech.glide.Glide; import com.stardust.autojs.project.ProjectConfig; import com.stardust.pio.PFiles; @@ -26,7 +27,6 @@ import org.autojs.autojs.model.explorer.ExplorerDirPage; import org.autojs.autojs.model.explorer.ExplorerFileItem; import org.autojs.autojs.model.explorer.Explorers; import org.autojs.autojs.model.project.ProjectTemplate; -import org.autojs.autojs.network.GlideApp; import org.autojs.autojs.theme.dialog.ThemeColorMaterialDialogBuilder; import org.autojs.autojs.ui.BaseActivity; import org.autojs.autojs.ui.shortcut.ShortcutIconSelectActivity; @@ -35,7 +35,6 @@ import org.autojs.autojs.ui.widget.SimpleTextWatcher; import java.io.File; import java.io.FileOutputStream; -import java.io.IOException; import java.util.regex.Pattern; import io.reactivex.Observable; @@ -131,7 +130,7 @@ public class ProjectConfigActivity extends BaseActivity { mProjectLocation.setVisibility(View.GONE); String icon = mProjectConfig.getIcon(); if (icon != null) { - GlideApp.with(this) + Glide.with(this) .load(new File(mDirectory, icon)) .into(mIcon); } diff --git a/app/src/main/java/org/autojs/autojs/ui/timing/TimedTaskSettingActivity.java b/app/src/main/java/org/autojs/autojs/ui/timing/TimedTaskSettingActivity.java index 5c963612..bf9efd8c 100644 --- a/app/src/main/java/org/autojs/autojs/ui/timing/TimedTaskSettingActivity.java +++ b/app/src/main/java/org/autojs/autojs/ui/timing/TimedTaskSettingActivity.java @@ -42,6 +42,7 @@ import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.ViewById; import org.autojs.autojs.R; import org.autojs.autojs.external.ScriptIntents; +import org.autojs.autojs.external.receiver.DynamicBroadcastReceivers; import org.autojs.autojs.model.script.ScriptFile; import org.autojs.autojs.timing.IntentTask; import org.autojs.autojs.timing.TaskReceiver; @@ -75,6 +76,7 @@ public class TimedTaskSettingActivity extends BaseActivity { public static final Map ACTION_DESC_MAP = new MapBuilder() + .put(DynamicBroadcastReceivers.ACTION_STARTUP, R.string.text_run_on_startup) .put(Intent.ACTION_BOOT_COMPLETED, R.string.text_run_on_boot) .put(Intent.ACTION_SCREEN_OFF, R.string.text_run_on_screen_off) .put(Intent.ACTION_SCREEN_ON, R.string.text_run_on_screen_on) @@ -92,6 +94,7 @@ public class TimedTaskSettingActivity extends BaseActivity { .build(); private static final BiMap ACTIONS = BiMaps.newBuilder() + .put(R.id.run_on_startup, DynamicBroadcastReceivers.ACTION_STARTUP) .put(R.id.run_on_boot, Intent.ACTION_BOOT_COMPLETED) .put(R.id.run_on_screen_off, Intent.ACTION_SCREEN_OFF) .put(R.id.run_on_screen_on, Intent.ACTION_SCREEN_ON) @@ -108,7 +111,6 @@ public class TimedTaskSettingActivity extends BaseActivity { .put(R.id.run_on_time_tick, Intent.ACTION_TIME_TICK) .build(); - @ViewById(R.id.toolbar) Toolbar mToolbar; @@ -347,10 +349,10 @@ public class TimedTaskSettingActivity extends BaseActivity { public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.action_done) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !((PowerManager) getSystemService(POWER_SERVICE)).isIgnoringBatteryOptimizations(getPackageName())) { - try{ + try { startActivityForResult(new Intent().setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS) .setData(Uri.parse("package:" + getPackageName())), REQUEST_CODE_IGNORE_BATTERY); - }catch(ActivityNotFoundException e){ + } catch (ActivityNotFoundException e) { e.printStackTrace(); createOrUpdateTask(); } @@ -412,6 +414,7 @@ public class TimedTaskSettingActivity extends BaseActivity { IntentTask task = new IntentTask(); task.setAction(action); task.setScriptPath(mScriptFile.getPath()); + task.setLocal(action.equals(DynamicBroadcastReceivers.ACTION_STARTUP)); if (mIntentTask != null) { task.setId(mIntentTask.getId()); TimedTaskManager.getInstance().updateTask(task); diff --git a/app/src/main/java/org/autojs/autojs/ui/widget/AvatarView.java b/app/src/main/java/org/autojs/autojs/ui/widget/AvatarView.java index 62fbedc1..e375e778 100644 --- a/app/src/main/java/org/autojs/autojs/ui/widget/AvatarView.java +++ b/app/src/main/java/org/autojs/autojs/ui/widget/AvatarView.java @@ -2,7 +2,6 @@ package org.autojs.autojs.ui.widget; import android.content.Context; import android.graphics.Color; -import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.support.annotation.AttrRes; import android.support.annotation.NonNull; @@ -11,16 +10,14 @@ import android.text.TextUtils; import android.util.AttributeSet; import android.view.View; import android.widget.FrameLayout; -import android.widget.ImageView; import android.widget.TextView; - import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.bumptech.glide.request.RequestOptions; import com.makeramen.roundedimageview.RoundedImageView; + import org.autojs.autojs.R; -import org.autojs.autojs.network.GlideApp; -import org.autojs.autojs.network.Glides; import org.autojs.autojs.network.NodeBB; import org.autojs.autojs.network.entity.user.User; @@ -80,10 +77,12 @@ public class AvatarView extends FrameLayout { mIcon.setVisibility(View.VISIBLE); mIconText.setVisibility(View.GONE); mIcon.setCornerRadius(getWidth() / 2); - GlideApp.with(getContext()) + Glide.with(getContext()) .load(NodeBB.BASE_URL + user.getPicture()) - .diskCacheStrategy(DiskCacheStrategy.NONE) - .skipMemoryCache(true) + .apply(new RequestOptions() + .diskCacheStrategy(DiskCacheStrategy.NONE) + .skipMemoryCache(true) + ) .into(mIcon); } } diff --git a/app/src/main/java/org/autojs/autojs/ui/widget/BackgroundTarget.kt b/app/src/main/java/org/autojs/autojs/ui/widget/BackgroundTarget.kt new file mode 100644 index 00000000..e877898f --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/ui/widget/BackgroundTarget.kt @@ -0,0 +1,25 @@ +package org.autojs.autojs.ui.widget + +import android.graphics.drawable.Drawable +import android.view.View +import com.bumptech.glide.request.target.CustomViewTarget +import com.bumptech.glide.request.transition.Transition + +class BackgroundTarget(view: View) : CustomViewTarget(view) { + override fun onLoadFailed(errorDrawable: Drawable?) { + errorDrawable?.let { + view.background = it + } + } + + override fun onResourceCleared(placeholder: Drawable?) { + placeholder?.let { + view.background = it + } + } + + override fun onResourceReady(resource: Drawable, transition: Transition?) { + view.background = resource + } + +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_timed_task_setting.xml b/app/src/main/res/layout/activity_timed_task_setting.xml index 182eea56..f347b5e6 100644 --- a/app/src/main/res/layout/activity_timed_task_setting.xml +++ b/app/src/main/res/layout/activity_timed_task_setting.xml @@ -279,6 +279,14 @@ android:layout_height="wrap_content" android:orientation="vertical"> + + 项目保存失败 %s 夜间模式 key_night_mode + Auto.js启动时 diff --git a/automator/src/main/java/com/stardust/automator/UiObject.kt b/automator/src/main/java/com/stardust/automator/UiObject.kt index 6390cf76..661af33d 100644 --- a/automator/src/main/java/com/stardust/automator/UiObject.kt +++ b/automator/src/main/java/com/stardust/automator/UiObject.kt @@ -367,7 +367,8 @@ open class UiObject(info: Any?, private val allocator: AccessibilityNodeInfoAllo } override fun findAccessibilityNodeInfosByText(text: String): List { - return if (allocator == null) super.findAccessibilityNodeInfosByText(text) else allocator.findAccessibilityNodeInfosByText(this, text) + return allocator?.findAccessibilityNodeInfosByText(this, text) + ?: super.findAccessibilityNodeInfosByText(text) } fun findByText(text: String): List { @@ -375,7 +376,7 @@ open class UiObject(info: Any?, private val allocator: AccessibilityNodeInfoAllo } override fun findAccessibilityNodeInfosByViewId(viewId: String): List { - return if (allocator == null) super.findAccessibilityNodeInfosByViewId(viewId) else allocator.findAccessibilityNodeInfosByViewId(this, viewId) + return allocator?.findAccessibilityNodeInfosByViewId(this, viewId) ?: super.findAccessibilityNodeInfosByViewId(viewId) } fun findByViewId(viewId: String): List {