From 026aea7d3d85406ef9acf4e65cfffbc5e683a762 Mon Sep 17 00:00:00 2001 From: ibaker Date: Tue, 25 Oct 2022 11:54:05 +0000 Subject: [PATCH] Create NotificationChannel in DefaultMediaNotificationProvider.Api26 The inner class avoids a verification failure, which can lead to slower execution at runtime. PiperOrigin-RevId: 483639417 --- .../DefaultMediaNotificationProvider.java | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) 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 5a836aff70..4397b56e8f 100644 --- a/libraries/session/src/main/java/androidx/media3/session/DefaultMediaNotificationProvider.java +++ b/libraries/session/src/main/java/androidx/media3/session/DefaultMediaNotificationProvider.java @@ -35,8 +35,10 @@ import android.graphics.Bitmap; import android.os.Bundle; import android.os.Handler; import android.os.Looper; +import androidx.annotation.DoNotInline; import androidx.annotation.DrawableRes; import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; import androidx.annotation.StringRes; import androidx.core.app.NotificationCompat; import androidx.core.graphics.drawable.IconCompat; @@ -572,18 +574,8 @@ public class DefaultMediaNotificationProvider implements MediaNotification.Provi if (Util.SDK_INT < 26 || notificationManager.getNotificationChannel(channelId) != null) { return; } - NotificationChannel channel = - new NotificationChannel( - channelId, - context.getString(channelNameResourceId), - NotificationManager.IMPORTANCE_LOW); - if (Util.SDK_INT <= 27) { - // API 28+ will automatically hide the app icon 'badge' for notifications using - // Notification.MediaStyle, but we have to manually hide it for APIs 26 (when badges were - // added) and 27. - channel.setShowBadge(false); - } - notificationManager.createNotificationChannel(channel); + Api26.createNotificationChannel( + notificationManager, channelId, context.getString(channelNameResourceId)); } /** @@ -652,4 +644,21 @@ public class DefaultMediaNotificationProvider implements MediaNotification.Provi } } } + + @RequiresApi(26) + private static class Api26 { + @DoNotInline + public static void createNotificationChannel( + NotificationManager notificationManager, String channelId, String channelName) { + NotificationChannel channel = + new NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_LOW); + if (Util.SDK_INT <= 27) { + // API 28+ will automatically hide the app icon 'badge' for notifications using + // Notification.MediaStyle, but we have to manually hide it for APIs 26 (when badges were + // added) and 27. + channel.setShowBadge(false); + } + notificationManager.createNotificationChannel(channel); + } + } }