diff --git a/app/src/main/java/org/schabi/newpipe/player/MainPlayer.java b/app/src/main/java/org/schabi/newpipe/player/MainPlayer.java
index 92c6a3c86..065efca02 100644
--- a/app/src/main/java/org/schabi/newpipe/player/MainPlayer.java
+++ b/app/src/main/java/org/schabi/newpipe/player/MainPlayer.java
@@ -244,8 +244,7 @@ public final class MainPlayer extends Service {
}
private void showNotificationAndStartForeground() {
- NotificationUtil.getInstance().recreateNotification(playerImpl, true);
- NotificationUtil.getInstance().setProgressbarOnOldNotifications(100, 0, false);
+ NotificationUtil.getInstance().createNotificationIfNeeded(playerImpl, true);
NotificationUtil.getInstance().startForegroundServiceWithNotification(this);
}
diff --git a/app/src/main/java/org/schabi/newpipe/player/NotificationUtil.java b/app/src/main/java/org/schabi/newpipe/player/NotificationUtil.java
index 5f7398089..32dd93bd4 100644
--- a/app/src/main/java/org/schabi/newpipe/player/NotificationUtil.java
+++ b/app/src/main/java/org/schabi/newpipe/player/NotificationUtil.java
@@ -7,16 +7,13 @@ import android.app.Service;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Matrix;
-import android.os.Build;
import android.util.Log;
-import android.widget.RemoteViews;
import androidx.annotation.DrawableRes;
import androidx.annotation.Nullable;
import androidx.core.app.NotificationCompat;
import androidx.core.content.ContextCompat;
-import org.schabi.newpipe.BuildConfig;
import org.schabi.newpipe.MainActivity;
import org.schabi.newpipe.R;
import org.schabi.newpipe.util.NavigationHelper;
@@ -34,8 +31,6 @@ import static org.schabi.newpipe.player.MainPlayer.ACTION_PLAY_PAUSE;
import static org.schabi.newpipe.player.MainPlayer.ACTION_PLAY_PREVIOUS;
import static org.schabi.newpipe.player.MainPlayer.ACTION_REPEAT;
import static org.schabi.newpipe.player.MainPlayer.ACTION_SHUFFLE;
-import static org.schabi.newpipe.player.MainPlayer.SET_IMAGE_RESOURCE_METHOD;
-import static org.schabi.newpipe.player.helper.PlayerHelper.getTimeString;
/**
* This is a utility class for player notifications.
@@ -46,8 +41,6 @@ public final class NotificationUtil {
private static final String TAG = "NotificationUtil";
private static final boolean DEBUG = BasePlayer.DEBUG;
private static final int NOTIFICATION_ID = 123789;
- // only used for old notifications
- private static final int NOTIFICATION_UPDATES_BEFORE_RESET = 60;
@Nullable private static NotificationUtil instance = null;
@@ -58,14 +51,8 @@ public final class NotificationUtil {
private String notificationSlot4 = "close";
private NotificationManager notificationManager;
- private RemoteViews notificationRemoteView; // always null when new notifications are used
- private RemoteViews bigNotificationRemoteView; // always null when new notifications are used
private NotificationCompat.Builder notificationBuilder;
- private int cachedDuration; // only used for old notifications
- private String cachedDurationString; // only used for old notifications
- private int timesNotificationUpdated; // only used for old notifications
-
private NotificationUtil() {
}
@@ -81,110 +68,13 @@ public final class NotificationUtil {
// NOTIFICATION
/////////////////////////////////////////////////////
- NotificationCompat.Builder createNotification(final VideoPlayerImpl player) {
- notificationManager =
- (NotificationManager) player.context.getSystemService(NOTIFICATION_SERVICE);
- NotificationCompat.Builder builder = new NotificationCompat.Builder(player.context,
- player.context.getString(R.string.notification_channel_id));
-
- final boolean areOldNotificationsEnabled = player.sharedPreferences.getBoolean(
- player.context.getString(R.string.enable_old_notifications_key), false);
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP || areOldNotificationsEnabled) {
- notificationRemoteView = new RemoteViews(BuildConfig.APPLICATION_ID,
- R.layout.player_notification);
- bigNotificationRemoteView = new RemoteViews(BuildConfig.APPLICATION_ID,
- R.layout.player_notification_expanded);
-
- setupOldNotification(notificationRemoteView, player);
- setupOldNotification(bigNotificationRemoteView, player);
-
- builder
- .setOngoing(true)
- .setSmallIcon(R.drawable.ic_newpipe_triangle_white)
- .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
- .setCustomContentView(notificationRemoteView)
- .setCustomBigContentView(bigNotificationRemoteView)
- .setPriority(NotificationCompat.PRIORITY_MAX);
- } else {
- final String compactView = player.sharedPreferences.getString(player.context.getString(
- R.string.settings_notifications_compact_view_key), "0,1,2");
- int compactSlot0 = 0;
- int compactSlot1 = 1;
- int compactSlot2 = 2;
- try {
- if (compactView != null) {
- final String[] parts = compactView.split(",");
- compactSlot0 = Integer.parseInt(parts[0]);
- compactSlot1 = Integer.parseInt(parts[1]);
- compactSlot2 = Integer.parseInt(parts[2]);
- if (compactSlot0 > 4) {
- compactSlot0 = 0;
- }
- if (compactSlot1 > 4) {
- compactSlot1 = 1;
- }
- if (compactSlot2 > 4) {
- compactSlot2 = 2;
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- builder.setStyle(new androidx.media.app.NotificationCompat.MediaStyle()
- .setMediaSession(player.mediaSessionManager.getSessionToken())
- .setShowCancelButton(false)
- .setShowActionsInCompactView(compactSlot0, compactSlot1, compactSlot2))
- .setOngoing(false)
- .setContentIntent(PendingIntent.getActivity(player.context, NOTIFICATION_ID,
- getIntentForNotification(player), FLAG_UPDATE_CURRENT))
- .setSmallIcon(R.drawable.ic_newpipe_triangle_white)
- .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
- .setContentTitle(player.getVideoTitle())
- .setContentText(player.getUploaderName())
- .setDeleteIntent(PendingIntent.getActivity(player.context, NOTIFICATION_ID,
- new Intent(ACTION_CLOSE), FLAG_UPDATE_CURRENT))
- .setColor(ContextCompat.getColor(player.context, R.color.gray))
- .setPriority(NotificationCompat.PRIORITY_HIGH);
- final boolean scaleImageToSquareAspectRatio = player.sharedPreferences.getBoolean(
- player.context.getString(R.string.scale_to_square_image_in_notifications_key),
- false);
- if (scaleImageToSquareAspectRatio) {
- builder.setLargeIcon(getBitmapWithSquareAspectRatio(player.getThumbnail()));
- } else {
- builder.setLargeIcon(player.getThumbnail());
- }
-
- notificationSlot0 = player.sharedPreferences.getString(
- player.context.getString(R.string.notification_slot_0_key), notificationSlot0);
- notificationSlot1 = player.sharedPreferences.getString(
- player.context.getString(R.string.notification_slot_1_key), notificationSlot1);
- notificationSlot2 = player.sharedPreferences.getString(
- player.context.getString(R.string.notification_slot_2_key), notificationSlot2);
- notificationSlot3 = player.sharedPreferences.getString(
- player.context.getString(R.string.notification_slot_3_key), notificationSlot3);
- notificationSlot4 = player.sharedPreferences.getString(
- player.context.getString(R.string.notification_slot_4_key), notificationSlot4);
-
- addAction(builder, player, notificationSlot0);
- addAction(builder, player, notificationSlot1);
- addAction(builder, player, notificationSlot2);
- addAction(builder, player, notificationSlot3);
- addAction(builder, player, notificationSlot4);
- }
-
- return builder;
- }
-
/**
* Updates the notification, and the button icons depending on the playback state.
* On old notifications used for changes on the remoteView
*
* @param player the player currently open, to take data from
- * @param playPauseDrawable if != -1, sets the drawable with that id on the play/pause button
*/
- synchronized void updateNotification(final VideoPlayerImpl player,
- @DrawableRes final int playPauseDrawable) {
+ synchronized void updateNotification(final VideoPlayerImpl player) {
if (DEBUG) {
Log.d(TAG, "N_ updateNotification()");
}
@@ -192,56 +82,116 @@ public final class NotificationUtil {
if (notificationBuilder == null) {
return;
}
- if (playPauseDrawable != -1) {
- if (notificationRemoteView != null) {
- notificationRemoteView
- .setImageViewResource(R.id.notificationPlayPause, playPauseDrawable);
- }
- if (bigNotificationRemoteView != null) {
- bigNotificationRemoteView
- .setImageViewResource(R.id.notificationPlayPause, playPauseDrawable);
- }
+
+ notificationBuilder.setContentTitle(player.getVideoTitle());
+ notificationBuilder.setContentText(player.getUploaderName());
+ final boolean scaleImageToSquareAspectRatio = player.sharedPreferences.getBoolean(
+ player.context.getString(R.string.scale_to_square_image_in_notifications_key),
+ false);
+ if (scaleImageToSquareAspectRatio) {
+ notificationBuilder.setLargeIcon(
+ getBitmapWithSquareAspectRatio(player.getThumbnail()));
+ } else {
+ notificationBuilder.setLargeIcon(player.getThumbnail());
}
- final boolean areOldNotificationsEnabled = player.sharedPreferences.getBoolean(
- player.context.getString(R.string.enable_old_notifications_key), false);
- if (!areOldNotificationsEnabled) {
- notificationBuilder.setContentTitle(player.getVideoTitle());
- notificationBuilder.setContentText(player.getUploaderName());
- final boolean scaleImageToSquareAspectRatio = player.sharedPreferences.getBoolean(
- player.context.getString(R.string.scale_to_square_image_in_notifications_key),
- false);
- if (scaleImageToSquareAspectRatio) {
- notificationBuilder.setLargeIcon(
- getBitmapWithSquareAspectRatio(player.getThumbnail()));
- } else {
- notificationBuilder.setLargeIcon(player.getThumbnail());
- }
-
- setAction(player, notificationSlot0, 0);
- setAction(player, notificationSlot1, 1);
- setAction(player, notificationSlot2, 2);
- setAction(player, notificationSlot3, 3);
- setAction(player, notificationSlot4, 4);
- }
+ setAction(player, notificationSlot0, 0);
+ setAction(player, notificationSlot1, 1);
+ setAction(player, notificationSlot2, 2);
+ setAction(player, notificationSlot3, 3);
+ setAction(player, notificationSlot4, 4);
notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build());
-
- if (areOldNotificationsEnabled) {
- timesNotificationUpdated++;
- }
}
- void recreateNotification(final VideoPlayerImpl player, final boolean recreate) {
- final boolean areOldNotificationsEnabled = player.sharedPreferences.getBoolean(
- player.context.getString(R.string.enable_old_notifications_key), false);
- if (notificationBuilder == null || recreate || areOldNotificationsEnabled) {
+ /**
+ * Creates the notification, if it does not exist already or unless forceRecreate is true.
+ * @param player the player currently open, to take data from
+ * @param forceRecreate whether to force the recreation of the notification even if it already
+ * exists
+ */
+ void createNotificationIfNeeded(final VideoPlayerImpl player, final boolean forceRecreate) {
+ if (notificationBuilder == null || forceRecreate) {
if (DEBUG) {
- Log.d(TAG, "N_ recreateNotification(true)");
+ Log.d(TAG, "N_ createNotificationIfNeeded(true)");
}
notificationBuilder = createNotification(player);
}
- timesNotificationUpdated = 0;
+ }
+
+ private NotificationCompat.Builder createNotification(final VideoPlayerImpl player) {
+ notificationManager =
+ (NotificationManager) player.context.getSystemService(NOTIFICATION_SERVICE);
+ NotificationCompat.Builder builder = new NotificationCompat.Builder(player.context,
+ player.context.getString(R.string.notification_channel_id));
+
+ final String compactView = player.sharedPreferences.getString(player.context.getString(
+ R.string.settings_notifications_compact_view_key), "0,1,2");
+ int compactSlot0 = 0;
+ int compactSlot1 = 1;
+ int compactSlot2 = 2;
+ try {
+ if (compactView != null) {
+ final String[] parts = compactView.split(",");
+ compactSlot0 = Integer.parseInt(parts[0]);
+ compactSlot1 = Integer.parseInt(parts[1]);
+ compactSlot2 = Integer.parseInt(parts[2]);
+ if (compactSlot0 > 4) {
+ compactSlot0 = 0;
+ }
+ if (compactSlot1 > 4) {
+ compactSlot1 = 1;
+ }
+ if (compactSlot2 > 4) {
+ compactSlot2 = 2;
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ builder.setStyle(new androidx.media.app.NotificationCompat.MediaStyle()
+ .setMediaSession(player.mediaSessionManager.getSessionToken())
+ .setShowCancelButton(false)
+ .setShowActionsInCompactView(compactSlot0, compactSlot1, compactSlot2))
+ .setOngoing(false)
+ .setContentIntent(PendingIntent.getActivity(player.context, NOTIFICATION_ID,
+ getIntentForNotification(player), FLAG_UPDATE_CURRENT))
+ .setSmallIcon(R.drawable.ic_newpipe_triangle_white)
+ .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
+ .setContentTitle(player.getVideoTitle())
+ .setContentText(player.getUploaderName())
+ .setDeleteIntent(PendingIntent.getActivity(player.context, NOTIFICATION_ID,
+ new Intent(ACTION_CLOSE), FLAG_UPDATE_CURRENT))
+ .setColor(ContextCompat.getColor(player.context, R.color.gray))
+ .setPriority(NotificationCompat.PRIORITY_HIGH);
+ final boolean scaleImageToSquareAspectRatio = player.sharedPreferences.getBoolean(
+ player.context.getString(R.string.scale_to_square_image_in_notifications_key),
+ false);
+ if (scaleImageToSquareAspectRatio) {
+ builder.setLargeIcon(getBitmapWithSquareAspectRatio(player.getThumbnail()));
+ } else {
+ builder.setLargeIcon(player.getThumbnail());
+ }
+
+ notificationSlot0 = player.sharedPreferences.getString(
+ player.context.getString(R.string.notification_slot_0_key), notificationSlot0);
+ notificationSlot1 = player.sharedPreferences.getString(
+ player.context.getString(R.string.notification_slot_1_key), notificationSlot1);
+ notificationSlot2 = player.sharedPreferences.getString(
+ player.context.getString(R.string.notification_slot_2_key), notificationSlot2);
+ notificationSlot3 = player.sharedPreferences.getString(
+ player.context.getString(R.string.notification_slot_3_key), notificationSlot3);
+ notificationSlot4 = player.sharedPreferences.getString(
+ player.context.getString(R.string.notification_slot_4_key), notificationSlot4);
+
+ addAction(builder, player, notificationSlot0);
+ addAction(builder, player, notificationSlot1);
+ addAction(builder, player, notificationSlot2);
+ addAction(builder, player, notificationSlot3);
+ addAction(builder, player, notificationSlot4);
+
+ return builder;
}
@@ -251,65 +201,18 @@ public final class NotificationUtil {
boolean hasSlotWithBuffering() {
- return notificationSlot0.contains("buffering")
- || notificationSlot1.contains("buffering")
- || notificationSlot2.contains("buffering")
- || notificationSlot3.contains("buffering")
- || notificationSlot4.contains("buffering");
- }
-
-
- /////////////////////////////////////////////////////
- // OLD NOTIFICATION
- /////////////////////////////////////////////////////
-
- @Deprecated
- boolean shouldRecreateOldNotification() {
- return timesNotificationUpdated > NOTIFICATION_UPDATES_BEFORE_RESET;
- }
-
- /**
- * @param bitmap if null, the thumbnail will be removed
- */
- @Deprecated // only used for old notifications
- void updateOldNotificationsThumbnail(@Nullable final Bitmap bitmap) {
- if (notificationRemoteView != null) {
- notificationRemoteView.setImageViewBitmap(R.id.notificationCover, bitmap);
- }
- if (bigNotificationRemoteView != null) {
- bigNotificationRemoteView.setImageViewBitmap(R.id.notificationCover, bitmap);
- }
- }
-
- @Deprecated // only used for old notifications
- void setProgressbarOnOldNotifications(final int max, final int progress,
- final boolean indeterminate) {
- if (bigNotificationRemoteView != null) { //FIXME put in Util and turn into a method
- bigNotificationRemoteView.setProgressBar(R.id.notificationProgressBar, max, progress,
- indeterminate);
- }
- if (notificationRemoteView != null) {
- notificationRemoteView.setProgressBar(R.id.notificationProgressBar, max, progress,
- indeterminate);
- }
- }
-
- @Deprecated // only used for old notifications
- void setCachedDuration(final int currentProgress, final int duration) {
- if (bigNotificationRemoteView != null) {
- if (cachedDuration != duration) {
- cachedDuration = duration;
- cachedDurationString = getTimeString(duration);
- }
- bigNotificationRemoteView.setTextViewText(R.id.notificationTime,
- getTimeString(currentProgress) + " / " + cachedDurationString);
- }
+ return notificationSlot0.equals("play_pause_buffering")
+ || notificationSlot1.equals("play_pause_buffering")
+ || notificationSlot2.equals("play_pause_buffering")
+ || notificationSlot3.equals("play_pause_buffering")
+ || notificationSlot4.equals("play_pause_buffering");
}
public void cancelNotification() {
try {
if (notificationManager != null) {
notificationManager.cancel(NOTIFICATION_ID);
+ notificationManager = null;
}
} catch (Exception e) {
Log.e("NotificationUtil", "Exception", e);
@@ -317,64 +220,6 @@ public final class NotificationUtil {
}
- /////////////////////////////////////////////////////
- // OLD NOTIFICATION UTILS
- /////////////////////////////////////////////////////
-
- @Deprecated // only used for old notifications
- private void setupOldNotification(final RemoteViews remoteViews,
- final VideoPlayerImpl player) {
- remoteViews.setTextViewText(R.id.notificationSongName, player.getVideoTitle());
- remoteViews.setTextViewText(R.id.notificationArtist, player.getUploaderName());
- remoteViews.setImageViewBitmap(R.id.notificationCover, player.getThumbnail());
-
- remoteViews.setOnClickPendingIntent(R.id.notificationPlayPause,
- PendingIntent.getBroadcast(player.context, NOTIFICATION_ID,
- new Intent(ACTION_PLAY_PAUSE), FLAG_UPDATE_CURRENT));
- remoteViews.setOnClickPendingIntent(R.id.notificationStop,
- PendingIntent.getBroadcast(player.context, NOTIFICATION_ID,
- new Intent(ACTION_CLOSE), FLAG_UPDATE_CURRENT));
- remoteViews.setOnClickPendingIntent(R.id.notificationRepeat,
- PendingIntent.getBroadcast(player.context, NOTIFICATION_ID,
- new Intent(ACTION_REPEAT), FLAG_UPDATE_CURRENT));
- remoteViews.setOnClickPendingIntent(R.id.notificationContent,
- PendingIntent.getBroadcast(player.context, NOTIFICATION_ID,
- getIntentForNotification(player), FLAG_UPDATE_CURRENT));
-
- if (player.playQueue != null && player.playQueue.size() > 1) {
- remoteViews.setInt(R.id.notificationFRewind,
- SET_IMAGE_RESOURCE_METHOD, R.drawable.exo_controls_previous);
- remoteViews.setInt(R.id.notificationFForward,
- SET_IMAGE_RESOURCE_METHOD, R.drawable.exo_controls_next);
- remoteViews.setOnClickPendingIntent(R.id.notificationFRewind,
- PendingIntent.getBroadcast(player.context, NOTIFICATION_ID,
- new Intent(ACTION_PLAY_PREVIOUS), FLAG_UPDATE_CURRENT));
- remoteViews.setOnClickPendingIntent(R.id.notificationFForward,
- PendingIntent.getBroadcast(player.context, NOTIFICATION_ID,
- new Intent(ACTION_PLAY_NEXT), FLAG_UPDATE_CURRENT));
- } else {
- remoteViews.setInt(R.id.notificationFRewind,
- SET_IMAGE_RESOURCE_METHOD, R.drawable.exo_controls_rewind);
- remoteViews.setInt(R.id.notificationFForward,
- SET_IMAGE_RESOURCE_METHOD, R.drawable.exo_controls_fastforward);
- remoteViews.setOnClickPendingIntent(R.id.notificationFRewind,
- PendingIntent.getBroadcast(player.context, NOTIFICATION_ID,
- new Intent(ACTION_FAST_REWIND), FLAG_UPDATE_CURRENT));
- remoteViews.setOnClickPendingIntent(R.id.notificationFForward,
- PendingIntent.getBroadcast(player.context, NOTIFICATION_ID,
- new Intent(ACTION_FAST_FORWARD), FLAG_UPDATE_CURRENT));
- }
-
- setRepeatModeIcon(remoteViews, player.getRepeatMode());
- }
-
- @Deprecated // only used for old notifications
- private void setRepeatModeIcon(final RemoteViews remoteViews, final int repeatMode) {
- remoteViews.setInt(R.id.notificationRepeat, SET_IMAGE_RESOURCE_METHOD,
- getRepeatModeDrawable(repeatMode));
- }
-
-
/////////////////////////////////////////////////////
// ACTIONS
/////////////////////////////////////////////////////
@@ -401,11 +246,11 @@ public final class NotificationUtil {
|| player.getCurrentState() == BasePlayer.STATE_BLOCKED
|| player.getCurrentState() == BasePlayer.STATE_BUFFERING) {
builder.setSmallIcon(android.R.drawable.stat_sys_download);
- return getAction(builder, player, R.drawable.ic_file_download_white_24dp,
+ return getAction(player, R.drawable.ic_file_download_white_24dp,
"Buffering", ACTION_BUFFERING);
} else {
builder.setSmallIcon(R.drawable.ic_newpipe_triangle_white);
- return getAction(builder, player,
+ return getAction(player,
player.isPlaying() ? R.drawable.exo_notification_pause
: R.drawable.exo_notification_play,
player.isPlaying() ? "Pause" : "Play",
@@ -416,51 +261,51 @@ public final class NotificationUtil {
|| player.getCurrentState() == BasePlayer.STATE_PREFLIGHT
|| player.getCurrentState() == BasePlayer.STATE_BLOCKED
|| player.getCurrentState() == BasePlayer.STATE_BUFFERING;
- return getAction(builder, player,
+ return getAction(player,
pauseOrPlay ? R.drawable.exo_notification_pause
: R.drawable.exo_notification_play,
pauseOrPlay ? "Pause" : "Play",
ACTION_PLAY_PAUSE);
case "rewind":
- return getAction(builder, player, R.drawable.exo_controls_rewind,
+ return getAction(player, R.drawable.exo_controls_rewind,
"Rewind", ACTION_FAST_REWIND);
case "smart_rewind_prev":
if (player.playQueue != null && player.playQueue.size() > 1) {
- return getAction(builder, player, R.drawable.exo_notification_previous,
+ return getAction(player, R.drawable.exo_notification_previous,
"Prev", ACTION_PLAY_PREVIOUS);
} else {
- return getAction(builder, player, R.drawable.exo_controls_rewind,
+ return getAction(player, R.drawable.exo_controls_rewind,
"Rewind", ACTION_FAST_REWIND);
}
case "forward":
- return getAction(builder, player, R.drawable.exo_controls_fastforward,
+ return getAction(player, R.drawable.exo_controls_fastforward,
"Forward", ACTION_FAST_FORWARD);
case "smart_forward_next":
if (player.playQueue != null && player.playQueue.size() > 1) {
- return getAction(builder, player, R.drawable.exo_notification_next,
+ return getAction(player, R.drawable.exo_notification_next,
"Next", ACTION_PLAY_NEXT);
} else {
- return getAction(builder, player, R.drawable.exo_controls_fastforward,
+ return getAction(player, R.drawable.exo_controls_fastforward,
"Forward", ACTION_FAST_FORWARD);
}
case "next":
- return getAction(builder, player, R.drawable.exo_notification_next,
+ return getAction(player, R.drawable.exo_notification_next,
"Next", ACTION_PLAY_NEXT);
case "prev":
- return getAction(builder, player, R.drawable.exo_notification_previous,
+ return getAction(player, R.drawable.exo_notification_previous,
"Prev", ACTION_PLAY_PREVIOUS);
case "repeat":
- return getAction(builder, player, getRepeatModeDrawable(player.getRepeatMode()),
+ return getAction(player, getRepeatModeDrawable(player.getRepeatMode()),
getRepeatModeTitle(player.getRepeatMode()), ACTION_REPEAT);
case "shuffle":
final boolean shuffled = player.playQueue != null && player.playQueue.isShuffled();
- return getAction(builder, player,
+ return getAction(player,
shuffled ? R.drawable.exo_controls_shuffle_on
: R.drawable.exo_controls_shuffle_off,
shuffled ? "ShuffleOn" : "ShuffleOff",
ACTION_SHUFFLE);
case "close":
- return getAction(builder, player, R.drawable.ic_close_white_24dp,
+ return getAction(player, R.drawable.ic_close_white_24dp,
"Close", ACTION_CLOSE);
case "n/a":
default:
@@ -469,8 +314,7 @@ public final class NotificationUtil {
}
}
- private NotificationCompat.Action getAction(final NotificationCompat.Builder builder,
- final VideoPlayerImpl player,
+ private NotificationCompat.Action getAction(final VideoPlayerImpl player,
@DrawableRes final int drawable,
final String title,
final String intentAction) {
diff --git a/app/src/main/java/org/schabi/newpipe/player/VideoPlayerImpl.java b/app/src/main/java/org/schabi/newpipe/player/VideoPlayerImpl.java
index e9430be0b..e9c8fd89b 100644
--- a/app/src/main/java/org/schabi/newpipe/player/VideoPlayerImpl.java
+++ b/app/src/main/java/org/schabi/newpipe/player/VideoPlayerImpl.java
@@ -57,7 +57,6 @@ import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.TextView;
-import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
@@ -577,7 +576,7 @@ public class VideoPlayerImpl extends VideoPlayer
void onShuffleOrRepeatModeChanged() {
updatePlaybackButtons();
updatePlayback();
- resetNotification(false, -1);
+ resetNotification(false);
}
@Override
@@ -614,7 +613,7 @@ public class VideoPlayerImpl extends VideoPlayer
titleTextView.setText(tag.getMetadata().getName());
channelTextView.setText(tag.getMetadata().getUploaderName());
- resetNotification(false, -1);
+ resetNotification(false);
updateMetadata();
}
@@ -642,30 +641,6 @@ public class VideoPlayerImpl extends VideoPlayer
// setMetadata only updates the metadata when any of the metadata keys are null
mediaSessionManager.setMetadata(getVideoTitle(), getUploaderName(), getThumbnail(),
duration);
-
- final boolean areOldNotificationsEnabled = sharedPreferences.getBoolean(
- context.getString(R.string.enable_old_notifications_key), false);
- if (areOldNotificationsEnabled) {
- if (!shouldUpdateOnProgress || getCurrentState() == BasePlayer.STATE_COMPLETED
- || getCurrentState() == BasePlayer.STATE_PAUSED || getPlayQueue() == null) {
- return;
- }
-
- if (NotificationUtil.getInstance().shouldRecreateOldNotification()) {
- NotificationUtil.getInstance().recreateNotification(this, false);
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- NotificationUtil.getInstance().updateOldNotificationsThumbnail(getThumbnail());
- }
- }
-
-
- NotificationUtil.getInstance().setCachedDuration(currentProgress, duration);
- NotificationUtil.getInstance().setProgressbarOnOldNotifications(duration,
- currentProgress, false);
-
- NotificationUtil.getInstance().updateNotification(this, -1);
- }
}
@Override
@@ -1083,9 +1058,9 @@ public class VideoPlayerImpl extends VideoPlayer
animatePlayButtons(false, 100);
getRootView().setKeepScreenOn(false);
- NotificationUtil.getInstance().recreateNotification(this, false);
+ NotificationUtil.getInstance().createNotificationIfNeeded(this, false);
NotificationUtil.getInstance().updateNotification(
- this, R.drawable.ic_play_arrow_white_24dp);
+ this);
}
@Override
@@ -1101,7 +1076,7 @@ public class VideoPlayerImpl extends VideoPlayer
isForwardPressed = false;
isRewindPressed = false;
} else {
- NotificationUtil.getInstance().updateNotification(this, -1);
+ NotificationUtil.getInstance().updateNotification(this);
}
}
}
@@ -1121,7 +1096,7 @@ public class VideoPlayerImpl extends VideoPlayer
checkLandscape();
getRootView().setKeepScreenOn(true);
- resetNotification(false, R.drawable.ic_pause_white_24dp);
+ resetNotification(false);
}
@Override
@@ -1137,7 +1112,7 @@ public class VideoPlayerImpl extends VideoPlayer
updateWindowFlags(IDLE_WINDOW_FLAGS);
- resetNotification(false, R.drawable.ic_play_arrow_white_24dp);
+ resetNotification(false);
// Remove running notification when user don't want music (or video in popup)
// to be played in background
@@ -1154,9 +1129,9 @@ public class VideoPlayerImpl extends VideoPlayer
animatePlayButtons(false, 100);
getRootView().setKeepScreenOn(true);
- NotificationUtil.getInstance().recreateNotification(this, false);
+ NotificationUtil.getInstance().createNotificationIfNeeded(this, false);
NotificationUtil.getInstance().updateNotification(
- this, R.drawable.ic_play_arrow_white_24dp);
+ this);
}
@@ -1170,11 +1145,8 @@ public class VideoPlayerImpl extends VideoPlayer
getRootView().setKeepScreenOn(false);
updateWindowFlags(IDLE_WINDOW_FLAGS);
- NotificationUtil.getInstance().recreateNotification(this, false);
- NotificationUtil.getInstance().setProgressbarOnOldNotifications(100, 100, false);
- NotificationUtil.getInstance().updateOldNotificationsThumbnail(getThumbnail());
- NotificationUtil.getInstance().updateNotification(
- this, R.drawable.ic_replay_white_24dp);
+ NotificationUtil.getInstance().createNotificationIfNeeded(this, false);
+ NotificationUtil.getInstance().updateNotification(this);
super.onCompleted();
}
@@ -1182,8 +1154,6 @@ public class VideoPlayerImpl extends VideoPlayer
@Override
public void destroy() {
super.destroy();
-
- NotificationUtil.getInstance().updateOldNotificationsThumbnail(null);
service.getContentResolver().unregisterContentObserver(settingsContentObserver);
}
@@ -1334,10 +1304,9 @@ public class VideoPlayerImpl extends VideoPlayer
// Thumbnail Loading
//////////////////////////////////////////////////////////////////////////*/
- void resetNotification(final boolean recreate, @DrawableRes final int drawableId) {
- NotificationUtil.getInstance().recreateNotification(this, recreate);
- NotificationUtil.getInstance().updateOldNotificationsThumbnail(getThumbnail());
- NotificationUtil.getInstance().updateNotification(this, drawableId);
+ void resetNotification(final boolean recreate) {
+ NotificationUtil.getInstance().createNotificationIfNeeded(this, recreate);
+ NotificationUtil.getInstance().updateNotification(this);
}
@Override
@@ -1347,7 +1316,7 @@ public class VideoPlayerImpl extends VideoPlayer
// rebuild OLD notification here since remote view does not release bitmaps,
// causing memory leaks
super.onLoadingComplete(imageUri, view, loadedImage);
- resetNotification(true, -1);
+ resetNotification(true);
}
@Override
@@ -1355,13 +1324,13 @@ public class VideoPlayerImpl extends VideoPlayer
final View view,
final FailReason failReason) {
super.onLoadingFailed(imageUri, view, failReason);
- resetNotification(true, -1);
+ resetNotification(true);
}
@Override
public void onLoadingCancelled(final String imageUri, final View view) {
super.onLoadingCancelled(imageUri, view);
- resetNotification(true, -1);
+ resetNotification(true);
}
/*//////////////////////////////////////////////////////////////////////////
diff --git a/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java
index 564e3c5ce..a9531693c 100644
--- a/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java
+++ b/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java
@@ -11,7 +11,6 @@ import androidx.annotation.Nullable;
import androidx.preference.Preference;
import org.schabi.newpipe.R;
-import org.schabi.newpipe.player.NotificationUtil;
import org.schabi.newpipe.util.Constants;
public class AppearanceSettingsFragment extends BasePreferenceFragment {
@@ -53,18 +52,8 @@ public class AppearanceSettingsFragment extends BasePreferenceFragment {
final Preference captionSettings = findPreference(captionSettingsKey);
getPreferenceScreen().removePreference(captionSettings);
}
-
- findPreference(getString(R.string.enable_old_notifications_key))
- .setOnPreferenceChangeListener(oldNotificationsOnPreferenceChangeListener);
}
- private Preference.OnPreferenceChangeListener oldNotificationsOnPreferenceChangeListener
- = (preference, newValue) -> {
- // kill player notification
- NotificationUtil.getInstance().cancelNotification();
- return true;
- };
-
@Override
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
addPreferencesFromResource(R.xml.appearance_settings);
diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml
index 98b62238a..36dde583c 100644
--- a/app/src/main/res/values/settings_keys.xml
+++ b/app/src/main/res/values/settings_keys.xml
@@ -114,7 +114,6 @@
- 144p
- enable_old_notifications
notifications_compact_view
0,1,2
scale_to_square_image_in_notifications
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ce0ac40ec..20b6b81f6 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -58,8 +58,6 @@
org.xbmc.kore
Show \"Play with Kodi\" option
Display an option to play a video via Kodi media center
- Enable old notifications
- This enables the old \"Custom RemoteViews\" notifications. If disabled modern MediaStyle notifications will be used.
Scale image to 1:1 aspect ratio
This will scale the notification image from 16:9 to 1:1 aspect ratio
Notification slot 0
diff --git a/app/src/main/res/xml/appearance_settings.xml b/app/src/main/res/xml/appearance_settings.xml
index a77663843..3cdaf8e9e 100644
--- a/app/src/main/res/xml/appearance_settings.xml
+++ b/app/src/main/res/xml/appearance_settings.xml
@@ -39,13 +39,6 @@
android:title="@string/settings_category_notifications_title"
app:iconSpaceReserved="false">
-
-