Ejemplo n.º 1
0
        public void Play(PlaylistFile playlist = null, AudioFile audio = null)
        {
            //EndsWith(".mp3")
            if (audio.SourceString.Split("//")[1].Split("/")[0].EndsWith(".mp3"))
            {
                Toast.MakeText(Application.Context, "URI трека пришел с ошибкой. Невозможно воспроизвести.", ToastLength.Long).Show();
                return;
            }

            if (playlist == null)
            {
                if (currentPlaylist == null && currentTrack == null)
                {
                    return;
                }
                player.Play();
            }
            else
            {
                if (playlist.Id != currentPlaylistId)
                {
                    var audioPlaylist = new AudioPlaylist(playlist, audio, StaticContentService.RepeatPlaylist, StaticContentService.RepeatTrack);
                    currentPlaylist = audioPlaylist;
                    currentTrack    = audio;
                    currentPlaylist.OnCurrentItemChanged += CurrentPlaylistOnOnCurrentItemChanged;
                    CurrentAudioChanged?.Invoke(this, audio);
                }
                else
                {
                    currentPlaylist.SetCurrentTrack(audio);
                    currentTrack = audio;
                    CurrentAudioChanged?.Invoke(this, audio);
                }
                //var playerNotificationManager = (CrossMediaManager.Android.NotificationManager as MediaManager.Platforms.Android.Notifications.NotificationManager).PlayerNotificationManager;


                TaskService.RunOnUI(async() =>
                {
                    Toast.MakeText(Application.Context, "[Отладка] Начинаем воспроизводить...", ToastLength.Long).Show();
                    Toast.MakeText(Application.Context, $"[Отладка] URI: {currentTrack.SourceString}", ToastLength.Long).Show();
                    var media         = await player.Play(currentTrack.SourceString);
                    media.Title       = currentTrack.Title;
                    media.AlbumArtUri = ""; //Без этого треки с битыми ссылками будут выкидывать плеер в фатал
                    media.Artist      = currentTrack.Artist;
                    media.AlbumArtist = currentTrack.Artist;
                    media.ArtUri      = null;
                    if (currentTrack.Cover != "placeholder")
                    {
                        media.ArtUri = currentTrack.Cover;
                    }
                    CrossMediaManager.Android.NotificationManager.UpdateNotification();
                });


                //player.MediaQueue.Current.Title = audio.Title;
                //player.MediaQueue.Current.Artist = audio.Title;
                //player.MediaQueue.Current.AlbumArtUri = audio.Cover;
                //CrossMediaManager.Android.
                //player.NotificationManager = null;
            }
        }