-
-
Save aftabsikander/cf2c7b8bc9c6d1d3c88e0afeec0d14df to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.mediasessioncompat; | |
import android.app.PendingIntent; | |
import android.content.Context; | |
import android.content.Intent; | |
import android.support.v4.media.MediaDescriptionCompat; | |
import android.support.v4.media.MediaMetadataCompat; | |
import android.support.v4.media.session.MediaButtonReceiver; | |
import android.support.v4.media.session.MediaControllerCompat; | |
import android.support.v4.media.session.MediaSessionCompat; | |
import android.support.v4.media.session.PlaybackStateCompat; | |
import android.support.v7.app.NotificationCompat; | |
/** | |
* Helper APIs for constructing MediaStyle notifications | |
*/ | |
public class MediaStyleHelper { | |
/** | |
* Build a notification using the information from the given media session. Makes heavy use | |
* of {@link MediaMetadataCompat#getDescription()} to extract the appropriate information. | |
* @param context Context used to construct the notification. | |
* @param mediaSession Media session to get information. | |
* @return A pre-built notification with information from the given media session. | |
*/ | |
public static NotificationCompat.Builder from( | |
Context context, MediaSessionCompat mediaSession) { | |
MediaControllerCompat controller = mediaSession.getController(); | |
MediaMetadataCompat mediaMetadata = controller.getMetadata(); | |
MediaDescriptionCompat description = mediaMetadata.getDescription(); | |
NotificationCompat.Builder builder = new NotificationCompat.Builder(context); | |
builder | |
.setContentTitle(description.getTitle()) | |
.setContentText(description.getSubtitle()) | |
.setSubText(description.getDescription()) | |
.setLargeIcon(description.getIconBitmap()) | |
.setContentIntent(controller.getSessionActivity()) | |
.setDeleteIntent( | |
MediaButtonReceiver.buildMediaButtonPendingIntent(context, PlaybackStateCompat.ACTION_STOP)) | |
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC); | |
return builder; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment