From 4210a9ece0ce40f983d98c5a0ec1f39ed14d6208 Mon Sep 17 00:00:00 2001 From: Antic1tizen One Date: Fri, 28 Dec 2018 12:17:26 +0300 Subject: [PATCH] Speedup plugin search, add quick plugin button (#887) We are now fully switched to activity-based plugin start system, so we don't need to start service or wake activity anymore. Delete relevant part. If the additiona; information is needed about the plugin we can dig it out from its broadcast receiver. Also, add quick "Plugins" button to the full playback activity so there are only 2 clicks away from any plugin. --- .../android/vanilla/FullPlaybackActivity.java | 8 ++++-- .../android/vanilla/PluginUtils.java | 25 +------------------ app/src/main/res/drawable/plugin.xml | 9 +++++++ 3 files changed, 16 insertions(+), 26 deletions(-) create mode 100644 app/src/main/res/drawable/plugin.xml diff --git a/app/src/main/java/ch/blinkenlights/android/vanilla/FullPlaybackActivity.java b/app/src/main/java/ch/blinkenlights/android/vanilla/FullPlaybackActivity.java index de04106b..d47e7016 100644 --- a/app/src/main/java/ch/blinkenlights/android/vanilla/FullPlaybackActivity.java +++ b/app/src/main/java/ch/blinkenlights/android/vanilla/FullPlaybackActivity.java @@ -302,10 +302,14 @@ public class FullPlaybackActivity extends SlidingPlaybackActivity menu.add(0, MENU_SHARE, 30, R.string.share); if (PluginUtils.checkPlugins(this)) { - menu.add(0, MENU_PLUGINS, 30, R.string.plugins); + menu.add(0, MENU_PLUGINS, 30, R.string.plugins) + .setIcon(R.drawable.plugin) + .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM); } - mFavorites = menu.add(0, MENU_SONG_FAVORITE, 0, R.string.add_to_favorites).setIcon(R.drawable.btn_rating_star_off_mtrl_alpha).setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM); + mFavorites = menu.add(0, MENU_SONG_FAVORITE, 0, R.string.add_to_favorites) + .setIcon(R.drawable.btn_rating_star_off_mtrl_alpha) + .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM); // Subitems of 'enqueue...' enqueueMenu.add(0, MENU_ENQUEUE_ALBUM, 30, R.string.album); diff --git a/app/src/main/java/ch/blinkenlights/android/vanilla/PluginUtils.java b/app/src/main/java/ch/blinkenlights/android/vanilla/PluginUtils.java index 97af14fe..5bba5af8 100644 --- a/app/src/main/java/ch/blinkenlights/android/vanilla/PluginUtils.java +++ b/app/src/main/java/ch/blinkenlights/android/vanilla/PluginUtils.java @@ -37,7 +37,6 @@ public class PluginUtils { // these actions are for passing between main player and plugins public static final String ACTION_REQUEST_PLUGIN_PARAMS = "ch.blinkenlights.android.vanilla.action.REQUEST_PLUGIN_PARAMS"; // broadcast public static final String ACTION_HANDLE_PLUGIN_PARAMS = "ch.blinkenlights.android.vanilla.action.HANDLE_PLUGIN_PARAMS"; // answer - public static final String ACTION_WAKE_PLUGIN = "ch.blinkenlights.android.vanilla.action.WAKE_PLUGIN"; // targeted at each found public static final String ACTION_LAUNCH_PLUGIN = "ch.blinkenlights.android.vanilla.action.LAUNCH_PLUGIN"; // targeted at selected by user // these are used by plugins to describe themselves @@ -56,28 +55,6 @@ public class PluginUtils { public static boolean checkPlugins(Context ctx) { PackageManager pm = ctx.getPackageManager(); List resolved = pm.queryBroadcastReceivers(new Intent(ACTION_REQUEST_PLUGIN_PARAMS), 0); - if (!resolved.isEmpty()) { - // If plugin is just installed, Android will not deliver intents - // to its receiver until it's started at least one time - boolean hasPlugins = false; - for (ResolveInfo ri : resolved) { - Intent awaker = new Intent(ACTION_WAKE_PLUGIN); - awaker.setPackage(ri.activityInfo.packageName); - - // all plugins must have respective activity that can handle ACTION_WAKE_PLUGIN - if (awaker.resolveActivity(pm) != null) { - hasPlugins = true; - ctx.startActivity(awaker); - } else { - // need to upgrade the plugin from service-based plugin system to activity-based - CharSequence pluginName = ri.loadLabel(pm); - String error = String.format(ctx.getString(R.string.plugin_needs_upgrade), pluginName); - Toast.makeText(ctx, error, Toast.LENGTH_SHORT).show(); - } - } - return hasPlugins; - } - - return false; + return !resolved.isEmpty(); } } diff --git a/app/src/main/res/drawable/plugin.xml b/app/src/main/res/drawable/plugin.xml new file mode 100644 index 00000000..c7c624bc --- /dev/null +++ b/app/src/main/res/drawable/plugin.xml @@ -0,0 +1,9 @@ + + +