From 6ec2f1ef6dccf7dfef755342ad2d6ceabf861c45 Mon Sep 17 00:00:00 2001 From: Rohit Singh Date: Mon, 24 Oct 2022 10:38:13 +0000 Subject: [PATCH] Merge pull request #183 from jasper-apps:bugfix/make-download-notification-appear-immediately PiperOrigin-RevId: 482165983 (cherry picked from commit 1565a2dabaa490647f00c86f72a460aaad53621d) --- RELEASENOTES.md | 2 ++ .../offline/DownloadNotificationHelper.java | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 757f51d57d..e27d4fd5eb 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -30,6 +30,8 @@ * Fix potential infinite loop in `ProgressiveDownloader` caused by simultaneous download and playback with the same `PriorityTaskManager` ([#10570](https://github.com/google/ExoPlayer/pull/10570)). + * Make download notification appear immediately + ([#183](https://github.com/androidx/media/pull/183)) * Audio: * Adds `AudioOffloadListener.onExperimentalOffloadedPlayback` for the AudioTrack offload state. diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/offline/DownloadNotificationHelper.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/offline/DownloadNotificationHelper.java index c8aa4b3d37..e0fe53ef65 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/offline/DownloadNotificationHelper.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/offline/DownloadNotificationHelper.java @@ -15,15 +15,21 @@ */ package androidx.media3.exoplayer.offline; +import static androidx.core.app.NotificationCompat.FOREGROUND_SERVICE_IMMEDIATE; + +import android.annotation.SuppressLint; import android.app.Notification; import android.app.PendingIntent; import android.content.Context; +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.media3.common.C; import androidx.media3.common.util.UnstableApi; +import androidx.media3.common.util.Util; import androidx.media3.exoplayer.R; import androidx.media3.exoplayer.scheduler.Requirements; import java.util.List; @@ -237,6 +243,19 @@ public final class DownloadNotificationHelper { notificationBuilder.setProgress(maxProgress, currentProgress, indeterminateProgress); notificationBuilder.setOngoing(ongoing); notificationBuilder.setShowWhen(showWhen); + if (Util.SDK_INT >= 31) { + Api31.setForegroundServiceBehavior(notificationBuilder); + } return notificationBuilder.build(); } + + @RequiresApi(31) + private static final class Api31 { + @SuppressLint("WrongConstant") // TODO(b/254277605): remove lint suppression + @DoNotInline + public static void setForegroundServiceBehavior( + NotificationCompat.Builder notificationBuilder) { + notificationBuilder.setForegroundServiceBehavior(FOREGROUND_SERVICE_IMMEDIATE); + } + } }