diff --git a/libraries/session/src/main/java/androidx/media3/session/DefaultMediaNotificationProvider.java b/libraries/session/src/main/java/androidx/media3/session/DefaultMediaNotificationProvider.java index 710070b2ef..dc88c45510 100644 --- a/libraries/session/src/main/java/androidx/media3/session/DefaultMediaNotificationProvider.java +++ b/libraries/session/src/main/java/androidx/media3/session/DefaultMediaNotificationProvider.java @@ -79,6 +79,8 @@ import java.util.concurrent.ExecutionException; *
  • {@code media3_notification_pause} - The pause icon. *
  • {@code media3_notification_seek_to_previous} - The previous icon. *
  • {@code media3_notification_seek_to_next} - The next icon. + *
  • {@code media3_notification_small_icon} - The {@link + * NotificationCompat.Builder#setSmallIcon(int) small icon}. * */ @UnstableApi @@ -134,10 +136,18 @@ public class DefaultMediaNotificationProvider implements MediaNotification.Provi Player player = mediaSession.getPlayer(); NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID); + + MediaStyle mediaStyle = new MediaStyle(); + int[] compactViewIndices = + addNotificationActions( + getMediaButtons(player.getAvailableCommands(), customLayout, player.getPlayWhenReady()), + builder, + actionFactory); + mediaStyle.setShowActionsInCompactView(compactViewIndices); + // Set metadata info in the notification. MediaMetadata metadata = player.getMediaMetadata(); builder.setContentTitle(metadata.title).setContentText(metadata.artist); - @Nullable ListenableFuture bitmapFuture = loadArtworkBitmap(metadata); if (bitmapFuture != null) { if (bitmapFuture.isDone()) { @@ -161,13 +171,6 @@ public class DefaultMediaNotificationProvider implements MediaNotification.Provi } } - MediaStyle mediaStyle = new MediaStyle(); - int[] compactViewIndices = - addNotificationActions( - getMediaButtons(player.getAvailableCommands(), customLayout, player.getPlayWhenReady()), - builder, - actionFactory); - mediaStyle.setShowActionsInCompactView(compactViewIndices); if (player.isCommandAvailable(COMMAND_STOP) || Util.SDK_INT < 21) { // We must include a cancel intent for pre-L devices. mediaStyle.setCancelButtonIntent(actionFactory.createMediaActionPendingIntent(COMMAND_STOP)); @@ -185,7 +188,7 @@ public class DefaultMediaNotificationProvider implements MediaNotification.Provi .setContentIntent(mediaSession.getSessionActivity()) .setDeleteIntent(actionFactory.createMediaActionPendingIntent(COMMAND_STOP)) .setOnlyAlertOnce(true) - .setSmallIcon(getSmallIconResId(context)) + .setSmallIcon(R.drawable.media3_notification_small_icon) .setStyle(mediaStyle) .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setOngoing(false) @@ -385,15 +388,6 @@ public class DefaultMediaNotificationProvider implements MediaNotification.Provi return future; } - private static int getSmallIconResId(Context context) { - int appIcon = context.getApplicationInfo().icon; - if (appIcon != 0) { - return appIcon; - } else { - return Util.SDK_INT >= 21 ? R.drawable.media_session_service_notification_ic_music_note : 0; - } - } - private static long getPlaybackStartTimeEpochMs(Player player) { // Changing "showWhen" causes notification flicker if SDK_INT < 21. if (Util.SDK_INT >= 21