youtube add to playlist created

This commit is contained in:
Gboy9155
2017-12-04 18:03:28 +01:00
parent 489564bc9f
commit 71b9268785
11 changed files with 293 additions and 137 deletions

View File

@@ -166,50 +166,6 @@ namespace MusicApp
HttpClientInitializer = credential,
ApplicationName = "MusicApp"
});
//OAuth2Request request = new OAuth2Request("POST"; new Uri())
//var refreshRequest = new OAuth2Request("POST", new Uri(OAuthSettings.TokenURL), postDictionary, googleAccount);
//refreshRequest.GetResponseAsync().ContinueWith(task => {
// if (task.IsFaulted)
// Console.WriteLine("Error: " + task.Exception.InnerException.Message);
// else
// {
// string json = task.Result.GetResponseText();
// Console.WriteLine(json);
// try
// {
// << just deserialize the json response, eg. with Newtonsoft>>
// }
// catch (Exception exception)
// {
// Console.WriteLine("!!!!!Exception: {0}", exception.ToString());
// Logout();
// }
// }
//});
//await auth.RequestAccessTokenAsync(queryValues).ContinueWith(result =>
//{
// Console.WriteLine("Requesting new token from auth api");
// string accessToken = result.Result["access_token"];
// string expiresIN = result.Result["expires_in"];
// Console.WriteLine("new acces token: " + accessToken);
// Console.WriteLine("new expire date: " + expiresIN);
// DateTime expireDate = DateTime.UtcNow.AddSeconds(double.Parse(expiresIN));
// ISharedPreferences pref = PreferenceManager.GetDefaultSharedPreferences(this);
// ISharedPreferencesEditor editor = pref.Edit();
// editor.PutString("expireDate", expireDate.ToString());
// editor.Apply();
// GoogleCredential credential = GoogleCredential.FromAccessToken(accessToken);
// YoutubeEngine.youtubeService = new YouTubeService(new BaseClientService.Initializer()
// {
// HttpClientInitializer = credential,
// ApplicationName = "MusicApp"
// });
//});
}
@@ -249,16 +205,6 @@ namespace MusicApp
ToolBar = (Android.Support.V7.Widget.Toolbar) FindViewById(Resource.Id.toolbar);
SetSupportActionBar(ToolBar);
SupportActionBar.Title = "MusicApp";
Play();
}
async void Play()
{
YoutubeClient client = new YoutubeClient();
var videoInfo = await client.GetVideoAsync("ziaf3RrG80U");
AudioStreamInfo streamInfo = videoInfo.AudioStreamInfos.OrderBy(s => s.Bitrate).Last();
Console.WriteLine(streamInfo.Url);
}
public override bool OnCreateOptionsMenu(IMenu menu)

View File

@@ -397,6 +397,9 @@
<ItemGroup>
<AndroidResource Include="Resources\layout\YtList.xml" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable\ic_query_builder_black_24dp.png" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
<Import Project="..\packages\NETStandard.Library.2.0.1\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('..\packages\NETStandard.Library.2.0.1\build\netstandard2.0\NETStandard.Library.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

View File

@@ -24,6 +24,9 @@ namespace MusicApp.Resources.Portable_Class
public override View GetView(int position, View convertView, ViewGroup parent)
{
if (position > songList.Count || position < 0)
return convertView;
if (inflater == null)
{
inflater = (LayoutInflater)context.GetSystemService(Context.LayoutInflaterService);
@@ -49,6 +52,12 @@ namespace MusicApp.Resources.Portable_Class
Picasso.With(Application.Context).Load(songAlbumArtUri).Placeholder(Resource.Drawable.MusicIcon).Resize(400, 400).CenterCrop().Into(holder.AlbumArt);
}
if (!songList[position].isParsed)
{
}
return convertView;
}
}

View File

@@ -36,11 +36,12 @@ namespace MusicApp.Resources.Portable_Class
public NotificationManager notificationManager;
public static bool isRunning = false;
public static string title;
private static bool parsing = false;
public static int currendID = -1;
private Notification notification;
private const int notificationID = 1000;
public override IBinder OnBind(Intent intent)
{
return null;
@@ -310,7 +311,6 @@ namespace MusicApp.Resources.Portable_Class
}
else
{
Console.WriteLine("Yt song: " + song.GetAlbum());
Picasso.With(Application.Context).Load(song.GetAlbum()).Placeholder(Resource.Drawable.MusicIcon).Resize(400, 400).CenterCrop().Into(art);
}
}
@@ -333,11 +333,36 @@ namespace MusicApp.Resources.Portable_Class
bar.Progress = (int) player.CurrentPosition;
bar.ProgressChanged += (sender, e) =>
{
Console.WriteLine(player.Duration - e.Progress);
if (player != null && e.FromUser)
player.SeekTo(e.Progress);
if (player != null && player.Duration - e.Progress <= 1500 && player.Duration - e.Progress > 0)
ParseNextSong();
};
}
public static async void ParseNextSong()
{
if (CurrentID() + 1 > queue.Count)
return;
Song song = queue[CurrentID() + 1];
if (song.isParsed)
return;
if (!song.isParsed && !parsing)
{
parsing = true;
YoutubeClient client = new YoutubeClient();
var videoInfo = await client.GetVideoAsync(song.GetPath());
AudioStreamInfo streamInfo = videoInfo.AudioStreamInfos.OrderBy(s => s.Bitrate).Last();
song.SetPath(streamInfo.Url);
song.isParsed = true;
parsing = false;
}
}
public static int Duration
{
get

View File

@@ -232,6 +232,7 @@ namespace MusicApp.Resources.Portable_Class
private void Fab_Click(object sender, EventArgs e)
{
Activity.SupportFragmentManager.BeginTransaction()./*SetCustomAnimations(Resource.Animation.SlideInUp, Resource.Animation.SlideOutUp).*/Replace(Resource.Id.contentView, Queue.NewInstance()).Commit();
MainActivity.instance.FindViewById<BottomNavigationView>(Resource.Id.bottomView).SelectedItemId = Resource.Id.musicLayout;
}
private void Last_Click(object sender, EventArgs e)

View File

@@ -95,7 +95,8 @@ namespace MusicApp.Resources.Portable_Class
if (adapter == null || adapter.Count == 0)
{
isEmpty = true;
Activity.AddContentView(emptyView, View.LayoutParameters);
if(emptyView != null)
Activity.AddContentView(emptyView, View.LayoutParameters);
}
}

View File

@@ -9,6 +9,7 @@ using Android.Views;
using Android.Widget;
using MusicApp.Resources.values;
using System.Collections.Generic;
using System.Linq;
namespace MusicApp.Resources.Portable_Class
{
@@ -23,7 +24,9 @@ namespace MusicApp.Resources.Portable_Class
public bool isEmpty = false;
private List<Song> tracks = new List<Song>();
private string[] actions = new string[] { "Play", "Play Next", "Play Last", "Remove Track from playlist" };
private List<string> ytTracksIDs = new List<string>();
private List<string> ytTracksIdsResult;
private string[] actions = new string[] { "Play", "Play Next", "Play Last", "Remove Track from playlist", "Add To Playlist" };
public override void OnActivityCreated(Bundle savedInstanceState)
@@ -118,6 +121,7 @@ namespace MusicApp.Resources.Portable_Class
adapter = new Adapter(Android.App.Application.Context, Resource.Layout.SongList, tracks);
ListAdapter = adapter;
ListView.Adapter = adapter;
ListView.TextFilterEnabled = true;
ListView.ItemClick += ListView_ItemClick;
ListView.ItemLongClick += ListView_ItemLongClick;
@@ -133,7 +137,7 @@ namespace MusicApp.Resources.Portable_Class
string nextPageToken = "";
while(nextPageToken != null)
{
var ytPlaylistRequest = YoutubeEngine.youtubeService.PlaylistItems.List("snippet");
var ytPlaylistRequest = YoutubeEngine.youtubeService.PlaylistItems.List("snippet, contentDetails");
ytPlaylistRequest.PlaylistId = ytID;
ytPlaylistRequest.MaxResults = 50;
ytPlaylistRequest.PageToken = nextPageToken;
@@ -142,9 +146,9 @@ namespace MusicApp.Resources.Portable_Class
foreach (var item in ytPlaylist.Items)
{
Song song = new Song(item.Snippet.Title, item.Snippet.ChannelTitle, item.Snippet.Thumbnails.Default__.Url, -1, -1, item.Id, true);
System.Console.WriteLine(song.GetName());
Song song = new Song(item.Snippet.Title, item.Snippet.ChannelTitle, item.Snippet.Thumbnails.Default__.Url, -1, -1, item.ContentDetails.VideoId, true);
tracks.Add(song);
ytTracksIDs.Add(item.Id);
}
nextPageToken = ytPlaylist.NextPageToken;
@@ -152,6 +156,7 @@ namespace MusicApp.Resources.Portable_Class
adapter = new Adapter(Android.App.Application.Context, Resource.Layout.SongList, tracks);
ListAdapter = adapter;
ListView.Adapter = adapter;
ListView.TextFilterEnabled = true;
ListView.ItemClick += ListView_ItemClick;
ListView.ItemLongClick += ListView_ItemLongClick;
@@ -167,11 +172,15 @@ namespace MusicApp.Resources.Portable_Class
public void Search(string search)
{
result = new List<Song>();
foreach (Song item in tracks)
ytTracksIdsResult = new List<string>();
for(int i = 0; i < tracks.Count; i++)
{
Song item = tracks[i];
if (item.GetName().ToLower().Contains(search.ToLower()) || item.GetArtist().ToLower().Contains(search.ToLower()))
{
result.Add(item);
if (ytID != null)
ytTracksIdsResult.Add(ytTracksIDs[i]);
}
}
ListAdapter = new Adapter(Android.App.Application.Context, Resource.Layout.SongList, result);
@@ -194,6 +203,8 @@ namespace MusicApp.Resources.Portable_Class
private void ListView_ItemLongClick(object sender, AdapterView.ItemLongClickEventArgs e)
{
List<string> action = actions.ToList();
Song item = tracks[e.Position];
if (result != null)
item = result[e.Position];
@@ -203,10 +214,14 @@ namespace MusicApp.Resources.Portable_Class
Browse.act = Activity;
Browse.inflater = LayoutInflater;
}
else
{
action.Add("Download");
}
AlertDialog.Builder builder = new AlertDialog.Builder(Activity, Resource.Style.AppCompatAlertDialogStyle);
builder.SetTitle("Pick an action");
builder.SetItems(actions, (senderAlert, args) =>
builder.SetItems(action.ToArray(), (senderAlert, args) =>
{
switch (args.Which)
{
@@ -216,24 +231,43 @@ namespace MusicApp.Resources.Portable_Class
else
YoutubeEngine.Play(item.GetPath());
break;
case 1:
if (!item.IsYt)
Browse.PlayNext(item);
else
YoutubeEngine.PlayNext(item.GetPath());
break;
case 2:
if (!item.IsYt)
Browse.PlayLast(item);
else
YoutubeEngine.PlayLast(item.GetPath());
break;
case 3:
if (!item.IsYt)
RemoveFromPlaylist(item);
else
YoutubeEngine.RemoveFromPlaylist(item.GetPath(), ytID);
{
string ytTrackID = ytTracksIDs[e.Position];
if (ytTracksIdsResult != null)
ytTrackID = ytTracksIdsResult[e.Position];
YoutubeEngine.RemoveFromPlaylist(ytTrackID);
RemoveFromYtPlaylist(item, ytTrackID);
}
break;
case 4:
YoutubeEngine.GetPlaylists(item.GetPath(), Activity);
break;
case 5:
YoutubeEngine.Download(item.GetName(), item.GetPath());
break;
default:
break;
}
@@ -241,6 +275,16 @@ namespace MusicApp.Resources.Portable_Class
builder.Show();
}
private void RemoveFromYtPlaylist(Song item, string ytTrackID)
{
tracks.Remove(item);
adapter = new Adapter(Android.App.Application.Context, Resource.Layout.SongList, tracks);
ListAdapter = adapter;
ListView.Adapter = adapter;
ytTracksIDs.Remove(ytTrackID);
ytTracksIdsResult?.Remove(ytTrackID);
}
void RemoveFromPlaylist(Song item)
{
ContentResolver resolver = Activity.ContentResolver;

View File

@@ -7,14 +7,14 @@ using Android.Support.V7.App;
using Android.Views;
using Android.Widget;
using Google.Apis.YouTube.v3;
using Google.Apis.YouTube.v3.Data;
using Java.Util;
using MusicApp.Resources.values;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using YoutubeExplode;
using YoutubeExplode.Models.MediaStreams;
using System;
using System.Threading.Tasks;
namespace MusicApp.Resources.Portable_Class
{
@@ -133,7 +133,7 @@ namespace MusicApp.Resources.Portable_Class
PlayLast(item.GetPath());
break;
case 3:
GetPlaylists(item.GetPath());
GetPlaylists(item.GetPath(), Activity);
break;
case 4:
Download(item.GetName(), item.GetPath());
@@ -174,11 +174,11 @@ namespace MusicApp.Resources.Portable_Class
if (files.Length < 2)
return;
await Task.Delay(10000);
await Task.Delay(5000);
for(int i = 1; i < files.Length; i++)
{
MusicPlayer.queue.Add(files[i]);
MusicPlayer.queue.Insert(MusicPlayer.CurrentID() + i, files[i]);
}
}
@@ -236,23 +236,12 @@ namespace MusicApp.Resources.Portable_Class
}
}
public static void RemoveFromPlaylist(string videoID, string playlistID)
public static void RemoveFromPlaylist(string videoID)
{
HashMap parameters = new HashMap();
parameters.Put("id", videoID);
parameters.Put("onBehalfOfContentOwner", "");
PlaylistItemsResource.DeleteRequest deleteRequest = youtubeService.PlaylistItems.Delete(playlistID);
if (parameters.ContainsKey("onBehalfOfContentOwner") && parameters.Get("onBehalfOfContentOwner").ToString() != "")
{
deleteRequest.OnBehalfOfContentOwner = parameters.Get("onBehalfOfContentOwner").ToString();
}
deleteRequest.Execute();
youtubeService.PlaylistItems.Delete(videoID).Execute();
}
public static async void GetPlaylists(string videoID)
public static async void GetPlaylists(string videoID, Context context)
{
if (MainActivity.instance.TokenHasExpire())
{
@@ -264,19 +253,144 @@ namespace MusicApp.Resources.Portable_Class
}
List<string> playList = new List<string>();
List<long> playListId = new List<long>();
List<string> playListId = new List<string>();
playList.Add("Create a playlist");
playListId.Add(0);
playListId.Add("newPlaylist");
//AlertDialog.Builder builder = new AlertDialog.Builder(act, Resource.Style.AppCompatAlertDialogStyle);
//builder.SetTitle("Add to a playlist");
//builder.SetItems(playList.ToArray(), (senderAlert, args) =>
//{
// AddToPlaylist(item, playList[args.Which], playListId[args.Which]);
//});
//builder.Show();
HashMap parameters = new HashMap();
parameters.Put("part", "snippet,contentDetails");
parameters.Put("mine", "true");
parameters.Put("maxResults", "25");
parameters.Put("onBehalfOfContentOwner", "");
parameters.Put("onBehalfOfContentOwnerChannel", "");
PlaylistsResource.ListRequest ytPlaylists = youtubeService.Playlists.List(parameters.Get("part").ToString());
if (parameters.ContainsKey("mine") && parameters.Get("mine").ToString() != "")
{
bool mine = (parameters.Get("mine").ToString() == "true") ? true : false;
ytPlaylists.Mine = mine;
}
if (parameters.ContainsKey("maxResults"))
{
ytPlaylists.MaxResults = long.Parse(parameters.Get("maxResults").ToString());
}
if (parameters.ContainsKey("onBehalfOfContentOwner") && parameters.Get("onBehalfOfContentOwner").ToString() != "")
{
ytPlaylists.OnBehalfOfContentOwner = parameters.Get("onBehalfOfContentOwner").ToString();
}
if (parameters.ContainsKey("onBehalfOfContentOwnerChannel") && parameters.Get("onBehalfOfContentOwnerChannel").ToString() != "")
{
ytPlaylists.OnBehalfOfContentOwnerChannel = parameters.Get("onBehalfOfContentOwnerChannel").ToString();
}
PlaylistListResponse response = await ytPlaylists.ExecuteAsync();
for (int i = 0; i < response.Items.Count; i++)
{
Google.Apis.YouTube.v3.Data.Playlist playlist = response.Items[i];
playList.Add(playlist.Snippet.Title);
playListId.Add(playlist.Id);
}
AlertDialog.Builder builder = new AlertDialog.Builder(context, Resource.Style.AppCompatAlertDialogStyle);
builder.SetTitle("Add to a playlist");
builder.SetItems(playList.ToArray(), (senderAlert, args) =>
{
AddToPlaylist(videoID, playListId[args.Which], context);
});
builder.Show();
}
public static void AddToPlaylist(string videoID, string playlistID, Context context)
{
if(playlistID == "newPlaylist")
{
AlertDialog.Builder builder = new AlertDialog.Builder(context, Resource.Style.AppCompatAlertDialogStyle);
builder.SetTitle("Playlist name");
View view = MainActivity.instance.LayoutInflater.Inflate(Resource.Layout.CreatePlaylistDialog, null);
builder.SetView(view);
builder.SetNegativeButton("Cancel", (senderAlert, args) => { });
builder.SetPositiveButton("Create", (senderAlert, args) =>
{
NewPlaylist(view.FindViewById<EditText>(Resource.Id.playlistName).Text, videoID);
});
builder.Show();
}
else
{
HashMap parameters = new HashMap();
parameters.Put("part", "snippet");
parameters.Put("onBehalfOfContentOwner", "");
PlaylistItem playlistItem = new PlaylistItem();
PlaylistItemSnippet snippet = new PlaylistItemSnippet();
snippet.PlaylistId = playlistID;
ResourceId resourceId = new ResourceId();
resourceId.Kind = "youtube#video";
resourceId.VideoId = videoID;
snippet.ResourceId = resourceId;
playlistItem.Snippet = snippet;
var insertRequest = youtubeService.PlaylistItems.Insert(playlistItem, parameters.Get("part").ToString());
if (parameters.ContainsKey("onBehalfOfContentOwner") && parameters.Get("onBehalfOfContentOwner").ToString() != "")
{
insertRequest.OnBehalfOfContentOwner = parameters.Get("onBehalfOfContentOwner").ToString();
}
insertRequest.Execute();
}
}
public static void NewPlaylist(string playlistName, string videoID)
{
HashMap parameters = new HashMap();
parameters.Put("part", "snippet,status");
parameters.Put("onBehalfOfContentOwner", "");
Google.Apis.YouTube.v3.Data.Playlist playlist = new Google.Apis.YouTube.v3.Data.Playlist();
PlaylistSnippet snippet = new PlaylistSnippet();
PlaylistStatus status = new PlaylistStatus();
snippet.Title = playlistName;
playlist.Snippet = snippet;
playlist.Status = status;
var createRequest = youtubeService.Playlists.Insert(playlist, parameters.Get("part").ToString());
if (parameters.ContainsKey("onBehalfOfContentOwner") && parameters.Get("onBehalfOfContentOwner").ToString() != "")
{
createRequest.OnBehalfOfContentOwner = parameters.Get("onBehalfOfContentOwner").ToString();
}
Google.Apis.YouTube.v3.Data.Playlist response = createRequest.Execute();
parameters = new HashMap();
parameters.Put("part", "snippet");
parameters.Put("onBehalfOfContentOwner", "");
PlaylistItem playlistItem = new PlaylistItem();
PlaylistItemSnippet snippetItem = new PlaylistItemSnippet();
snippetItem.PlaylistId = response.Id;
ResourceId resourceId = new ResourceId();
resourceId.Kind = "youtube#video";
resourceId.VideoId = videoID;
snippetItem.ResourceId = resourceId;
playlistItem.Snippet = snippetItem;
var insertRequest = youtubeService.PlaylistItems.Insert(playlistItem, parameters.Get("part").ToString());
if (parameters.ContainsKey("onBehalfOfContentOwner") && parameters.Get("onBehalfOfContentOwner").ToString() != "")
{
insertRequest.OnBehalfOfContentOwner = parameters.Get("onBehalfOfContentOwner").ToString();
}
insertRequest.Execute();
}
}
}

View File

@@ -120,8 +120,9 @@ namespace MusicApp.Resources.Portable_Class
playlists.Add(song);
}
Adapter ytAdapter = new Adapter(Android.App.Application.Context, Resource.Layout.SongList, playlists);
ListAdapter = ytAdapter;
adapter = new Adapter(Android.App.Application.Context, Resource.Layout.SongList, playlists);
ListAdapter = adapter;
ListView.Adapter = adapter;
ListView.ItemClick += ListView_ItemClick;
ListView.ItemLongClick += ListView_ItemLongClick;
}
@@ -170,7 +171,7 @@ namespace MusicApp.Resources.Portable_Class
string nextPageToken = "";
while (nextPageToken != null)
{
var ytPlaylistRequest = YoutubeEngine.youtubeService.PlaylistItems.List("snippet");
var ytPlaylistRequest = YoutubeEngine.youtubeService.PlaylistItems.List("snippet, contentDetails");
ytPlaylistRequest.PlaylistId = playlistID;
ytPlaylistRequest.MaxResults = 50;
ytPlaylistRequest.PageToken = nextPageToken;
@@ -179,13 +180,14 @@ namespace MusicApp.Resources.Portable_Class
foreach (var item in ytPlaylist.Items)
{
Song song = new Song(item.Snippet.Title, item.Snippet.ChannelTitle, item.Snippet.Thumbnails.Default__.Url, -1, -1, item.Id, true, false);
System.Console.WriteLine(item.Snippet.Title);
Song song = new Song(item.Snippet.Title, "", item.Snippet.Thumbnails.Default__.Url, -1, -1, item.ContentDetails.VideoId, true, false);
tracks.Add(song);
}
nextPageToken = ytPlaylist.NextPageToken;
}
System.Console.WriteLine("All tracks are retrived");
YoutubeEngine.PlayFiles(tracks.ToArray());
}
@@ -205,11 +207,16 @@ namespace MusicApp.Resources.Portable_Class
void RenamePlaylist(int position, string name, string playlistID)
{
Google.Apis.YouTube.v3.Data.Playlist playlist = new Google.Apis.YouTube.v3.Data.Playlist();
playlist.Snippet = YtPlaylists[position].Snippet;
playlist.Snippet.Title = name;
playlist.Id = playlistID;
YtPlaylists[position].Snippet.Title = name;
YoutubeEngine.youtubeService.Playlists.Update(YtPlaylists[position], "snippet/title").Execute();
YoutubeEngine.youtubeService.Playlists.Update(playlist, "snippet").Execute();
playlists[position].SetName(name);
ListAdapter = new ArrayAdapter(Android.App.Application.Context, Resource.Layout.PlaylistList, playlists);
adapter.NotifyDataSetChanged();
if (ListAdapter.Count == 0)
{
isEmpty = true;
@@ -232,7 +239,10 @@ namespace MusicApp.Resources.Portable_Class
deleteRequest.Execute();
playlists.RemoveAt(position);
ListAdapter = new ArrayAdapter(Android.App.Application.Context, Resource.Layout.PlaylistList, playlists);
YtPlaylists.RemoveAt(position);
adapter = new Adapter(Android.App.Application.Context, Resource.Layout.SongList, playlists);
ListAdapter = adapter;
ListView.Adapter = adapter;
if (ListAdapter.Count == 0)
{
isEmpty = true;

View File

@@ -2360,26 +2360,26 @@ namespace MusicApp
// aapt resource value: 0x7f020053
public const int avd_hide_password = 2130837587;
// aapt resource value: 0x7f020083
public const int avd_hide_password_1 = 2130837635;
// aapt resource value: 0x7f020084
public const int avd_hide_password_2 = 2130837636;
public const int avd_hide_password_1 = 2130837636;
// aapt resource value: 0x7f020085
public const int avd_hide_password_3 = 2130837637;
public const int avd_hide_password_2 = 2130837637;
// aapt resource value: 0x7f020086
public const int avd_hide_password_3 = 2130837638;
// aapt resource value: 0x7f020054
public const int avd_show_password = 2130837588;
// aapt resource value: 0x7f020086
public const int avd_show_password_1 = 2130837638;
// aapt resource value: 0x7f020087
public const int avd_show_password_2 = 2130837639;
public const int avd_show_password_1 = 2130837639;
// aapt resource value: 0x7f020088
public const int avd_show_password_3 = 2130837640;
public const int avd_show_password_2 = 2130837640;
// aapt resource value: 0x7f020089
public const int avd_show_password_3 = 2130837641;
// aapt resource value: 0x7f020055
public const int design_bottom_navigation_item_background = 2130837589;
@@ -2454,70 +2454,73 @@ namespace MusicApp
public const int ic_playlist_add_white_24dp = 2130837612;
// aapt resource value: 0x7f02006d
public const int ic_skip_next_black_24dp = 2130837613;
public const int ic_query_builder_black_24dp = 2130837613;
// aapt resource value: 0x7f02006e
public const int ic_skip_previous_black_24dp = 2130837614;
public const int ic_skip_next_black_24dp = 2130837614;
// aapt resource value: 0x7f02006f
public const int ic_timer_white_24dp = 2130837615;
public const int ic_skip_previous_black_24dp = 2130837615;
// aapt resource value: 0x7f020070
public const int MusicIcon = 2130837616;
public const int ic_timer_white_24dp = 2130837616;
// aapt resource value: 0x7f020071
public const int navigation_empty_icon = 2130837617;
public const int MusicIcon = 2130837617;
// aapt resource value: 0x7f020072
public const int noAlbum = 2130837618;
public const int navigation_empty_icon = 2130837618;
// aapt resource value: 0x7f020073
public const int notification_action_background = 2130837619;
public const int noAlbum = 2130837619;
// aapt resource value: 0x7f020074
public const int notification_bg = 2130837620;
public const int notification_action_background = 2130837620;
// aapt resource value: 0x7f020075
public const int notification_bg_low = 2130837621;
public const int notification_bg = 2130837621;
// aapt resource value: 0x7f020076
public const int notification_bg_low_normal = 2130837622;
public const int notification_bg_low = 2130837622;
// aapt resource value: 0x7f020077
public const int notification_bg_low_pressed = 2130837623;
public const int notification_bg_low_normal = 2130837623;
// aapt resource value: 0x7f020078
public const int notification_bg_normal = 2130837624;
public const int notification_bg_low_pressed = 2130837624;
// aapt resource value: 0x7f020079
public const int notification_bg_normal_pressed = 2130837625;
public const int notification_bg_normal = 2130837625;
// aapt resource value: 0x7f02007a
public const int notification_icon_background = 2130837626;
// aapt resource value: 0x7f020081
public const int notification_template_icon_bg = 2130837633;
// aapt resource value: 0x7f020082
public const int notification_template_icon_low_bg = 2130837634;
public const int notification_bg_normal_pressed = 2130837626;
// aapt resource value: 0x7f02007b
public const int notification_tile_bg = 2130837627;
public const int notification_icon_background = 2130837627;
// aapt resource value: 0x7f020082
public const int notification_template_icon_bg = 2130837634;
// aapt resource value: 0x7f020083
public const int notification_template_icon_low_bg = 2130837635;
// aapt resource value: 0x7f02007c
public const int notify_panel_notification_icon_bg = 2130837628;
public const int notification_tile_bg = 2130837628;
// aapt resource value: 0x7f02007d
public const int PlaylistPlay = 2130837629;
public const int notify_panel_notification_icon_bg = 2130837629;
// aapt resource value: 0x7f02007e
public const int PlaylistPlayIcon = 2130837630;
public const int PlaylistPlay = 2130837630;
// aapt resource value: 0x7f02007f
public const int search = 2130837631;
public const int PlaylistPlayIcon = 2130837631;
// aapt resource value: 0x7f020080
public const int settings = 2130837632;
public const int search = 2130837632;
// aapt resource value: 0x7f020081
public const int settings = 2130837633;
static Drawable()
{

Binary file not shown.

After

Width:  |  Height:  |  Size: 546 B