PendingIntent CreateContentIntent(MediaDescriptionCompat description)
        {
            var intent = new Intent(Service, typeof(MusicPlayerActivity));

            intent.SetFlags(ActivityFlags.SingleTop);
            intent.PutExtra(MusicPlayerActivity.EXTA_START_FULLSCREEN, true);
            if (description != null)
            {
                intent.PutExtra(MusicPlayerActivity.CurrentMediaDescription, description);
            }
            return(PendingIntent.GetActivity(Service, RequestCode, intent, PendingIntentFlags.CancelCurrent));
        }
示例#2
0
        public static IMediaItem ToMediaItem(this MediaDescriptionCompat mediaDescription)
        {
            var item = new MediaItem(mediaDescription.MediaUri.ToString());

            //item.Advertisement = mediaDescription.
            //item.Album = mediaDescription.
            //item.AlbumArt = mediaDescription.
            //item.AlbumArtist = mediaDescription.
            //item.AlbumArtUri = mediaDescription.
            //item.Art = mediaDescription.
            //item.Artist = mediaDescription.
            //item.ArtUri = mediaDescription.
            //item.Author = mediaDescription.
            //item.BtFolderType = mediaDescription.
            //item.Compilation = mediaDescription.
            //item.Composer = mediaDescription.
            //item.Date = mediaDescription.
            //item.DiscNumber = mediaDescription.
            //item.DisplayDescription = mediaDescription.
            item.DisplayIcon     = mediaDescription.IconBitmap;
            item.DisplayIconUri  = mediaDescription.IconUri.ToString();
            item.DisplaySubtitle = mediaDescription.Subtitle;
            item.DisplayTitle    = mediaDescription.Title;
            //item.DownloadStatus = mediaDescription.
            //item.Duration = mediaDescription.
            item.Extras = mediaDescription.Extras;
            //item.Genre = mediaDescription.
            item.MediaId  = mediaDescription.MediaId;
            item.MediaUri = mediaDescription.MediaUri.ToString();
            //item.NumTracks = mediaDescription.
            //item.Rating = mediaDescription.
            item.Title = mediaDescription.Title;
            //item.TrackNumber = mediaDescription.
            //item.UserRating = mediaDescription.
            //item.Writer = mediaDescription.
            //item.Year = mediaDescription.
            item.IsMetadataExtracted = true;
            return(item);
        }
示例#3
0
 public override void OnAddQueueItem(MediaDescriptionCompat description, int index) => OnAddQueueItemAtIndexImpl?.Invoke(description, index);
示例#4
0
 public override void OnAddQueueItem(MediaDescriptionCompat description) => OnAddQueueItemImpl?.Invoke(description);
示例#5
0
 public void Add(int index, MediaDescriptionCompat description)
 {
     mediaManager.MediaQueue.Insert(index, description.ToMediaItem());
 }
 public IMediaSource CreateMediaSource(MediaDescriptionCompat description)
 {
     return(description?.ToMediaItem()?.ToMediaSource());
 }
        Notification CreateNotification()
        {
            LogHelper.Debug(Tag, "updateNotificationMetadata. mMetadata=" + metadata);
            if (metadata == null || playbackState == null)
            {
                return(null);
            }

            var notificationBuilder     = new Android.Support.V7.App.NotificationCompat.Builder(service);
            int playPauseButtonPosition = 0;

            // If skip to previous action is enabled
            if ((playbackState.Actions & PlaybackStateCompat.ActionSkipToPrevious) != 0)
            {
                notificationBuilder.AddAction(Resource.Drawable.ic_skip_previous_white_24dp,
                                              "Previous", previousIntent);

                playPauseButtonPosition = 1;
            }

            AddPlayPauseAction(notificationBuilder);

            // If skip to next action is enabled
            if ((playbackState.Actions & PlaybackStateCompat.ActionSkipToNext) != 0)
            {
                notificationBuilder.AddAction(Resource.Drawable.ic_skip_next_white_24dp,
                                              "Next", nextIntent);
            }

            MediaDescriptionCompat description = metadata.Description;

            string fetchArtUrl = null;
            Bitmap art         = null;

            if (description.IconUri != null)
            {
                String artUrl = description.IconUri.ToString();
                art = AlbumArtCache.Instance.GetBigImage(artUrl);
                if (art == null)
                {
                    fetchArtUrl = artUrl;
                    art         = BitmapFactory.DecodeResource(service.Resources,
                                                               Resource.Drawable.ic_default_art);
                }
            }

            notificationBuilder
            .SetStyle(new Android.Support.V7.App.NotificationCompat.MediaStyle()
                      .SetShowActionsInCompactView(
                          new[] { playPauseButtonPosition }) // show only play/pause in compact view
                      .SetMediaSession(sessionToken))
            .SetColor(notificationColor)
            .SetSmallIcon(Resource.Drawable.ic_notification)
            .SetVisibility(Android.Support.V7.App.NotificationCompat.VisibilityPublic)
            .SetUsesChronometer(true)
            //.SetContentIntent(CreateContentIntent())
            .SetContentTitle(description.Title)
            .SetContentText(description.Subtitle)
            .SetLargeIcon(art);

            SetNotificationPlaybackState(notificationBuilder);
            if (fetchArtUrl != null)
            {
                FetchBitmapFromURL(fetchArtUrl, notificationBuilder);
            }

            return(notificationBuilder.Build());
        }