diff options
author | Tony Tam <149837+tonytamsf@users.noreply.github.com> | 2021-01-13 09:38:16 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-13 18:38:16 +0100 |
commit | 08d1400951ed107cba14691f6657be32538a5c38 (patch) | |
tree | cf8a41d52a5e3da2cdf2bf8fe113c2ae5d13e6ee /core/src/main/java/de/danoeh/antennapod | |
parent | 7659fd25d8f9a8724c100f8cd2dffe4d1c8588b2 (diff) | |
download | AntennaPod-08d1400951ed107cba14691f6657be32538a5c38.zip |
Add rewind, ff, skip button and layout for extra info in Widget (#4746)
Diffstat (limited to 'core/src/main/java/de/danoeh/antennapod')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/receiver/PlayerWidget.java | 6 | ||||
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java | 35 |
2 files changed, 35 insertions, 6 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/receiver/PlayerWidget.java b/core/src/main/java/de/danoeh/antennapod/core/receiver/PlayerWidget.java index 2e592bdf5..9e9663205 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/receiver/PlayerWidget.java +++ b/core/src/main/java/de/danoeh/antennapod/core/receiver/PlayerWidget.java @@ -16,6 +16,9 @@ public class PlayerWidget extends AppWidgetProvider { public static final String PREFS_NAME = "PlayerWidgetPrefs"; private static final String KEY_ENABLED = "WidgetEnabled"; public static final String KEY_WIDGET_COLOR = "widget_color"; + public static final String KEY_WIDGET_SKIP = "widget_skip"; + public static final String KEY_WIDGET_FAST_FORWARD = "widget_fast_forward"; + public static final String KEY_WIDGET_REWIND = "widget_rewind"; public static final int DEFAULT_COLOR = 0x00262C31; @Override @@ -52,6 +55,9 @@ public class PlayerWidget extends AppWidgetProvider { for (int appWidgetId : appWidgetIds) { SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); prefs.edit().remove(KEY_WIDGET_COLOR + appWidgetId).apply(); + prefs.edit().remove(KEY_WIDGET_REWIND + appWidgetId).apply(); + prefs.edit().remove(KEY_WIDGET_FAST_FORWARD + appWidgetId).apply(); + prefs.edit().remove(KEY_WIDGET_SKIP + appWidgetId).apply(); } super.onDeleted(context, appWidgetIds); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java b/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java index 74735a264..5af05b6d2 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java @@ -102,9 +102,10 @@ public class PlayerWidgetJobService extends SafeJobIntentService { ComponentName playerWidget = new ComponentName(this, PlayerWidget.class); AppWidgetManager manager = AppWidgetManager.getInstance(this); int[] widgetIds = manager.getAppWidgetIds(playerWidget); - RemoteViews views = new RemoteViews(getPackageName(), R.layout.player_widget); final PendingIntent startMediaPlayer = PendingIntent.getActivity(this, R.id.pending_intent_player_activity, PlaybackService.getPlayerActivityIntent(this), PendingIntent.FLAG_UPDATE_CURRENT); + RemoteViews views; + views = new RemoteViews(getPackageName(), R.layout.player_widget); boolean nothingPlaying = false; Playable media; @@ -119,6 +120,7 @@ public class PlayerWidgetJobService extends SafeJobIntentService { if (media != null) { views.setOnClickPendingIntent(R.id.layout_left, startMediaPlayer); + views.setOnClickPendingIntent(R.id.imgvCover, startMediaPlayer); try { Bitmap icon; @@ -155,11 +157,18 @@ public class PlayerWidgetJobService extends SafeJobIntentService { if (status == PlayerStatus.PLAYING) { views.setImageViewResource(R.id.butPlay, R.drawable.ic_av_pause_white_48dp); views.setContentDescription(R.id.butPlay, getString(R.string.pause_label)); + views.setImageViewResource(R.id.butPlayExtended, R.drawable.ic_av_pause_white_48dp); + views.setContentDescription(R.id.butPlayExtended, getString(R.string.pause_label)); } else { views.setImageViewResource(R.id.butPlay, R.drawable.ic_av_play_white_48dp); views.setContentDescription(R.id.butPlay, getString(R.string.play_label)); + views.setImageViewResource(R.id.butPlayExtended, R.drawable.ic_av_play_white_48dp); + views.setContentDescription(R.id.butPlayExtended, getString(R.string.play_label)); } - views.setOnClickPendingIntent(R.id.butPlay, createMediaButtonIntent()); + views.setOnClickPendingIntent(R.id.butPlay, + createMediaButtonIntent(KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE)); + views.setOnClickPendingIntent(R.id.butPlayExtended, + createMediaButtonIntent(KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE)); } else { nothingPlaying = true; } @@ -168,16 +177,20 @@ public class PlayerWidgetJobService extends SafeJobIntentService { // start the app if they click anything views.setOnClickPendingIntent(R.id.layout_left, startMediaPlayer); views.setOnClickPendingIntent(R.id.butPlay, startMediaPlayer); + views.setOnClickPendingIntent(R.id.butPlayExtended, + createMediaButtonIntent(KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE)); views.setViewVisibility(R.id.txtvProgress, View.GONE); views.setViewVisibility(R.id.txtvTitle, View.GONE); views.setViewVisibility(R.id.txtNoPlaying, View.VISIBLE); views.setImageViewResource(R.id.imgvCover, R.mipmap.ic_launcher_round); views.setImageViewResource(R.id.butPlay, R.drawable.ic_av_play_white_48dp); + views.setImageViewResource(R.id.butPlayExtended, R.drawable.ic_av_play_white_48dp); } if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) { for (int id : widgetIds) { Bundle options = manager.getAppWidgetOptions(id); + SharedPreferences prefs = getSharedPreferences(PlayerWidget.PREFS_NAME, Context.MODE_PRIVATE); int minWidth = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH); int columns = getCellsForSize(minWidth); if (columns < 3) { @@ -185,8 +198,18 @@ public class PlayerWidgetJobService extends SafeJobIntentService { } else { views.setViewVisibility(R.id.layout_center, View.VISIBLE); } + boolean showRewind = prefs.getBoolean(PlayerWidget.KEY_WIDGET_REWIND + id, false); + boolean showFastForward = prefs.getBoolean(PlayerWidget.KEY_WIDGET_FAST_FORWARD + id, false); + boolean showSkip = prefs.getBoolean(PlayerWidget.KEY_WIDGET_SKIP + id, false); + + if (showRewind || showSkip || showFastForward) { + views.setInt(R.id.extendedButtonsContainer, "setVisibility", View.VISIBLE); + views.setInt(R.id.butPlay, "setVisibility", View.GONE); + views.setInt(R.id.butRew, "setVisibility", showRewind ? View.VISIBLE : View.GONE); + views.setInt(R.id.butFastForward, "setVisibility", showFastForward ? View.VISIBLE : View.GONE); + views.setInt(R.id.butSkip, "setVisibility", showSkip ? View.VISIBLE : View.GONE); + } - SharedPreferences prefs = getSharedPreferences(PlayerWidget.PREFS_NAME, Context.MODE_PRIVATE); int backgroundColor = prefs.getInt(PlayerWidget.KEY_WIDGET_COLOR + id, PlayerWidget.DEFAULT_COLOR); views.setInt(R.id.widgetLayout, "setBackgroundColor", backgroundColor); @@ -200,13 +223,13 @@ public class PlayerWidgetJobService extends SafeJobIntentService { /** * Creates an intent which fakes a mediabutton press */ - private PendingIntent createMediaButtonIntent() { - KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE); + private PendingIntent createMediaButtonIntent(int eventCode) { + KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, eventCode); Intent startingIntent = new Intent(getBaseContext(), MediaButtonReceiver.class); startingIntent.setAction(MediaButtonReceiver.NOTIFY_BUTTON_RECEIVER); startingIntent.putExtra(Intent.EXTRA_KEY_EVENT, event); - return PendingIntent.getBroadcast(this, 0, startingIntent, 0); + return PendingIntent.getBroadcast(this, eventCode, startingIntent, 0); } private String getProgressString(int position, int duration, float speed) { |