From 426bc940905237accf902f42d63b3777c11ff72e Mon Sep 17 00:00:00 2001 From: bachinger Date: Fri, 29 Dec 2023 06:53:04 -0800 Subject: [PATCH] Don't set negative values to setWhen() When the 'when' timer of the notification is disabled `DefaultMediaNotificationProvider` may set `C.TIME_UNSET` as the time. Users reported problems on some devices with this and the docs ask for an event time that probably shouldn't be a negative number. This change sets `0L` instead of `C.TIME_UNSET` when the timer is disabled. Issue: androidx/media#903 #minor-release PiperOrigin-RevId: 594451074 --- RELEASENOTES.md | 3 +++ .../media3/session/DefaultMediaNotificationProvider.java | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 7e697a693e4..5b32e1bb581 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -117,6 +117,9 @@ [#802](https://github.com/androidx/media/issues/802)). * Fix broadcasting `notifyChildrenChanged` for legacy controllers ([#644](https://github.com/androidx/media/issues/644)). + * Fix a bug where setting a negative time for a disabled `setWhen` timer + of the notification caused a crash on some devices + ([#903](https://github.com/androidx/media/issues/903)). * UI: * Fix issue where forward and rewind buttons are not visible when used with Material Design in a BottomSheetDialogFragment 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 e9d77e75f7c..f6f4696a083 100644 --- a/libraries/session/src/main/java/androidx/media3/session/DefaultMediaNotificationProvider.java +++ b/libraries/session/src/main/java/androidx/media3/session/DefaultMediaNotificationProvider.java @@ -375,7 +375,7 @@ public final MediaNotification createNotification( long playbackStartTimeMs = getPlaybackStartTimeEpochMs(player); boolean displayElapsedTimeWithChronometer = playbackStartTimeMs != C.TIME_UNSET; builder - .setWhen(playbackStartTimeMs) + .setWhen(displayElapsedTimeWithChronometer ? playbackStartTimeMs : 0L) .setShowWhen(displayElapsedTimeWithChronometer) .setUsesChronometer(displayElapsedTimeWithChronometer);