public static class NotificationCompat.MediaStyle extends NotificationCompat.Style
Notification.bigContentView
, up to 5
NotificationCompat.Action
s specified with
addAction
will
be shown as icon-only pushbuttons, suitable for transport controls. The Bitmap given to
setLargeIcon()
will
be treated as album artwork.
Unlike the other styles provided here, MediaStyle can also modify the standard-size
Notification.contentView
; by providing action indices to
setShowActionsInCompactView(int...)
you can promote up to 3 actions to be displayed
in the standard view alongside the usual content.
Notifications created with MediaStyle will have their category set to
CATEGORY_TRANSPORT
unless you set a different
category using setCategory()
.
Finally, if you attach a MediaSession.Token
using
setMediaSession(android.support.v4.media.session.MediaSessionCompat.Token)
, the System UI
can identify this as a notification representing an active media session and respond
accordingly (by showing album artwork in the lockscreen, for example).
To use this style with your Notification, feed it to
NotificationCompat.Builder.setStyle(android.support.v4.app.NotificationCompat.Style)
like so:
Notification noti = new NotificationCompat.Builder() .setSmallIcon(R.drawable.ic_stat_player) .setContentTitle("Track title") .setContentText("Artist - Album") .setLargeIcon(albumArtBitmap)) .setStyle(new NotificationCompat.MediaStyle() .setMediaSession(mySession)) .build();
Notification.bigContentView
Constructor and Description |
---|
MediaStyle() |
MediaStyle(NotificationCompat.Builder builder) |
Modifier and Type | Method and Description |
---|---|
NotificationCompat.MediaStyle |
setCancelButtonIntent(PendingIntent pendingIntent)
Sets the pending intent to be sent when the cancel button is pressed.
|
NotificationCompat.MediaStyle |
setMediaSession(MediaSessionCompat.Token token)
Attaches a
MediaSessionCompat.Token to this Notification
to provide additional playback information and control to the SystemUI. |
NotificationCompat.MediaStyle |
setShowActionsInCompactView(int... actions)
Requests up to 3 actions (by index in the order of addition) to be shown in the compact
notification view.
|
NotificationCompat.MediaStyle |
setShowCancelButton(boolean show)
Sets whether a cancel button at the top right should be shown in the notification on
platforms before Lollipop.
|
addCompatExtras, build, restoreFromCompatExtras, setBuilder
public MediaStyle()
public MediaStyle(NotificationCompat.Builder builder)
public NotificationCompat.MediaStyle setShowActionsInCompactView(int... actions)
actions
- the indices of the actions to show in the compact notification viewpublic NotificationCompat.MediaStyle setMediaSession(MediaSessionCompat.Token token)
MediaSessionCompat.Token
to this Notification
to provide additional playback information and control to the SystemUI.public NotificationCompat.MediaStyle setShowCancelButton(boolean show)
Prior to Lollipop, there was a bug in the framework which prevented the developer to
make a notification dismissable again after having used the same notification as the
ongoing notification for a foreground service. When the notification was posted by
Service.startForeground(int, android.app.Notification)
, but then the service exited foreground mode
via Service.stopForeground(boolean)
, without removing the notification, the
notification stayed ongoing, and thus not dismissable.
This is a common scenario for media notifications, as this is exactly the service lifecycle that happens when playing/pausing media. Thus, a workaround is provided by the support library: Instead of making the notification ongoing depending on the playback state, the support library provides the ability to add an explicit cancel button to the notification.
Note that the notification is enforced to be ongoing if a cancel button is shown to provide a consistent user experience.
Also note that this method is a no-op when running on Lollipop and later.
show
- whether to show a cancel buttonpublic NotificationCompat.MediaStyle setCancelButtonIntent(PendingIntent pendingIntent)
setShowCancelButton(boolean)
.pendingIntent
- the intent to be sent when the cancel button is pressed