From 5650a68637d24502c2825718317f54915c2d7618 Mon Sep 17 00:00:00 2001 From: Anonymous Raccoon <32224410+AnonymusRaccoon@users.noreply.github.com> Date: Sat, 26 May 2018 20:57:00 +0200 Subject: [PATCH] Solving some player's bug --- MusicApp/MainActivity.cs | 96 +++++++++----- MusicApp/Resources/Portable Class/Browse.cs | 1 + .../Resources/Portable Class/EditMetaData.cs | 6 + .../Resources/Portable Class/FolderBrowse.cs | 1 + .../Resources/Portable Class/FolderTracks.cs | 8 +- MusicApp/Resources/Portable Class/Home.cs | 1 + .../Resources/Portable Class/MusicPlayer.cs | 121 ++++++++++------- MusicApp/Resources/Portable Class/Player.cs | 12 +- MusicApp/Resources/Portable Class/Playlist.cs | 3 +- .../Portable Class/PlaylistTracks.cs | 1 + MusicApp/Resources/Portable Class/Queue.cs | 2 + .../Resources/Portable Class/TopicSelector.cs | 1 - .../Resources/Portable Class/YoutubeEngine.cs | 122 +++--------------- 13 files changed, 186 insertions(+), 189 deletions(-) diff --git a/MusicApp/MainActivity.cs b/MusicApp/MainActivity.cs index b1ccf78..d79af36 100644 --- a/MusicApp/MainActivity.cs +++ b/MusicApp/MainActivity.cs @@ -47,8 +47,8 @@ namespace MusicApp public static int dialogTheme; public static IParcelable parcelable; public static string parcelableSender; - public IParcelable youtubeParcel; - public string youtubeInstanceSave; + public static IParcelable youtubeParcel; + public static string youtubeInstanceSave; public Android.Support.V7.Widget.Toolbar ToolBar; public bool NoToolbarMenu = false; @@ -58,6 +58,7 @@ namespace MusicApp public bool usePager; public View quickPlayLayout; public bool HomeDetails = false; + public bool paused = false; private Handler handler = new Handler(); private ProgressBar bar; @@ -93,6 +94,7 @@ namespace MusicApp OnPaddingChanged?.Invoke(this, e); } + protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); @@ -335,9 +337,34 @@ namespace MusicApp private async void ActionPlayer() { await Task.Delay(100); + //if (YoutubeEngine.instances != null) + //{ + // YoutubeEngine instance = null; + // foreach (YoutubeEngine inst in YoutubeEngine.instances) + // { + // Console.WriteLine(inst); + // if (inst.focused) + // instance = inst; + // } + + // youtubeParcel = instance.ListView.GetLayoutManager().OnSaveInstanceState(); + // youtubeInstanceSave = "YoutubeEngine" + "-" + instance.querryType; + + // ViewGroup rootView = FindViewById(Android.Resource.Id.Content); + // foreach (YoutubeEngine inst in YoutubeEngine.instances) + // { + // OnPaddingChanged -= inst.OnPaddingChanged; + // rootView.RemoveView(inst.emptyView); + // } + // rootView.RemoveView(YoutubeEngine.loadingView); + // YoutubeEngine.instances = null; + //} + //else + // SaveInstance(); + HideTabs(); HideSearch(); - SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Player.NewInstance()).Commit(); + SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Player.NewInstance()).AddToBackStack(null).Commit(); } private async void ReCreateSmallPlayer() @@ -850,7 +877,6 @@ namespace MusicApp public void PrepareSmallPlayer() { - Console.WriteLine("&Index = " + MusicPlayer.CurrentID()); Song current = MusicPlayer.queue[MusicPlayer.CurrentID()]; CoordinatorLayout smallPlayer = FindViewById(Resource.Id.smallPlayer); @@ -954,19 +980,19 @@ namespace MusicApp } youtubeParcel = instance.ListView.GetLayoutManager().OnSaveInstanceState(); - MainActivity.instance.youtubeInstanceSave = "YoutubeEngine" + "-" + instance.querryType; + youtubeInstanceSave = "YoutubeEngine" + "-" + instance.querryType; ViewGroup rootView = FindViewById(Android.Resource.Id.Content); foreach (YoutubeEngine inst in YoutubeEngine.instances) { - MainActivity.instance.OnPaddingChanged -= inst.OnPaddingChanged; + OnPaddingChanged -= inst.OnPaddingChanged; rootView.RemoveView(inst.emptyView); } rootView.RemoveView(YoutubeEngine.loadingView); YoutubeEngine.instances = null; } else - MainActivity.instance.SaveInstance(); + SaveInstance(); HideTabs(); HideSearch(); @@ -1278,23 +1304,25 @@ namespace MusicApp return (int) (px * scale + 0.5f); } - //protected override void OnResume() - //{ - // base.OnResume(); + protected override void OnResume() + { + base.OnResume(); + paused = false; + instance = this; - // if(parcelableSender != null && !ResumeKiller) - // { - // var searchView = menu.FindItem(Resource.Id.search).ActionView.JavaCast(); - // menu.FindItem(Resource.Id.search).CollapseActionView(); - // searchView.ClearFocus(); - // searchView.Iconified = true; - // searchView.SetQuery("", false); - // ResumeInstance(); - // } + if (parcelableSender != null && !ResumeKiller) + { + var searchView = menu.FindItem(Resource.Id.search).ActionView.JavaCast(); + menu.FindItem(Resource.Id.search).CollapseActionView(); + searchView.ClearFocus(); + searchView.Iconified = true; + searchView.SetQuery("", false); + ResumeInstance(); + } - // if (ResumeKiller) - // ResumeKiller = false; - //} + if (ResumeKiller) + ResumeKiller = false; + } public void SaveInstance() { @@ -1306,11 +1334,6 @@ namespace MusicApp parcelableSender = "Home"; parcelable = Home.instance.ListView.GetLayoutManager().OnSaveInstanceState(); } - //else if (Queue.instance != null) - //{ - // parcelableSender = "Queue"; - // parcelable = Queue.instance.ListView.GetLayoutManager().OnSaveInstanceState(); - //} else if (Browse.instance != null && Browse.instance.focused) { parcelableSender = "Browse"; @@ -1325,7 +1348,6 @@ namespace MusicApp } else if (Playlist.instance != null) { - Console.WriteLine("&Playlist saved"); parcelableSender = "Playlist"; parcelable = Playlist.instance.ListView.GetLayoutManager().OnSaveInstanceState(); } @@ -1340,6 +1362,11 @@ namespace MusicApp parcelableSender = "FolderTracks"; parcelable = FolderTracks.instance.ListView.OnSaveInstanceState(); } + else + { + parcelableSender = "Home"; + parcelable = null; + } } public void ResumeInstance() @@ -1347,24 +1374,17 @@ namespace MusicApp switch (parcelableSender) { case "Home": - //Navigate(Resource.Id.musicLayout, true); FindViewById(Resource.Id.bottomView).SelectedItemId = Resource.Id.musicLayout; break; - //case "Queue": - // Transition(Resource.Id.contentView, Queue.instance, false, true); - // break; case "Browse": - //Navigate(Resource.Id.browseLayout, true); FindViewById(Resource.Id.bottomView).SelectedItemId = Resource.Id.browseLayout; break; case "FolderBrowse": - //Navigate(Resource.Id.browseLayout, true); FindViewById(Resource.Id.bottomView).SelectedItemId = Resource.Id.browseLayout; FindViewById(Resource.Id.pager).CurrentItem = 1; FindViewById(Resource.Id.tabs).SetScrollPosition(1, 0f, true); break; case "Playlist": - //Navigate(Resource.Id.playlistLayout, true); FindViewById(Resource.Id.bottomView).SelectedItemId = Resource.Id.playlistLayout; break; case "YoutubeEngine-All": @@ -1414,5 +1434,11 @@ namespace MusicApp StartService(intent); } } + + protected override void OnPause() + { + base.OnPause(); + paused = true; + } } } \ No newline at end of file diff --git a/MusicApp/Resources/Portable Class/Browse.cs b/MusicApp/Resources/Portable Class/Browse.cs index da348e8..bf60209 100644 --- a/MusicApp/Resources/Portable Class/Browse.cs +++ b/MusicApp/Resources/Portable Class/Browse.cs @@ -518,6 +518,7 @@ namespace MusicApp.Resources.Portable_Class public override void OnResume() { base.OnResume(); + instance = this; if(MainActivity.parcelable != null && MainActivity.parcelableSender == "Browse") { ListView.OnRestoreInstanceState(MainActivity.parcelable); diff --git a/MusicApp/Resources/Portable Class/EditMetaData.cs b/MusicApp/Resources/Portable Class/EditMetaData.cs index 3d1c92a..74c4018 100644 --- a/MusicApp/Resources/Portable Class/EditMetaData.cs +++ b/MusicApp/Resources/Portable Class/EditMetaData.cs @@ -367,5 +367,11 @@ namespace MusicApp.Resources.Portable_Class albumArt = null; tempFile = false; } + + protected override void OnResume() + { + base.OnResume(); + instance = this; + } } } \ No newline at end of file diff --git a/MusicApp/Resources/Portable Class/FolderBrowse.cs b/MusicApp/Resources/Portable Class/FolderBrowse.cs index dff7867..6164709 100644 --- a/MusicApp/Resources/Portable Class/FolderBrowse.cs +++ b/MusicApp/Resources/Portable Class/FolderBrowse.cs @@ -457,6 +457,7 @@ namespace MusicApp.Resources.Portable_Class public override void OnResume() { base.OnResume(); + instance = this; if (MainActivity.parcelable != null && MainActivity.parcelableSender == "FolderBrowse") { ListView.OnRestoreInstanceState(MainActivity.parcelable); diff --git a/MusicApp/Resources/Portable Class/FolderTracks.cs b/MusicApp/Resources/Portable Class/FolderTracks.cs index dde2e4f..906964d 100644 --- a/MusicApp/Resources/Portable Class/FolderTracks.cs +++ b/MusicApp/Resources/Portable Class/FolderTracks.cs @@ -24,7 +24,7 @@ namespace MusicApp.Resources.Portable_Class public string path; private List tracks = new List(); - private string[] actions = new string[] { "Play", "Play Next", "Play Last", "Add To Playlist" }; + private readonly string[] actions = new string[] { "Play", "Play Next", "Play Last", "Add To Playlist" }; public override void OnActivityCreated(Bundle savedInstanceState) @@ -285,5 +285,11 @@ namespace MusicApp.Resources.Portable_Class }); builder.Show(); } + + public override void OnResume() + { + base.OnResume(); + instance = this; + } } } \ No newline at end of file diff --git a/MusicApp/Resources/Portable Class/Home.cs b/MusicApp/Resources/Portable Class/Home.cs index bf7cc05..d453c88 100644 --- a/MusicApp/Resources/Portable Class/Home.cs +++ b/MusicApp/Resources/Portable Class/Home.cs @@ -354,6 +354,7 @@ namespace MusicApp.Resources.Portable_Class public override void OnResume() { base.OnResume(); + instance = this; if (MainActivity.parcelableSender == "Home" && !MainActivity.instance.ResumeKiller) { ListView.GetLayoutManager().OnRestoreInstanceState(MainActivity.parcelable); diff --git a/MusicApp/Resources/Portable Class/MusicPlayer.cs b/MusicApp/Resources/Portable Class/MusicPlayer.cs index 1fa2a0f..e84f7db 100644 --- a/MusicApp/Resources/Portable Class/MusicPlayer.cs +++ b/MusicApp/Resources/Portable Class/MusicPlayer.cs @@ -11,6 +11,7 @@ using Android.Support.V4.Content; using Android.Support.V4.Media.Session; using Android.Support.V7.Preferences; using Android.Support.V7.Widget; +using Android.Views; using Android.Widget; using Com.Google.Android.Exoplayer2; using Com.Google.Android.Exoplayer2.Extractor; @@ -68,6 +69,14 @@ namespace MusicApp.Resources.Portable_Class switch (intent.Action) { + case "YoutubePlay": + string action = intent.GetStringExtra("action"); + string title = intent.GetStringExtra("title"); + string artist = intent.GetStringExtra("artist"); + string thumbnailURL = intent.GetStringExtra("thumbnailURI"); + ParseAndPlay(action, file, title, artist, thumbnailURL); + break; + case "Previus": PlayLast(); break; @@ -99,34 +108,17 @@ namespace MusicApp.Resources.Portable_Class break; case "PlayNext": - string title = intent.GetStringExtra("title"); - if (title != null) - { - string artist = intent.GetStringExtra("artist"); - string youtubeID = intent.GetStringExtra("youtubeID"); - string thumbnailURI = intent.GetStringExtra("thumbnailURI"); - AddToQueue(file, title, artist, youtubeID, thumbnailURI); - return StartCommandResult.Sticky; - } AddToQueue(file); break; case "PlayLast": - title = intent.GetStringExtra("title"); - if (title != null) - { - string artist = intent.GetStringExtra("artist"); - string youtubeID = intent.GetStringExtra("youtubeID"); - string thumbnailURI = intent.GetStringExtra("thumbnailURI"); - PlayLastInQueue(file, title, artist, youtubeID, thumbnailURI); - return StartCommandResult.Sticky; - } PlayLastInQueue(file); break; case "Stop": Stop(); break; + case "SleepPause": SleepPause(); break; @@ -136,18 +128,7 @@ namespace MusicApp.Resources.Portable_Class return StartCommandResult.Sticky; if (file != null) - { - string title = intent.GetStringExtra("title"); - if(title != null) - { - string artist = intent.GetStringExtra("artist"); - string youtubeID = intent.GetStringExtra("youtubeID"); - string thumbnailURI = intent.GetStringExtra("thumbnailURI"); - Play(file, title, artist, youtubeID, thumbnailURI); - return StartCommandResult.Sticky; - } Play(file); - } return StartCommandResult.Sticky; } @@ -241,7 +222,7 @@ namespace MusicApp.Resources.Portable_Class if(song.queueSlot == -1) song.queueSlot = CurrentID() + 1; - Console.WriteLine("&QueueSlot = " + song.queueSlot); + Console.WriteLine("&QueueSlot = " + song.queueSlot + "Title = " + song.GetName()); currentID = song.queueSlot; @@ -253,23 +234,23 @@ namespace MusicApp.Resources.Portable_Class Player.instance?.RefreshPlayer(); ParseNextSong(); - CoordinatorLayout smallPlayer = MainActivity.instance.FindViewById(Resource.Id.smallPlayer); - smallPlayer.FindViewById(Resource.Id.spTitle).Text = song.GetName(); - smallPlayer.FindViewById(Resource.Id.spArtist).Text = song.GetArtist(); - smallPlayer.FindViewById(Resource.Id.spPlay).SetImageResource(Resource.Drawable.ic_pause_black_24dp); - ImageView art = smallPlayer.FindViewById(Resource.Id.spArt); + //CoordinatorLayout smallPlayer = MainActivity.instance.FindViewById(Resource.Id.smallPlayer); + //smallPlayer.FindViewById(Resource.Id.spTitle).Text = song.GetName(); + //smallPlayer.FindViewById(Resource.Id.spArtist).Text = song.GetArtist(); + //smallPlayer.FindViewById(Resource.Id.spPlay).SetImageResource(Resource.Drawable.ic_pause_black_24dp); + //ImageView art = smallPlayer.FindViewById(Resource.Id.spArt); - if (!song.IsYt) - { - var songCover = Uri.Parse("content://media/external/audio/albumart"); - var nextAlbumArtUri = ContentUris.WithAppendedId(songCover, song.GetAlbumArt()); + //if (!song.IsYt) + //{ + // var songCover = Uri.Parse("content://media/external/audio/albumart"); + // var nextAlbumArtUri = ContentUris.WithAppendedId(songCover, song.GetAlbumArt()); - Picasso.With(Application.Context).Load(nextAlbumArtUri).Placeholder(Resource.Drawable.MusicIcon).Resize(400, 400).CenterCrop().Into(art); - } - else - { - Picasso.With(Application.Context).Load(song.GetAlbum()).Placeholder(Resource.Drawable.MusicIcon).Resize(400, 400).CenterCrop().Into(art); - } + // Picasso.With(Application.Context).Load(nextAlbumArtUri).Placeholder(Resource.Drawable.MusicIcon).Resize(400, 400).CenterCrop().Into(art); + //} + //else + //{ + // Picasso.With(Application.Context).Load(song.GetAlbum()).Placeholder(Resource.Drawable.MusicIcon).Resize(400, 400).CenterCrop().Into(art); + //} } public void Play(Song song, bool addToQueue = true, long progress = -1) @@ -367,6 +348,55 @@ namespace MusicApp.Resources.Portable_Class } } + private async void ParseAndPlay(string action, string videoID, string title, string artist, string thumbnailURL) + { + if (!parsing) + { + parsing = true; + + if (MainActivity.instance != null && action == "Play") + { + ProgressBar parseProgress = MainActivity.instance.FindViewById(Resource.Id.ytProgress); + parseProgress.Visibility = ViewStates.Visible; + parseProgress.ScaleY = 6; + } + + YoutubeClient client = new YoutubeClient(); + var mediaStreamInfo = await client.GetVideoMediaStreamInfosAsync(videoID); + AudioStreamInfo streamInfo = mediaStreamInfo.Audio.OrderBy(s => s.Bitrate).Last(); + + switch (action) + { + case "Play": + Play(streamInfo.Url, title, artist, videoID, thumbnailURL); + break; + + case "PlayNext": + AddToQueue(streamInfo.Url, title, artist, videoID, thumbnailURL); + parsing = false; + return; + + case "PlayLast": + PlayLastInQueue(streamInfo.Url, title, artist, videoID, thumbnailURL); + parsing = false; + return; + } + + if (MainActivity.instance != null) + { + MainActivity.instance.FindViewById(Resource.Id.ytProgress).Visibility = ViewStates.Gone; + + if (!MainActivity.instance.paused) + { + MainActivity.instance.HideTabs(); + MainActivity.instance.HideSearch(); + MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Player.NewInstance()).AddToBackStack(null).Commit(); + } + } + parsing = false; + } + } + public async void RandomPlay(List filePath, bool clearQueue) { currentID = -1; @@ -840,7 +870,6 @@ namespace MusicApp.Resources.Portable_Class queue[fromPosition].queueSlot = fromPosition; for(int i = 0; i < queue.Count; i++) { - Console.WriteLine("&CurrentID = " + CurrentID() + " item id = " + queue[i].queueSlot + " i = " + i + "Item name = " + queue[i].GetName()); if (CurrentID() == queue[i].queueSlot) currentID = i; diff --git a/MusicApp/Resources/Portable Class/Player.cs b/MusicApp/Resources/Portable Class/Player.cs index f0eaeab..ec61855 100644 --- a/MusicApp/Resources/Portable Class/Player.cs +++ b/MusicApp/Resources/Portable Class/Player.cs @@ -35,7 +35,7 @@ namespace MusicApp.Resources.Portable_Class public override void OnDestroy() { - if(MainActivity.instance.youtubeInstanceSave == null) + if(MainActivity.youtubeInstanceSave == null) { MainActivity.instance.FindViewById(Resource.Id.contentRefresh).SetEnabled(true); } @@ -389,10 +389,10 @@ namespace MusicApp.Resources.Portable_Class private async void Fab_Click(object sender, EventArgs e) { MainActivity.instance.SupportFragmentManager.PopBackStack(); - if (MainActivity.instance.youtubeInstanceSave != null) + if (MainActivity.youtubeInstanceSave != null) { int selectedTab = 0; - switch (MainActivity.instance.youtubeInstanceSave) + switch (MainActivity.youtubeInstanceSave) { case "YoutubeEngine-All": selectedTab = 0; @@ -468,5 +468,11 @@ namespace MusicApp.Resources.Portable_Class intent.PutExtra("time", time); Activity.StartService(intent); } + + public override void OnResume() + { + base.OnResume(); + instance = this; + } } } \ No newline at end of file diff --git a/MusicApp/Resources/Portable Class/Playlist.cs b/MusicApp/Resources/Portable Class/Playlist.cs index 3f9e200..4a33684 100644 --- a/MusicApp/Resources/Portable Class/Playlist.cs +++ b/MusicApp/Resources/Portable Class/Playlist.cs @@ -610,14 +610,13 @@ namespace MusicApp.Resources.Portable_Class public override void OnResume() { base.OnResume(); + instance = this; if (MainActivity.parcelable != null) { ListView.GetLayoutManager().OnRestoreInstanceState(MainActivity.parcelable); MainActivity.parcelable = null; MainActivity.parcelableSender = null; } - if (instance == null) - instance = this; } } } \ No newline at end of file diff --git a/MusicApp/Resources/Portable Class/PlaylistTracks.cs b/MusicApp/Resources/Portable Class/PlaylistTracks.cs index b5a5fc8..f75344f 100644 --- a/MusicApp/Resources/Portable Class/PlaylistTracks.cs +++ b/MusicApp/Resources/Portable Class/PlaylistTracks.cs @@ -448,6 +448,7 @@ namespace MusicApp.Resources.Portable_Class public override void OnResume() { base.OnResume(); + instance = this; if (MainActivity.parcelable != null && MainActivity.parcelableSender == "PlaylistTrack") { ListView.OnRestoreInstanceState(MainActivity.parcelable); diff --git a/MusicApp/Resources/Portable Class/Queue.cs b/MusicApp/Resources/Portable Class/Queue.cs index 9b8983d..b15ec37 100644 --- a/MusicApp/Resources/Portable Class/Queue.cs +++ b/MusicApp/Resources/Portable Class/Queue.cs @@ -71,6 +71,7 @@ namespace MusicApp.Resources.Portable_Class protected override void OnDestroy() { + Player.instance?.UpdateNext(); base.OnDestroy(); instance = null; } @@ -208,6 +209,7 @@ namespace MusicApp.Resources.Portable_Class protected override void OnResume() { base.OnResume(); + instance = this; if (MainActivity.parcelableSender == "Queue" && !MainActivity.instance.ResumeKiller) { ListView.GetLayoutManager().OnRestoreInstanceState(MainActivity.parcelable); diff --git a/MusicApp/Resources/Portable Class/TopicSelector.cs b/MusicApp/Resources/Portable Class/TopicSelector.cs index c83d2e5..d4a6485 100644 --- a/MusicApp/Resources/Portable Class/TopicSelector.cs +++ b/MusicApp/Resources/Portable Class/TopicSelector.cs @@ -8,7 +8,6 @@ using Google.Apis.YouTube.v3.Data; using MusicApp.Resources.values; using System.Collections.Generic; using System.Linq; -using System.Threading.Tasks; namespace MusicApp.Resources.Portable_Class { diff --git a/MusicApp/Resources/Portable Class/YoutubeEngine.cs b/MusicApp/Resources/Portable Class/YoutubeEngine.cs index a70c35c..c8b99e0 100644 --- a/MusicApp/Resources/Portable Class/YoutubeEngine.cs +++ b/MusicApp/Resources/Portable Class/YoutubeEngine.cs @@ -19,8 +19,6 @@ using System.IO; using System.Linq; using System.Threading.Tasks; using TagLib; -using YoutubeExplode; -using YoutubeExplode.Models.MediaStreams; namespace MusicApp.Resources.Portable_Class { @@ -82,9 +80,9 @@ namespace MusicApp.Resources.Portable_Class while (ListView == null || ListView.GetLayoutManager() == null) await Task.Delay(10); - ListView.GetLayoutManager().OnRestoreInstanceState(MainActivity.instance.youtubeParcel); - MainActivity.instance.youtubeInstanceSave = null; - MainActivity.instance.youtubeParcel = null; + ListView.GetLayoutManager().OnRestoreInstanceState(MainActivity.youtubeParcel); + MainActivity.youtubeInstanceSave = null; + MainActivity.youtubeParcel = null; } public static Fragment[] NewInstances(string searchQuery) @@ -258,8 +256,8 @@ namespace MusicApp.Resources.Portable_Class MainActivity.instance.SupportActionBar.Title = item.GetName(); MainActivity.instance.HideTabs(); instances = null; - MainActivity.instance.youtubeParcel = ListView.GetLayoutManager().OnSaveInstanceState(); - MainActivity.instance.youtubeInstanceSave = "YoutubeEngine" + "-" + querryType; + MainActivity.youtubeParcel = ListView.GetLayoutManager().OnSaveInstanceState(); + MainActivity.youtubeInstanceSave = "YoutubeEngine" + "-" + querryType; MainActivity.instance.Transition(Resource.Id.contentView, PlaylistTracks.NewInstance(item.youtubeID, item.GetName(), false), true); break; case YtKind.Channel: @@ -309,29 +307,21 @@ namespace MusicApp.Resources.Portable_Class builder.Show(); } - public static async void Play(string videoID, string title, string artist, string thumbnailURL, YoutubeEngine instance = null) + public static void Play(string videoID, string title, string artist, string thumbnailURL, YoutubeEngine instance = null) { - ProgressBar parseProgress = MainActivity.instance.FindViewById(Resource.Id.ytProgress); - parseProgress.Visibility = ViewStates.Visible; - parseProgress.ScaleY = 6; - - YoutubeClient client = new YoutubeClient(); - var mediaStreamInfo = await client.GetVideoMediaStreamInfosAsync(videoID); - AudioStreamInfo streamInfo = mediaStreamInfo.Audio.OrderBy(s => s.Bitrate).Last(); - Intent intent = new Intent(Android.App.Application.Context, typeof(MusicPlayer)); - intent.PutExtra("file", streamInfo.Url); + intent.SetAction("YoutubePlay"); + intent.PutExtra("action", "Play"); + intent.PutExtra("file", videoID); intent.PutExtra("title", title); intent.PutExtra("artist", artist); - intent.PutExtra("youtubeID", videoID); intent.PutExtra("thumbnailURI", thumbnailURL); Android.App.Application.Context.StartService(intent); - parseProgress.Visibility = ViewStates.Gone; if (instance != null) { - MainActivity.instance.youtubeParcel = instance.ListView.GetLayoutManager().OnSaveInstanceState(); - MainActivity.instance.youtubeInstanceSave = "YoutubeEngine" + "-" + instance.querryType; + MainActivity.youtubeParcel = instance.ListView.GetLayoutManager().OnSaveInstanceState(); + MainActivity.youtubeInstanceSave = "YoutubeEngine" + "-" + instance.querryType; ViewGroup rootView = instance.Activity.FindViewById(Android.Resource.Id.Content); foreach (YoutubeEngine inst in instances) @@ -344,10 +334,6 @@ namespace MusicApp.Resources.Portable_Class } else MainActivity.instance.SaveInstance(); - - MainActivity.instance.HideTabs(); - MainActivity.instance.HideSearch(); - MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Player.NewInstance()).AddToBackStack(null).Commit(); } public static async void PlayFiles(Song[] files) @@ -373,48 +359,28 @@ namespace MusicApp.Resources.Portable_Class } - public static async void PlayNext(string videoID, string title, string artist, string thumbnailURL) + public static void PlayNext(string videoID, string title, string artist, string thumbnailURL) { - ProgressBar parseProgress = MainActivity.instance.FindViewById(Resource.Id.ytProgress); - parseProgress.Visibility = ViewStates.Visible; - parseProgress.ScaleY = 6; - - YoutubeClient client = new YoutubeClient(); - var mediaStreamInfo = await client.GetVideoMediaStreamInfosAsync(videoID); - AudioStreamInfo streamInfo = mediaStreamInfo.Audio.OrderBy(s => s.Bitrate).Last(); - Intent intent = new Intent(Android.App.Application.Context, typeof(MusicPlayer)); - intent.SetAction("PlayNext"); - intent.PutExtra("file", streamInfo.Url); + intent.SetAction("YoutubePlay"); + intent.PutExtra("action", "PlayNext"); + intent.PutExtra("file", videoID); intent.PutExtra("title", title); intent.PutExtra("artist", artist); - intent.PutExtra("youtubeID", videoID); intent.PutExtra("thumbnailURI", thumbnailURL); Android.App.Application.Context.StartService(intent); - - parseProgress.Visibility = ViewStates.Gone; } - public static async void PlayLast(string videoID, string title, string artist, string thumbnailURL) + public static void PlayLast(string videoID, string title, string artist, string thumbnailURL) { - ProgressBar parseProgress = MainActivity.instance.FindViewById(Resource.Id.ytProgress); - parseProgress.Visibility = ViewStates.Visible; - parseProgress.ScaleY = 6; - - YoutubeClient client = new YoutubeClient(); - var mediaStreamInfo = await client.GetVideoMediaStreamInfosAsync(videoID); - AudioStreamInfo streamInfo = mediaStreamInfo.Audio.OrderBy(s => s.Bitrate).Last(); - Intent intent = new Intent(Android.App.Application.Context, typeof(MusicPlayer)); - intent.SetAction("PlayLast"); - intent.PutExtra("file", streamInfo.Url); + intent.SetAction("YoutubePlay"); + intent.PutExtra("action", "PlayLast"); + intent.PutExtra("file", videoID); intent.PutExtra("title", title); intent.PutExtra("artist", artist); - intent.PutExtra("youtubeID", videoID); intent.PutExtra("thumbnailURI", thumbnailURL); Android.App.Application.Context.StartService(intent); - - parseProgress.Visibility = ViewStates.Gone; } public async static void Download(string name, string videoID) @@ -448,52 +414,6 @@ namespace MusicApp.Resources.Portable_Class ISharedPreferences prefManager = PreferenceManager.GetDefaultSharedPreferences(Android.App.Application.Context); if (prefManager.GetString("downloadPath", null) != null) { - //if (!skipExistVerification) - //{ - // List downloadedName = new List(); - // List downloadedID = new List(); - // for (int i = 0; i < names.Length; i++) - // { - // if (FileIsAlreadyDownloaded(videoIDs[i])) - // { - // downloadedName.Add(names[i]); - // downloadedID.Add(videoIDs[i]); - // } - // } - - // if (downloadedName.Count > 0) - // { - // List namesList = names.ToList(); - // List idList = videoIDs.ToList(); - - // for(int i = 0; i < downloadedName.Count; i++) - // { - // namesList.Remove(downloadedName[i]); - // idList.Remove(downloadedID[i]); - // } - - // names = namesList.ToArray(); - // videoIDs = idList.ToArray(); - - // if (downloadedName.Count == 1) - // { - // Snackbar.Make(MainActivity.instance.FindViewById(Resource.Id.snackBar), downloadedName[0] + " is already on your device.", Snackbar.LengthShort).SetAction("Download this file anyway", (v) => - // { - // Downloader.instance.Download(new DownloadFile(downloadedName[0], downloadedID[0], playlist)); - // }).Show(); - // } - // else - // { - // Snackbar.Make(MainActivity.instance.FindViewById(Resource.Id.snackBar), downloadedName.Count + " files are already on your device", Snackbar.LengthShort).SetAction("Download all this files anyway", (v) => - // { - // for(int i = 0; i < downloadedName.Count; i++) - // Downloader.instance.Download(new DownloadFile(downloadedName[i], downloadedID[i], playlist)); - - // }).Show(); - // } - // } - //} - Toast.MakeText(Android.App.Application.Context, "Downloading...", ToastLength.Short).Show(); Context context = Android.App.Application.Context; Intent intent = new Intent(context, typeof(Downloader)); @@ -534,7 +454,7 @@ namespace MusicApp.Resources.Portable_Class try { Stream stream = new FileStream(path, FileMode.Open, FileAccess.Read); - var meta = TagLib.File.Create(new StreamFileAbstraction(path, stream, stream)); //Make app crash if user has midi files ? + var meta = TagLib.File.Create(new StreamFileAbstraction(path, stream, stream)); string ytID = meta.Tag.Comment; stream.Dispose(); @@ -621,7 +541,7 @@ namespace MusicApp.Resources.Portable_Class playListId.Add(playlist.Id); } - Android.Support.V7.App.AlertDialog.Builder builder = new Android.Support.V7.App.AlertDialog.Builder(context, MainActivity.dialogTheme); + AlertDialog.Builder builder = new AlertDialog.Builder(context, MainActivity.dialogTheme); builder.SetTitle("Add to a playlist"); builder.SetItems(playList.ToArray(), (senderAlert, args) => {