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; } }