diff --git a/MPfm/MPfm.Android/Classes/Activities/MainActivity.cs b/MPfm/MPfm.Android/Classes/Activities/MainActivity.cs index ff44f933..3e3a9f80 100644 --- a/MPfm/MPfm.Android/Classes/Activities/MainActivity.cs +++ b/MPfm/MPfm.Android/Classes/Activities/MainActivity.cs @@ -113,7 +113,7 @@ protected override void OnCreate(Bundle bundle) _imageAlbum = FindViewById(Resource.Id.main_miniplayer_imageAlbum); _miniPlayer.Visibility = ViewStates.Gone; _miniPlayer.Click += (sender, args) => { - Console.WriteLine("MainActivity - Mini player click - Showing player view..."); + //Console.WriteLine("MainActivity - Mini player click - Showing player view..."); _messengerHub.PublishAsync(new MobileNavigationManagerCommandMessage(this, MobileNavigationManagerCommandMessageType.ShowPlayerView)); }; _btnPrevious.SetOnTouchListener(this); @@ -134,37 +134,34 @@ protected override void OnCreate(Bundle bundle) // Listen to player changes to show/hide the mini player _messengerHub = Bootstrapper.GetContainer().Resolve(); - _messengerHub.Subscribe((message) => { - Console.WriteLine("MainActivity - PlayerPlaylistIndexChangedMessage"); - RunOnUiThread(() => { - // Make sure the UI is available - if (_lblArtistName != null && message.Data.AudioFileStarted != null) - { - _lblArtistName.Text = message.Data.AudioFileStarted.ArtistName; - _lblAlbumTitle.Text = message.Data.AudioFileStarted.AlbumTitle; - _lblSongTitle.Text = message.Data.AudioFileStarted.Title; - - Task.Factory.StartNew(() => { - string key = message.Data.AudioFileStarted.ArtistName + "_" + message.Data.AudioFileStarted.AlbumTitle; - Console.WriteLine("MainActivity - Player Bar - key: {0}", key); - if (_imageAlbum.Tag == null || _imageAlbum.Tag.ToString().ToUpper() != key.ToUpper()) - { - Console.WriteLine("MainActivity - Player Bar - key: {0} is different than tag {1} - Fetching album art...", key, (_imageAlbum.Tag == null) ? "null" : _imageAlbum.Tag.ToString()); - _imageAlbum.Tag = key; - byte[] bytesImage = AudioFile.ExtractImageByteArrayForAudioFile(message.Data.AudioFileStarted.FilePath); - if (bytesImage.Length == 0) - _imageAlbum.SetImageBitmap(null); - else - BitmapCache.LoadBitmapFromByteArray(bytesImage, key, _imageAlbum); - } - }); - } - }); - }); + _messengerHub.Subscribe((message) => RunOnUiThread(() => { + // Make sure the UI is available + if (_lblArtistName != null && message.Data.AudioFileStarted != null) + { + _lblArtistName.Text = message.Data.AudioFileStarted.ArtistName; + _lblAlbumTitle.Text = message.Data.AudioFileStarted.AlbumTitle; + _lblSongTitle.Text = message.Data.AudioFileStarted.Title; + + Task.Factory.StartNew(() => { + string key = message.Data.AudioFileStarted.ArtistName + "_" + message.Data.AudioFileStarted.AlbumTitle; + //Console.WriteLine("MainActivity - Player Bar - key: {0}", key); + if (_imageAlbum.Tag == null || _imageAlbum.Tag.ToString().ToUpper() != key.ToUpper()) + { + //Console.WriteLine("MainActivity - Player Bar - key: {0} is different than tag {1} - Fetching album art...", key, (_imageAlbum.Tag == null) ? "null" : _imageAlbum.Tag.ToString()); + _imageAlbum.Tag = key; + byte[] bytesImage = AudioFile.ExtractImageByteArrayForAudioFile(message.Data.AudioFileStarted.FilePath); + if (bytesImage.Length == 0) + _imageAlbum.SetImageBitmap(null); + else + BitmapCache.LoadBitmapFromByteArray(bytesImage, key, _imageAlbum); + } + }); + } + })); _messengerHub.Subscribe((message) => { bool hasStartedPlaying = !_isPlaying && message.Status == PlayerStatusType.Playing; _isPlaying = message.Status == PlayerStatusType.Playing; - Console.WriteLine("MainActivity - PlayerStatusMessage - Status=" + message.Status.ToString()); + //Console.WriteLine("MainActivity - PlayerStatusMessage - Status=" + message.Status.ToString()); RunOnUiThread(() => { if (message.Status == PlayerStatusType.Stopped || message.Status == PlayerStatusType.Initialized) { @@ -201,8 +198,6 @@ protected override void OnCreate(Bundle bundle) // } //#endif - SetupNotificationBar(); - Console.WriteLine("MainActivity - OnCreate - Starting navigation manager..."); _navigationManager = (AndroidNavigationManager) Bootstrapper.GetContainer().Resolve(); _navigationManager.MainActivity = this; // TODO: Is this OK? Shouldn't the reference be cleared when MainActivity is destroyed? Can lead to memory leaks. @@ -227,29 +222,6 @@ protected override void OnCreate(Bundle bundle) // _wifiManager.DiscoverPeers(_wifiChannel, _actionListener); //} - private void SetupNotificationBar() - { - // Build permanent notification for displaying player status in notification drawer (not sure yet how to make the notification sticky or to use the big style with custom layout) - Console.WriteLine("MainActivity - Setting notification bar..."); - RemoteViews remoteViews = new RemoteViews(PackageName, Resource.Layout.SyncWebBrowser); - NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) - .SetSmallIcon(Resource.Drawable.Icon) - .SetContentTitle("Artist Name - Album Title") - .SetContentText("Song Title") - .SetContent(remoteViews); - Intent resultIntent = new Intent(this, typeof(MainActivity)); - //NotificationCompat.BigPictureStyle bigPictureStyle = new NotificationCompat.BigPictureStyle(); - TaskStackBuilder stackBuilder = TaskStackBuilder.Create(this); - stackBuilder.AddParentStack(this); - stackBuilder.AddNextIntent(resultIntent); - PendingIntent resultPendingIntent = stackBuilder.GetPendingIntent(0, (int)PendingIntentFlags.UpdateCurrent); - //remoteViews.SetOnClickPendingIntent(R); - //notificationBuilder.SetStyle(bigPictureStyle); - notificationBuilder.SetContentIntent(resultPendingIntent); - NotificationManager notificationManager = (NotificationManager)GetSystemService(Context.NotificationService); - notificationManager.Notify(777, notificationBuilder.Build()); - } - public bool OnNavigationItemSelected(int itemPosition, long itemId) { return true; @@ -336,12 +308,12 @@ public override void OnBackPressed() var tabType = _tabPagerAdapter.GetCurrentTab(); if (_navigationManager.CanGoBackInMobileLibraryBrowserBackstack(tabType)) { - Console.WriteLine("MainActivity - OnBackPressed - CanRemoveFragment"); + //Console.WriteLine("MainActivity - OnBackPressed - CanRemoveFragment"); _navigationManager.PopMobileLibraryBrowserBackstack(tabType); } else { - Console.WriteLine("MainActivity - OnBackPressed - CannotRemoveFragment"); + //Console.WriteLine("MainActivity - OnBackPressed - CannotRemoveFragment"); base.OnBackPressed(); } } diff --git a/MPfm/MPfm.Android/Classes/Activities/PlayerActivity.cs b/MPfm/MPfm.Android/Classes/Activities/PlayerActivity.cs index fae90eae..d8cba3bb 100644 --- a/MPfm/MPfm.Android/Classes/Activities/PlayerActivity.cs +++ b/MPfm/MPfm.Android/Classes/Activities/PlayerActivity.cs @@ -392,10 +392,10 @@ public void RefreshSongInformation(AudioFile audioFile, long lengthBytes, int pl Task.Factory.StartNew(() => { string key = audioFile.ArtistName + "_" + audioFile.AlbumTitle; - Console.WriteLine("PlayerActivity - Album art - key: {0}", key); + //Console.WriteLine("PlayerActivity - Album art - key: {0}", key); if (_imageViewAlbumArt.Tag == null || _imageViewAlbumArt.Tag.ToString().ToUpper() != key.ToUpper()) { - Console.WriteLine("PlayerActivity - Album art - key: {0} is different than tag {1} - Fetching album art...", key, (_imageViewAlbumArt.Tag == null) ? "null" : _imageViewAlbumArt.Tag.ToString()); + //Console.WriteLine("PlayerActivity - Album art - key: {0} is different than tag {1} - Fetching album art...", key, (_imageViewAlbumArt.Tag == null) ? "null" : _imageViewAlbumArt.Tag.ToString()); _imageViewAlbumArt.Tag = key; byte[] bytesImage = AudioFile.ExtractImageByteArrayForAudioFile(audioFile.FilePath); if (bytesImage.Length == 0) diff --git a/MPfm/MPfm.Android/Classes/Application.cs b/MPfm/MPfm.Android/Classes/Application.cs index 1b3a31df..3a46e002 100644 --- a/MPfm/MPfm.Android/Classes/Application.cs +++ b/MPfm/MPfm.Android/Classes/Application.cs @@ -100,13 +100,13 @@ public override void OnCreate() Console.WriteLine("Application - Error: Failed to setup connection change receiver! {0}", ex); } -#if __ANDROID_16__ - if (((int)global::Android.OS.Build.VERSION.SdkInt) >= 16) { - _discoveryService = new AndroidDiscoveryService(); - _discoveryService.StartDiscovery(); - _discoveryService.DiscoverPeers(); - } -#endif +//#if __ANDROID_16__ +// if (((int)global::Android.OS.Build.VERSION.SdkInt) >= 16) { +// _discoveryService = new AndroidDiscoveryService(); +// _discoveryService.StartDiscovery(); +// _discoveryService.DiscoverPeers(); +// } +//#endif } public override void OnTerminate() @@ -118,11 +118,11 @@ public override void OnTerminate() MPfm.Player.Player.CurrentPlayer.Stop(); MPfm.Player.Player.CurrentPlayer.Dispose(); -#if __ANDROID_16__ - if (((int)global::Android.OS.Build.VERSION.SdkInt) >= 16) { - _discoveryService.Dispose(); - } -#endif +//#if __ANDROID_16__ +// if (((int)global::Android.OS.Build.VERSION.SdkInt) >= 16) { +// _discoveryService.Dispose(); +// } +//#endif } public static Context GetApplicationContext() diff --git a/MPfm/MPfm.Android/Classes/Fragments/MarkersFragment.cs b/MPfm/MPfm.Android/Classes/Fragments/MarkersFragment.cs index 437934de..eaa08939 100644 --- a/MPfm/MPfm.Android/Classes/Fragments/MarkersFragment.cs +++ b/MPfm/MPfm.Android/Classes/Fragments/MarkersFragment.cs @@ -91,7 +91,7 @@ public void MarkerError(Exception ex) public void RefreshMarkers(List markers) { - Console.WriteLine("#####################>>> MarkersFragment - RefreshMarkers - markers count: {0}", markers.Count); + //Console.WriteLine("#####################>>> MarkersFragment - RefreshMarkers - markers count: {0}", markers.Count); Activity.RunOnUiThread(() => { _markers = markers; _listAdapter.SetData(markers); diff --git a/MPfm/MPfm.Android/Classes/Fragments/MobileLibraryBrowserFragment.cs b/MPfm/MPfm.Android/Classes/Fragments/MobileLibraryBrowserFragment.cs index 401f5eb1..7907be01 100644 --- a/MPfm/MPfm.Android/Classes/Fragments/MobileLibraryBrowserFragment.cs +++ b/MPfm/MPfm.Android/Classes/Fragments/MobileLibraryBrowserFragment.cs @@ -75,7 +75,7 @@ public MobileLibraryBrowserFragment(Action onViewReady) public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - Console.WriteLine("MLBFragment - OnCreateView"); + //Console.WriteLine("MLBFragment - OnCreateView"); _view = inflater.Inflate(Resource.Layout.MobileLibraryBrowser, container, false); // Get screen size @@ -149,12 +149,12 @@ private void GridViewOnItemLongClick(object sender, AdapterView.ItemLongClickEve } - public override void OnSaveInstanceState(Bundle outState) - { - //Console.WriteLine("MLBFRAGMENT - ON SAVE INSTANCE STATE"); - outState.PutString("Test", DateTime.Now.ToLongTimeString()); - base.OnSaveInstanceState(outState); - } + //public override void OnSaveInstanceState(Bundle outState) + //{ + // //Console.WriteLine("MLBFRAGMENT - ON SAVE INSTANCE STATE"); + // outState.PutString("Test", DateTime.Now.ToLongTimeString()); + // base.OnSaveInstanceState(outState); + //} public override void OnResume() { @@ -222,7 +222,7 @@ public void MobileLibraryBrowserError(Exception ex) public void RefreshLibraryBrowser(IEnumerable entities, MobileLibraryBrowserType browserType, string navigationBarTitle, string navigationBarSubtitle, string breadcrumb, bool isPopBackstack) { - Console.WriteLine("MLBF - RefreshLibraryBrowser - Count: {0} browserType: {1}", entities.Count(), browserType.ToString()); + //Console.WriteLine("MLBF - RefreshLibraryBrowser - Count: {0} browserType: {1}", entities.Count(), browserType.ToString()); Activity.RunOnUiThread(() => { _entities = entities.ToList(); _lblBreadcrumb.Text = breadcrumb; @@ -287,10 +287,10 @@ public void RefreshLibraryBrowser(IEnumerable entities, Mo Task.Factory.StartNew(() => { string key = audioFile.ArtistName + "_" + audioFile.AlbumTitle; - Console.WriteLine("MobileLibraryFragment - Album art - key: {0}", key); + //Console.WriteLine("MobileLibraryFragment - Album art - key: {0}", key); if (_imageAlbum.Tag == null || _imageAlbum.Tag.ToString().ToUpper() != key.ToUpper()) { - Console.WriteLine("MobileLibraryFragment - Album art - key: {0} is different than tag {1} - Fetching album art...", key, (_imageAlbum.Tag == null) ? "null" : _imageAlbum.Tag.ToString()); + //Console.WriteLine("MobileLibraryFragment - Album art - key: {0} is different than tag {1} - Fetching album art...", key, (_imageAlbum.Tag == null) ? "null" : _imageAlbum.Tag.ToString()); _imageAlbum.Tag = key; byte[] bytesImage = AudioFile.ExtractImageByteArrayForAudioFile(audioFile.FilePath); if (bytesImage.Length == 0) diff --git a/MPfm/MPfm.Android/Classes/Fragments/PitchShiftingFragment.cs b/MPfm/MPfm.Android/Classes/Fragments/PitchShiftingFragment.cs index a1c5f259..e7e1ca0d 100644 --- a/MPfm/MPfm.Android/Classes/Fragments/PitchShiftingFragment.cs +++ b/MPfm/MPfm.Android/Classes/Fragments/PitchShiftingFragment.cs @@ -70,7 +70,7 @@ private void SeekBarOnProgressChanged(object sender, SeekBar.ProgressChangedEven { // Pitch shifting range: -12 to +12. Seek bar range: 0-23 int interval = _seekBar.Progress - 12; - Console.WriteLine("SeekBarProgressChanged progress: {0} interval: {1}", _seekBar.Progress, interval); + //Console.WriteLine("SeekBarProgressChanged progress: {0} interval: {1}", _seekBar.Progress, interval); OnSetInterval(interval); } @@ -109,7 +109,7 @@ public void RefreshPitchShifting(PlayerPitchShiftingEntity entity) // Pitch shifting range: -12 to +12. Seek bar range: 0-23 int seekBarProgress = entity.IntervalValue + 12; - Console.WriteLine("PitchShiftingFragment - RefreshPitchShifting - interval: {0} seekBarProgress: {1}", entity.IntervalValue, seekBarProgress); + //Console.WriteLine("PitchShiftingFragment - RefreshPitchShifting - interval: {0} seekBarProgress: {1}", entity.IntervalValue, seekBarProgress); _seekBar.Progress = seekBarProgress; }); } diff --git a/MPfm/MPfm.Android/Classes/Fragments/PlayerMetadataFragment.cs b/MPfm/MPfm.Android/Classes/Fragments/PlayerMetadataFragment.cs index 159bc07b..d6b1f22f 100644 --- a/MPfm/MPfm.Android/Classes/Fragments/PlayerMetadataFragment.cs +++ b/MPfm/MPfm.Android/Classes/Fragments/PlayerMetadataFragment.cs @@ -44,7 +44,7 @@ public PlayerMetadataFragment(Action onViewReady) public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - Console.WriteLine("PlayerMetadataFragment - OnCreateView"); + //Console.WriteLine("PlayerMetadataFragment - OnCreateView"); _view = inflater.Inflate(Resource.Layout.PlayerMetadata, container, false); _lblArtistName = _view.FindViewById(Resource.Id.playerMetadata_lblArtistName); _lblAlbumTitle = _view.FindViewById(Resource.Id.playerMetadata_lblAlbumTitle); @@ -63,14 +63,14 @@ public void RefreshAudioFile(AudioFile audioFile) Activity.RunOnUiThread(() => { if (audioFile != null) { - Console.WriteLine("PlayerMetadataFragment - RefreshAudioFile - {0}", audioFile.FilePath); + //Console.WriteLine("PlayerMetadataFragment - RefreshAudioFile - {0}", audioFile.FilePath); _lblArtistName.Text = audioFile.ArtistName; _lblAlbumTitle.Text = audioFile.AlbumTitle; _lblSongTitle.Text = audioFile.Title; } else { - Console.WriteLine("PlayerMetadataFragment - RefreshAudioFile (null)"); + //Console.WriteLine("PlayerMetadataFragment - RefreshAudioFile (null)"); _lblArtistName.Text = string.Empty; _lblAlbumTitle.Text = string.Empty; _lblSongTitle.Text = string.Empty; diff --git a/MPfm/MPfm.Android/Classes/Fragments/SplashFragment.cs b/MPfm/MPfm.Android/Classes/Fragments/SplashFragment.cs index b75413cf..13394605 100644 --- a/MPfm/MPfm.Android/Classes/Fragments/SplashFragment.cs +++ b/MPfm/MPfm.Android/Classes/Fragments/SplashFragment.cs @@ -63,7 +63,7 @@ public void OnClick(View v) public void RefreshStatus(string message) { - Console.WriteLine("SplashFragment - RefreshStatus"); + //Console.WriteLine("SplashFragment - RefreshStatus"); Activity.RunOnUiThread(() => { _textView.Text = message; diff --git a/MPfm/MPfm.Android/Classes/Fragments/TimeShiftingFragment.cs b/MPfm/MPfm.Android/Classes/Fragments/TimeShiftingFragment.cs index 59ec3b01..f723e824 100644 --- a/MPfm/MPfm.Android/Classes/Fragments/TimeShiftingFragment.cs +++ b/MPfm/MPfm.Android/Classes/Fragments/TimeShiftingFragment.cs @@ -70,7 +70,7 @@ private void SeekBarOnProgressChanged(object sender, SeekBar.ProgressChangedEven { // Time shifting range: 50% to 150%. Seek bar range: 0-1000 float timeShiftingValue = (((float)_seekBar.Progress) / 10f) + 50f; - Console.WriteLine("SeekBarProgressChanged progress: {0} timeShiftingValue: {1}", _seekBar.Progress, timeShiftingValue); + //Console.WriteLine("SeekBarProgressChanged progress: {0} timeShiftingValue: {1}", _seekBar.Progress, timeShiftingValue); OnSetTimeShifting(timeShiftingValue); } @@ -105,7 +105,7 @@ public void RefreshTimeShifting(PlayerTimeShiftingEntity entity) // The seekbar in Android doesn't have a minimum value and doesn't support floats. Lazy Google! // Time shifting range: 50% to 150%. Seek bar range: 0-1000 int seekBarProgress = (int)Math.Ceiling(entity.TimeShiftingValue * 10f - 500f); - Console.WriteLine("TimeShiftingFragment - RefreshTimeShifting - timeShiftingValue: {0} seekBarProgress: {1}", entity.TimeShiftingValue, seekBarProgress); + //Console.WriteLine("TimeShiftingFragment - RefreshTimeShifting - timeShiftingValue: {0} seekBarProgress: {1}", entity.TimeShiftingValue, seekBarProgress); _seekBar.Progress = seekBarProgress; }); } diff --git a/MPfm/MPfm.Android/Classes/Navigation/AndroidNavigationManager.cs b/MPfm/MPfm.Android/Classes/Navigation/AndroidNavigationManager.cs index 9ddb9a76..917c40f5 100644 --- a/MPfm/MPfm.Android/Classes/Navigation/AndroidNavigationManager.cs +++ b/MPfm/MPfm.Android/Classes/Navigation/AndroidNavigationManager.cs @@ -97,7 +97,7 @@ public void PopMobileLibraryBrowserBackstack(MobileNavigationTabType tabType) tab.Item2.Remove(tabItem); tabItem = tab.Item2.Last(); - Console.WriteLine(">>>>>>>>>>>>>>>>>>>>>>>>>>> ANDROID NAVMGR -- PopMobileLibraryBrowserBackstack - About to restore: tabType: {0} browserType: {1}", tabType.ToString(), tabItem.Item1.ToString()); + //Console.WriteLine(">>>>>>>>>>>>>>>>>>>>>>>>>>> ANDROID NAVMGR -- PopMobileLibraryBrowserBackstack - About to restore: tabType: {0} browserType: {1}", tabType.ToString(), tabItem.Item1.ToString()); MobileLibraryBrowserType browserType = MobileLibraryBrowserType.Artists; switch (tabType) { @@ -122,7 +122,7 @@ public void PopMobileLibraryBrowserBackstack(MobileNavigationTabType tabType) public override void NotifyMobileLibraryBrowserQueryChange(MobileNavigationTabType tabType, MobileLibraryBrowserType browserType, LibraryQuery query) { - Console.WriteLine(">>>>>>>>>>>>>>>>>>>>>>>>>>> ANDROID NAVMGR -- NotifyMobileLibraryBrowserQueryChange tabType: {0} browserType: {1}", tabType.ToString(), browserType.ToString()); + //Console.WriteLine(">>>>>>>>>>>>>>>>>>>>>>>>>>> ANDROID NAVMGR -- NotifyMobileLibraryBrowserQueryChange tabType: {0} browserType: {1}", tabType.ToString(), browserType.ToString()); var tab = _tabHistory.FirstOrDefault(x => x.Item1 == tabType); tab.Item2.Add(new Tuple(browserType, query)); } diff --git a/MPfm/MPfm.Android/Classes/Services/PlayerService.cs b/MPfm/MPfm.Android/Classes/Services/PlayerService.cs new file mode 100644 index 00000000..b2e8a35d --- /dev/null +++ b/MPfm/MPfm.Android/Classes/Services/PlayerService.cs @@ -0,0 +1,87 @@ +// Copyright © 2011-2013 Yanick Castonguay +// +// This file is part of MPfm. +// +// MPfm is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// MPfm is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with MPfm. If not, see . + +using System; +using System.Threading.Tasks; +using Android.App; +using Android.Appwidget; +using Android.Content; +using Android.Graphics; +using Android.OS; +using Android.Widget; +using Java.Lang; +using MPfm.Android.Classes.Cache; +using MPfm.MVP.Bootstrap; +using MPfm.MVP.Messages; +using MPfm.MVP.Services.Interfaces; +using MPfm.Sound.AudioFiles; +using TinyMessenger; + +namespace MPfm.Android.Classes.Services +{ + [Service(Name = ".PlayerService", Label = "Sessions Music Player Service", Process = ":.player.process")] + public class PlayerService : Service + { + private ITinyMessengerHub _messengerHub; + private IPlayerService _playerService; + + public override void OnStart(Intent intent, int startId) + { + Console.WriteLine(">>>>>>>>>>> PlayerService - OnStart - startId: {0}", startId); + base.OnStart(intent, startId); + } + + public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId) + { + Console.WriteLine(">>>>>>>>>> PlayerService - OnStartCommand - startId: {0}", startId); + return StartCommandResult.Sticky; + } + + public override void OnCreate() + { + Console.WriteLine(">>>>>>>>>> PlayerService - ONCREATE"); + Initialize(); + base.OnCreate(); + } + + public override void OnDestroy() + { + Console.WriteLine(">>>>>>>>>> PlayerService - DESTROY"); + base.OnDestroy(); + } + + private void Initialize() + { + _messengerHub = Bootstrapper.GetContainer().Resolve(); + _playerService = Bootstrapper.GetContainer().Resolve(); + _messengerHub.Subscribe((message) => + { + }); + _messengerHub.Subscribe((message) => + { + }); + } + + public override IBinder OnBind(Intent intent) + { + // We don't need to bind to this service + Console.WriteLine(">>>>>>>>>>> PlayerService - OnBind"); + return null; + } + + } +} \ No newline at end of file diff --git a/MPfm/MPfm.Android/Classes/Services/WidgetService.cs b/MPfm/MPfm.Android/Classes/Services/WidgetService.cs index ec62a05d..1a354d9a 100644 --- a/MPfm/MPfm.Android/Classes/Services/WidgetService.cs +++ b/MPfm/MPfm.Android/Classes/Services/WidgetService.cs @@ -22,8 +22,7 @@ using Android.Content; using Android.Graphics; using Android.OS; -using Android.Views; -using Android.Views.Animations; +using Android.Support.V4.App; using Android.Widget; using Java.Lang; using MPfm.Android.Classes.Cache; @@ -36,7 +35,8 @@ namespace MPfm.Android.Classes.Services { - [Service] + //[Service(Name = "org.sessionsapp.android.WidgetService", Label = "Sessions Widget Service")]//, Process = ":.widget.process")] + [Service(Label = "Sessions Widget Service")]//, Process = ":widgetprocess")] public class WidgetService : Service { private ITinyMessengerHub _messengerHub; @@ -54,10 +54,29 @@ public override void OnStart(Intent intent, int startId) public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId) { - Console.WriteLine(">>>>>>>>>> WidgetService - OnStartCommand - startId: {0}", startId); + Console.WriteLine(">>>>>>>>>> WidgetService - OnStartCommand - startId: {0} intent.action: {1}", startId, intent.Action); _widgetIds = intent.GetIntArrayExtra(AppWidgetManager.ExtraAppwidgetIds); - //UpdateView(null); - return base.OnStartCommand(intent, flags, startId); + + if (intent.Action == PlayerWidgetActions.SessionsAppActionOpen.ToString()) + { + Intent intentOpen = new Intent(BaseContext, typeof(PlayerActivity)); + intentOpen.AddFlags(ActivityFlags.NewTask); + Application.StartActivity(intentOpen); + } + else if (intent.Action == PlayerWidgetActions.SessionsAppActionPrevious.ToString()) + { + _messengerHub.PublishAsync(new PlayerCommandMessage(this, PlayerCommandMessageType.Previous)); + } + else if (intent.Action == PlayerWidgetActions.SessionsAppActionPlayPause.ToString()) + { + _messengerHub.PublishAsync(new PlayerCommandMessage(this, PlayerCommandMessageType.PlayPause)); + } + else if (intent.Action == PlayerWidgetActions.SessionsAppActionNext.ToString()) + { + _messengerHub.PublishAsync(new PlayerCommandMessage(this, PlayerCommandMessageType.Next)); + } + + return StartCommandResult.Sticky; } public override void OnCreate() @@ -75,30 +94,64 @@ public override void OnDestroy() private void Initialize() { - int maxMemory = (int)(Runtime.GetRuntime().MaxMemory() / 1024); - int cacheSize = maxMemory / 16; + Console.WriteLine(">>>>>>>>>> WidgetService - Initializing service..."); + int maxMemory = (int) (Runtime.GetRuntime().MaxMemory()/1024); + int cacheSize = maxMemory/16; _bitmapCache = new BitmapCache(null, cacheSize, 200, 200); _messengerHub = Bootstrapper.GetContainer().Resolve(); _playerService = Bootstrapper.GetContainer().Resolve(); - _messengerHub.Subscribe((message) => - { - //Console.WriteLine("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WidgetService - PlayerPlaylistIndexChangedMessage"); + _messengerHub.Subscribe((message) => { + Console.WriteLine("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WidgetService - PlayerPlaylistIndexChangedMessage"); if (message.Data.AudioFileStarted != null) { UpdateView(message.Data.AudioFileStarted, null); GetAlbumArt(message.Data.AudioFileStarted); } }); - _messengerHub.Subscribe((message) => - { - //Console.WriteLine("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WidgetService - PlayerStatusMessage - Status=" + message.Status.ToString()); + _messengerHub.Subscribe((message) => { + Console.WriteLine("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WidgetService - PlayerStatusMessage - Status=" + message.Status.ToString()); }); + + // Declare the service as foreground (i.e. the user is aware because of the audio) + Console.WriteLine(">>>>>>>>>> WidgetService - Declaring service as foreground (API {0})...", (int) global::Android.OS.Build.VERSION.SdkInt); + var notification = new Notification.Builder(this) + //.SetContentTitle("Sessions") + //.SetContentText("Notification Player") + .SetOngoing(true) + .SetPriority((int)NotificationPriority.Max) + .SetSmallIcon(Resource.Drawable.Icon) + .Build(); + + // Use the big notification style for Android 4.1+; use the standard notification style for Android 4.0.3 +//#if __ANDROID_16__ + if (((int) global::Android.OS.Build.VERSION.SdkInt) >= 16) + { + Console.WriteLine(">>>>>>>>>> WidgetService - USING ANDROID 4.1+ NOTIFICATION LAYOUT (BIG VIEW STYLE)!"); + RemoteViews viewBigNotificationPlayer = new RemoteViews(ApplicationContext.PackageName, Resource.Layout.BigNotificationPlayer); + viewBigNotificationPlayer.SetTextViewText(Resource.Id.bigNotificationPlayer_lblArtistName, "Hello World!"); + notification.BigContentView = viewBigNotificationPlayer; + } +//#else + //else + //{ + Console.WriteLine(">>>>>>>>>> WidgetService - USING ANDROID 4.0.3 NOTIFICATION LAYOUT!"); + RemoteViews viewNotificationPlayer = new RemoteViews(ApplicationContext.PackageName, Resource.Layout.NotificationPlayer); + viewNotificationPlayer.SetTextViewText(Resource.Id.notificationPlayer_lblTitle, "Hello World!"); + notification.ContentView = viewNotificationPlayer; + //} +//#endif + + Intent notificationIntent = new Intent(this, typeof(PlayerActivity)); + PendingIntent pendingIntent = PendingIntent.GetActivity(this, 0, notificationIntent, 0); + notification.ContentIntent = pendingIntent; + StartForeground(1, notification); + Console.WriteLine(">>>>>>>>>> WidgetService - Initializing service... DONE!"); } private void UpdateView(AudioFile audioFile, Bitmap bitmapAlbumArt) { - //Console.WriteLine(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> WidgetService - UpdateView"); + Console.WriteLine(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> WidgetService - UpdateView"); string lastUpdated = DateTime.Now.ToLongTimeString(); RemoteViews view = new RemoteViews(PackageName, Resource.Layout.WidgetPlayer); //view.SetOnClickPendingIntent(Resource.Id.widgetPlayer_btnPrevious, ); diff --git a/MPfm/MPfm.Android/Classes/Widgets/PlayerWidgetProvider.cs b/MPfm/MPfm.Android/Classes/Widgets/PlayerWidgetProvider.cs index 81ca8980..90c9a7d6 100644 --- a/MPfm/MPfm.Android/Classes/Widgets/PlayerWidgetProvider.cs +++ b/MPfm/MPfm.Android/Classes/Widgets/PlayerWidgetProvider.cs @@ -32,22 +32,17 @@ namespace MPfm.Android.Classes.Widgets public class PlayerWidgetProvider : AppWidgetProvider { private PendingIntent _pendingIntentWidgetService; - private PendingIntent _pendingIntentClick; public override void OnUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { - //Console.WriteLine("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PlayerWidgetProvider - OnUpdate - appWidgetIds.length: {0}", appWidgetIds.Length); - //context.StartService(new Intent(context, typeof(WidgetService))); - //PendingIntent _pendingIntentWidgetService = PendingIntent.GetService(context, 0, intent, 0); - + Console.WriteLine("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PlayerWidgetProvider - OnUpdate - appWidgetIds.length: {0}", appWidgetIds.Length); AlarmManager alarmManager = (AlarmManager)context.GetSystemService(Context.AlarmService); - Intent intent = new Intent(context, typeof(WidgetService)); - intent.PutExtra(AppWidgetManager.ExtraAppwidgetIds, appWidgetIds); - if (_pendingIntentWidgetService == null) - _pendingIntentWidgetService = PendingIntent.GetService(context, 0, intent, PendingIntentFlags.CancelCurrent); - if (_pendingIntentClick == null) - _pendingIntentClick = PendingIntent.GetActivity(context, 0, intent, PendingIntentFlags.UpdateCurrent); + Intent intentAlarm = new Intent(context, typeof(WidgetService)); + intentAlarm.SetAction(AppWidgetManager.ActionAppwidgetUpdate); + intentAlarm.PutExtra(AppWidgetManager.ExtraAppwidgetIds, appWidgetIds); + if (_pendingIntentWidgetService == null) + _pendingIntentWidgetService = PendingIntent.GetService(context, 0, intentAlarm, PendingIntentFlags.CancelCurrent); Calendar time = Calendar.Instance; time.Set(CalendarField.Minute, 0); @@ -60,14 +55,38 @@ public override void OnUpdate(Context context, AppWidgetManager appWidgetManager { int appWidgetId = appWidgetIds[a]; RemoteViews views = new RemoteViews(context.PackageName, Resource.Layout.WidgetPlayer); - views.SetOnClickPendingIntent(Resource.Id.widgetPlayer, _pendingIntentClick); + + var intentBackground = new Intent(context, typeof (WidgetService)); + intentBackground.SetAction(PlayerWidgetActions.SessionsAppActionOpen.ToString()); + intentBackground.PutExtra(AppWidgetManager.ExtraAppwidgetIds, appWidgetIds); + var pendingIntentBackgroundClick = PendingIntent.GetService(context, appWidgetId, intentBackground, PendingIntentFlags.UpdateCurrent); + views.SetOnClickPendingIntent(Resource.Id.widgetPlayer, pendingIntentBackgroundClick); + + var intentPrevious = new Intent(context, typeof(WidgetService)); + intentPrevious.SetAction(PlayerWidgetActions.SessionsAppActionPrevious.ToString()); + intentPrevious.PutExtra(AppWidgetManager.ExtraAppwidgetIds, appWidgetIds); + var pendingIntentPreviousClick = PendingIntent.GetService(context, appWidgetId, intentPrevious, PendingIntentFlags.UpdateCurrent); + views.SetOnClickPendingIntent(Resource.Id.widgetPlayer_btnPrevious, pendingIntentPreviousClick); + + var intentPlayPause = new Intent(context, typeof(WidgetService)); + intentPlayPause.SetAction(PlayerWidgetActions.SessionsAppActionPlayPause.ToString()); + intentPlayPause.PutExtra(AppWidgetManager.ExtraAppwidgetIds, appWidgetIds); + var pendingIntentPlayPauseClick = PendingIntent.GetService(context, appWidgetId, intentPlayPause, PendingIntentFlags.UpdateCurrent); + views.SetOnClickPendingIntent(Resource.Id.widgetPlayer_btnPlayPause, pendingIntentPlayPauseClick); + + var intentNext = new Intent(context, typeof(WidgetService)); + intentNext.SetAction(PlayerWidgetActions.SessionsAppActionNext.ToString()); + intentNext.PutExtra(AppWidgetManager.ExtraAppwidgetIds, appWidgetIds); + var pendingIntentNextClick = PendingIntent.GetService(context, appWidgetId, intentNext, PendingIntentFlags.UpdateCurrent); + views.SetOnClickPendingIntent(Resource.Id.widgetPlayer_btnNext, pendingIntentNextClick); + appWidgetManager.UpdateAppWidget(appWidgetId, views); } } public override void OnEnabled(Context context) { - //Console.WriteLine("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PlayerWidgetProvider - OnEnabled"); + Console.WriteLine("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PlayerWidgetProvider - OnEnabled"); base.OnEnabled(context); } @@ -81,7 +100,7 @@ public override void OnDisabled(Context context) public override void OnDeleted(Context context, int[] appWidgetIds) { - //Console.WriteLine("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PlayerWidgetProvider - OnDeleted"); + Console.WriteLine("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PlayerWidgetProvider - OnDeleted"); base.OnDeleted(context, appWidgetIds); } @@ -92,4 +111,13 @@ public override void OnDeleted(Context context, int[] appWidgetIds) // Console.WriteLine("PlayerWidgetProvider - OnReceive - intent.action: {0}", intent.Action); //} } + + public enum PlayerWidgetActions + { + SessionsAppActionOpen = 0, + SessionsAppActionClose = 1, + SessionsAppActionPrevious = 2, + SessionsAppActionPlayPause = 3, + SessionsAppActionNext = 4 + } } \ No newline at end of file diff --git a/MPfm/MPfm.Android/MPfm.Android.csproj b/MPfm/MPfm.Android/MPfm.Android.csproj index 3a49c023..dda15de7 100644 --- a/MPfm/MPfm.Android/MPfm.Android.csproj +++ b/MPfm/MPfm.Android/MPfm.Android.csproj @@ -115,6 +115,7 @@ + @@ -226,6 +227,12 @@ Designer + + Designer + + + Designer + @@ -257,7 +264,9 @@ Designer - + + Designer + diff --git a/MPfm/MPfm.Android/Resources/Layout/BigNotificationPlayer.axml b/MPfm/MPfm.Android/Resources/Layout/BigNotificationPlayer.axml new file mode 100644 index 00000000..60c79de2 --- /dev/null +++ b/MPfm/MPfm.Android/Resources/Layout/BigNotificationPlayer.axml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MPfm/MPfm.Android/Resources/Layout/NotificationPlayer.axml b/MPfm/MPfm.Android/Resources/Layout/NotificationPlayer.axml new file mode 100644 index 00000000..06d48e34 --- /dev/null +++ b/MPfm/MPfm.Android/Resources/Layout/NotificationPlayer.axml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/MPfm/MPfm.Android/Resources/Resource.Designer.cs b/MPfm/MPfm.Android/Resources/Resource.Designer.cs index a4949204..f4bba7a0 100644 --- a/MPfm/MPfm.Android/Resources/Resource.Designer.cs +++ b/MPfm/MPfm.Android/Resources/Resource.Designer.cs @@ -2,7 +2,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.18052 +// Runtime Version:4.0.30319.18213 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -349,584 +349,629 @@ public partial class Id // aapt resource value: 0x7f0c0004 public const int albumCell_layout = 2131492868; - // aapt resource value: 0x7f0c000b - public const int equalizerPresetCell_imageCheck = 2131492875; - // aapt resource value: 0x7f0c000a - public const int equalizerPresetCell_lblName = 2131492874; + public const int bigNotificationPlayer = 2131492874; - // aapt resource value: 0x7f0c00c5 - public const int equalizerPresetDetailsMenu_item_save = 2131493061; + // aapt resource value: 0x7f0c0011 + public const int bigNotificationPlayer_btnNext = 2131492881; - // aapt resource value: 0x7f0c0013 - public const int equalizerPresetDetails_btnDelete = 2131492883; + // aapt resource value: 0x7f0c0010 + public const int bigNotificationPlayer_btnPlayPause = 2131492880; - // aapt resource value: 0x7f0c0011 - public const int equalizerPresetDetails_btnNormalize = 2131492881; + // aapt resource value: 0x7f0c000f + public const int bigNotificationPlayer_btnPrevious = 2131492879; - // aapt resource value: 0x7f0c0012 - public const int equalizerPresetDetails_btnReset = 2131492882; + // aapt resource value: 0x7f0c000b + public const int bigNotificationPlayer_imageAlbum = 2131492875; // aapt resource value: 0x7f0c000d - public const int equalizerPresetDetails_graphView = 2131492877; + public const int bigNotificationPlayer_lblAlbumTitle = 2131492877; + + // aapt resource value: 0x7f0c000c + public const int bigNotificationPlayer_lblArtistName = 2131492876; // aapt resource value: 0x7f0c000e - public const int equalizerPresetDetails_lblPresetName = 2131492878; + public const int bigNotificationPlayer_lblSongTitle = 2131492878; - // aapt resource value: 0x7f0c0010 - public const int equalizerPresetDetails_listView = 2131492880; + // aapt resource value: 0x7f0c0013 + public const int equalizerPresetCell_imageCheck = 2131492883; - // aapt resource value: 0x7f0c000c - public const int equalizerPresetDetails_mainLayout = 2131492876; + // aapt resource value: 0x7f0c0012 + public const int equalizerPresetCell_lblName = 2131492882; - // aapt resource value: 0x7f0c000f - public const int equalizerPresetDetails_txtPresetName = 2131492879; + // aapt resource value: 0x7f0c00d4 + public const int equalizerPresetDetailsMenu_item_save = 2131493076; - // aapt resource value: 0x7f0c0014 - public const int equalizerPresetFaderCell_lblFrequency = 2131492884; + // aapt resource value: 0x7f0c001b + public const int equalizerPresetDetails_btnDelete = 2131492891; - // aapt resource value: 0x7f0c0016 - public const int equalizerPresetFaderCell_lblValue = 2131492886; + // aapt resource value: 0x7f0c0019 + public const int equalizerPresetDetails_btnNormalize = 2131492889; + + // aapt resource value: 0x7f0c001a + public const int equalizerPresetDetails_btnReset = 2131492890; // aapt resource value: 0x7f0c0015 - public const int equalizerPresetFaderCell_seekBar = 2131492885; + public const int equalizerPresetDetails_graphView = 2131492885; - // aapt resource value: 0x7f0c00c6 - public const int equalizerPresetsMenu_item_add = 2131493062; + // aapt resource value: 0x7f0c0016 + public const int equalizerPresetDetails_lblPresetName = 2131492886; - // aapt resource value: 0x7f0c001d - public const int equalizerPresets_btnBypass = 2131492893; + // aapt resource value: 0x7f0c0018 + public const int equalizerPresetDetails_listView = 2131492888; - // aapt resource value: 0x7f0c001c - public const int equalizerPresets_lblBypass = 2131492892; + // aapt resource value: 0x7f0c0014 + public const int equalizerPresetDetails_mainLayout = 2131492884; - // aapt resource value: 0x7f0c001a - public const int equalizerPresets_lblMasterVolume = 2131492890; + // aapt resource value: 0x7f0c0017 + public const int equalizerPresetDetails_txtPresetName = 2131492887; + + // aapt resource value: 0x7f0c001c + public const int equalizerPresetFaderCell_lblFrequency = 2131492892; // aapt resource value: 0x7f0c001e - public const int equalizerPresets_listView = 2131492894; + public const int equalizerPresetFaderCell_lblValue = 2131492894; - // aapt resource value: 0x7f0c0017 - public const int equalizerPresets_mainLayout = 2131492887; + // aapt resource value: 0x7f0c001d + public const int equalizerPresetFaderCell_seekBar = 2131492893; - // aapt resource value: 0x7f0c0019 - public const int equalizerPresets_outputMeterView = 2131492889; + // aapt resource value: 0x7f0c00d5 + public const int equalizerPresetsMenu_item_add = 2131493077; - // aapt resource value: 0x7f0c001b - public const int equalizerPresets_seekBarVolume = 2131492891; + // aapt resource value: 0x7f0c0025 + public const int equalizerPresets_btnBypass = 2131492901; - // aapt resource value: 0x7f0c0018 - public const int equalizerPresets_topLayout = 2131492888; + // aapt resource value: 0x7f0c0024 + public const int equalizerPresets_lblBypass = 2131492900; - // aapt resource value: 0x7f0c0009 - public const int fragment_audioSettings_lblTitle = 2131492873; + // aapt resource value: 0x7f0c0022 + public const int equalizerPresets_lblMasterVolume = 2131492898; - // aapt resource value: 0x7f0c0008 - public const int fragment_audioSettings_mainLayout = 2131492872; + // aapt resource value: 0x7f0c0026 + public const int equalizerPresets_listView = 2131492902; + + // aapt resource value: 0x7f0c001f + public const int equalizerPresets_mainLayout = 2131492895; + + // aapt resource value: 0x7f0c0021 + public const int equalizerPresets_outputMeterView = 2131492897; + + // aapt resource value: 0x7f0c0023 + public const int equalizerPresets_seekBarVolume = 2131492899; // aapt resource value: 0x7f0c0020 - public const int fragment_generalSettings_lblTitle = 2131492896; + public const int equalizerPresets_topLayout = 2131492896; - // aapt resource value: 0x7f0c001f - public const int fragment_generalSettings_mainLayout = 2131492895; + // aapt resource value: 0x7f0c0009 + public const int fragment_audioSettings_lblTitle = 2131492873; - // aapt resource value: 0x7f0c00ba - public const int fragment_updateLibrary_button = 2131493050; + // aapt resource value: 0x7f0c0008 + public const int fragment_audioSettings_mainLayout = 2131492872; - // aapt resource value: 0x7f0c00b9 - public const int fragment_updateLibrary_lblSubtitle = 2131493049; + // aapt resource value: 0x7f0c0028 + public const int fragment_generalSettings_lblTitle = 2131492904; - // aapt resource value: 0x7f0c00b8 - public const int fragment_updateLibrary_lblTitle = 2131493048; + // aapt resource value: 0x7f0c0027 + public const int fragment_generalSettings_mainLayout = 2131492903; - // aapt resource value: 0x7f0c00b5 - public const int fragment_updateLibrary_mainLayout = 2131493045; + // aapt resource value: 0x7f0c00c9 + public const int fragment_updateLibrary_button = 2131493065; - // aapt resource value: 0x7f0c00b7 - public const int fragment_updateLibrary_progressBar = 2131493047; + // aapt resource value: 0x7f0c00c8 + public const int fragment_updateLibrary_lblSubtitle = 2131493064; - // aapt resource value: 0x7f0c00b6 - public const int fragment_updateLibrary_relativeLayout = 2131493046; + // aapt resource value: 0x7f0c00c7 + public const int fragment_updateLibrary_lblTitle = 2131493063; - // aapt resource value: 0x7f0c0021 - public const int genericcell_image = 2131492897; + // aapt resource value: 0x7f0c00c4 + public const int fragment_updateLibrary_mainLayout = 2131493060; - // aapt resource value: 0x7f0c0022 - public const int genericcell_title = 2131492898; + // aapt resource value: 0x7f0c00c6 + public const int fragment_updateLibrary_progressBar = 2131493062; - // aapt resource value: 0x7f0c0026 - public const int libraryPreferences_btnEnableSync = 2131492902; + // aapt resource value: 0x7f0c00c5 + public const int fragment_updateLibrary_relativeLayout = 2131493061; // aapt resource value: 0x7f0c0029 - public const int libraryPreferences_btnResetLibrary = 2131492905; + public const int genericcell_image = 2131492905; // aapt resource value: 0x7f0c002a - public const int libraryPreferences_btnUpdateLibrary = 2131492906; + public const int genericcell_title = 2131492906; - // aapt resource value: 0x7f0c0025 - public const int libraryPreferences_lblEnableSync = 2131492901; + // aapt resource value: 0x7f0c002e + public const int libraryPreferences_btnEnableSync = 2131492910; - // aapt resource value: 0x7f0c0027 - public const int libraryPreferences_lblHTTPPort = 2131492903; + // aapt resource value: 0x7f0c0031 + public const int libraryPreferences_btnResetLibrary = 2131492913; - // aapt resource value: 0x7f0c0024 - public const int libraryPreferences_lblTitle = 2131492900; + // aapt resource value: 0x7f0c0032 + public const int libraryPreferences_btnUpdateLibrary = 2131492914; - // aapt resource value: 0x7f0c0023 - public const int libraryPreferences_mainLayout = 2131492899; + // aapt resource value: 0x7f0c002d + public const int libraryPreferences_lblEnableSync = 2131492909; - // aapt resource value: 0x7f0c0028 - public const int libraryPreferences_txtHTTPPort = 2131492904; + // aapt resource value: 0x7f0c002f + public const int libraryPreferences_lblHTTPPort = 2131492911; // aapt resource value: 0x7f0c002c - public const int loops_btnAdd = 2131492908; + public const int libraryPreferences_lblTitle = 2131492908; // aapt resource value: 0x7f0c002b - public const int loops_lblTitle = 2131492907; + public const int libraryPreferences_mainLayout = 2131492907; - // aapt resource value: 0x7f0c002d - public const int loops_listView = 2131492909; + // aapt resource value: 0x7f0c0030 + public const int libraryPreferences_txtHTTPPort = 2131492912; - // aapt resource value: 0x7f0c002e - public const int main_layout = 2131492910; + // aapt resource value: 0x7f0c0034 + public const int loops_btnAdd = 2131492916; - // aapt resource value: 0x7f0c002f - public const int main_miniplayer = 2131492911; + // aapt resource value: 0x7f0c0033 + public const int loops_lblTitle = 2131492915; - // aapt resource value: 0x7f0c0037 - public const int main_miniplayer_btnNext = 2131492919; + // aapt resource value: 0x7f0c0035 + public const int loops_listView = 2131492917; // aapt resource value: 0x7f0c0036 - public const int main_miniplayer_btnPlayPause = 2131492918; + public const int main_layout = 2131492918; - // aapt resource value: 0x7f0c0035 - public const int main_miniplayer_btnPrevious = 2131492917; + // aapt resource value: 0x7f0c0037 + public const int main_miniplayer = 2131492919; - // aapt resource value: 0x7f0c0030 - public const int main_miniplayer_imageAlbum = 2131492912; + // aapt resource value: 0x7f0c003f + public const int main_miniplayer_btnNext = 2131492927; - // aapt resource value: 0x7f0c0033 - public const int main_miniplayer_lblAlbumTitle = 2131492915; + // aapt resource value: 0x7f0c003e + public const int main_miniplayer_btnPlayPause = 2131492926; - // aapt resource value: 0x7f0c0032 - public const int main_miniplayer_lblArtistName = 2131492914; + // aapt resource value: 0x7f0c003d + public const int main_miniplayer_btnPrevious = 2131492925; // aapt resource value: 0x7f0c0038 - public const int main_miniplayer_lblSongPosition = 2131492920; + public const int main_miniplayer_imageAlbum = 2131492920; - // aapt resource value: 0x7f0c0034 - public const int main_miniplayer_lblSongTitle = 2131492916; - - // aapt resource value: 0x7f0c0031 - public const int main_miniplayer_text = 2131492913; - - // aapt resource value: 0x7f0c0039 - public const int main_pager = 2131492921; + // aapt resource value: 0x7f0c003b + public const int main_miniplayer_lblAlbumTitle = 2131492923; // aapt resource value: 0x7f0c003a - public const int main_pager_title_strip = 2131492922; + public const int main_miniplayer_lblArtistName = 2131492922; - // aapt resource value: 0x7f0c003b - public const int markerCell_letter = 2131492923; + // aapt resource value: 0x7f0c0040 + public const int main_miniplayer_lblSongPosition = 2131492928; // aapt resource value: 0x7f0c003c - public const int markerCell_name = 2131492924; + public const int main_miniplayer_lblSongTitle = 2131492924; - // aapt resource value: 0x7f0c003d - public const int markerCell_position = 2131492925; - - // aapt resource value: 0x7f0c003f - public const int markerDetails_lblTitle = 2131492927; - - // aapt resource value: 0x7f0c003e - public const int markerDetails_mainLayout = 2131492926; + // aapt resource value: 0x7f0c0039 + public const int main_miniplayer_text = 2131492921; // aapt resource value: 0x7f0c0041 - public const int markers_btnAdd = 2131492929; - - // aapt resource value: 0x7f0c0040 - public const int markers_lblTitle = 2131492928; + public const int main_pager = 2131492929; // aapt resource value: 0x7f0c0042 - public const int markers_listView = 2131492930; - - // aapt resource value: 0x7f0c0056 - public const int mobileLibraryBrowserCell_imageAdd = 2131492950; - - // aapt resource value: 0x7f0c0057 - public const int mobileLibraryBrowserCell_imageDelete = 2131492951; + public const int main_pager_title_strip = 2131492930; - // aapt resource value: 0x7f0c0058 - public const int mobileLibraryBrowserCell_imageNowPlaying = 2131492952; - - // aapt resource value: 0x7f0c0055 - public const int mobileLibraryBrowserCell_imagePlay = 2131492949; + // aapt resource value: 0x7f0c0043 + public const int markerCell_letter = 2131492931; - // aapt resource value: 0x7f0c0050 - public const int mobileLibraryBrowserCell_index = 2131492944; + // aapt resource value: 0x7f0c0044 + public const int markerCell_name = 2131492932; - // aapt resource value: 0x7f0c0052 - public const int mobileLibraryBrowserCell_layoutSubtitle = 2131492946; + // aapt resource value: 0x7f0c0045 + public const int markerCell_position = 2131492933; - // aapt resource value: 0x7f0c0054 - public const int mobileLibraryBrowserCell_lblSubtitle = 2131492948; + // aapt resource value: 0x7f0c0047 + public const int markerDetails_lblTitle = 2131492935; - // aapt resource value: 0x7f0c0051 - public const int mobileLibraryBrowserCell_lblTitle = 2131492945; + // aapt resource value: 0x7f0c0046 + public const int markerDetails_mainLayout = 2131492934; - // aapt resource value: 0x7f0c0053 - public const int mobileLibraryBrowserCell_lblTitleWithSubtitle = 2131492947; + // aapt resource value: 0x7f0c0049 + public const int markers_btnAdd = 2131492937; - // aapt resource value: 0x7f0c0047 - public const int mobileLibraryBrowser_gridViewAlbums = 2131492935; + // aapt resource value: 0x7f0c0048 + public const int markers_lblTitle = 2131492936; // aapt resource value: 0x7f0c004a - public const int mobileLibraryBrowser_imageAlbum = 2131492938; + public const int markers_listView = 2131492938; - // aapt resource value: 0x7f0c0049 - public const int mobileLibraryBrowser_layoutAlbum = 2131492937; + // aapt resource value: 0x7f0c005e + public const int mobileLibraryBrowserCell_imageAdd = 2131492958; - // aapt resource value: 0x7f0c0043 - public const int mobileLibraryBrowser_layoutBreadcrumb = 2131492931; + // aapt resource value: 0x7f0c005f + public const int mobileLibraryBrowserCell_imageDelete = 2131492959; - // aapt resource value: 0x7f0c0048 - public const int mobileLibraryBrowser_layoutSongs = 2131492936; + // aapt resource value: 0x7f0c0060 + public const int mobileLibraryBrowserCell_imageNowPlaying = 2131492960; - // aapt resource value: 0x7f0c004e - public const int mobileLibraryBrowser_lblAlbumLength = 2131492942; + // aapt resource value: 0x7f0c005d + public const int mobileLibraryBrowserCell_imagePlay = 2131492957; - // aapt resource value: 0x7f0c004d - public const int mobileLibraryBrowser_lblAlbumSongCount = 2131492941; + // aapt resource value: 0x7f0c0058 + public const int mobileLibraryBrowserCell_index = 2131492952; - // aapt resource value: 0x7f0c004c - public const int mobileLibraryBrowser_lblAlbumTitle = 2131492940; + // aapt resource value: 0x7f0c005a + public const int mobileLibraryBrowserCell_layoutSubtitle = 2131492954; - // aapt resource value: 0x7f0c004b - public const int mobileLibraryBrowser_lblArtistName = 2131492939; + // aapt resource value: 0x7f0c005c + public const int mobileLibraryBrowserCell_lblSubtitle = 2131492956; - // aapt resource value: 0x7f0c0044 - public const int mobileLibraryBrowser_lblBreadcrumb = 2131492932; + // aapt resource value: 0x7f0c0059 + public const int mobileLibraryBrowserCell_lblTitle = 2131492953; - // aapt resource value: 0x7f0c0046 - public const int mobileLibraryBrowser_listViewArtists = 2131492934; + // aapt resource value: 0x7f0c005b + public const int mobileLibraryBrowserCell_lblTitleWithSubtitle = 2131492955; // aapt resource value: 0x7f0c004f - public const int mobileLibraryBrowser_listViewSongs = 2131492943; + public const int mobileLibraryBrowser_gridViewAlbums = 2131492943; - // aapt resource value: 0x7f0c0045 - public const int mobileLibraryBrowser_viewFlipper = 2131492933; + // aapt resource value: 0x7f0c0052 + public const int mobileLibraryBrowser_imageAlbum = 2131492946; - // aapt resource value: 0x7f0c005c - public const int pitchShifting_btnChangeKey = 2131492956; + // aapt resource value: 0x7f0c0051 + public const int mobileLibraryBrowser_layoutAlbum = 2131492945; - // aapt resource value: 0x7f0c0062 - public const int pitchShifting_btnDecrement = 2131492962; + // aapt resource value: 0x7f0c004b + public const int mobileLibraryBrowser_layoutBreadcrumb = 2131492939; - // aapt resource value: 0x7f0c0063 - public const int pitchShifting_btnIncrement = 2131492963; + // aapt resource value: 0x7f0c0050 + public const int mobileLibraryBrowser_layoutSongs = 2131492944; - // aapt resource value: 0x7f0c0064 - public const int pitchShifting_btnReset = 2131492964; + // aapt resource value: 0x7f0c0056 + public const int mobileLibraryBrowser_lblAlbumLength = 2131492950; - // aapt resource value: 0x7f0c005d - public const int pitchShifting_lblCurrentInterval = 2131492957; + // aapt resource value: 0x7f0c0055 + public const int mobileLibraryBrowser_lblAlbumSongCount = 2131492949; - // aapt resource value: 0x7f0c005f - public const int pitchShifting_lblCurrentIntervalValue = 2131492959; + // aapt resource value: 0x7f0c0054 + public const int mobileLibraryBrowser_lblAlbumTitle = 2131492948; - // aapt resource value: 0x7f0c005e - public const int pitchShifting_lblNewKey = 2131492958; + // aapt resource value: 0x7f0c0053 + public const int mobileLibraryBrowser_lblArtistName = 2131492947; - // aapt resource value: 0x7f0c0060 - public const int pitchShifting_lblNewKeyValue = 2131492960; + // aapt resource value: 0x7f0c004c + public const int mobileLibraryBrowser_lblBreadcrumb = 2131492940; - // aapt resource value: 0x7f0c005a - public const int pitchShifting_lblReferenceKey = 2131492954; + // aapt resource value: 0x7f0c004e + public const int mobileLibraryBrowser_listViewArtists = 2131492942; - // aapt resource value: 0x7f0c005b - public const int pitchShifting_lblReferenceKeyValue = 2131492955; + // aapt resource value: 0x7f0c0057 + public const int mobileLibraryBrowser_listViewSongs = 2131492951; - // aapt resource value: 0x7f0c0059 - public const int pitchShifting_lblTitle = 2131492953; + // aapt resource value: 0x7f0c004d + public const int mobileLibraryBrowser_viewFlipper = 2131492941; // aapt resource value: 0x7f0c0061 - public const int pitchShifting_seekBar = 2131492961; + public const int notificationPlayer = 2131492961; - // aapt resource value: 0x7f0c00c7 - public const int playerMenu_item_effects = 2131493063; + // aapt resource value: 0x7f0c0067 + public const int notificationPlayer_btnClose = 2131492967; - // aapt resource value: 0x7f0c0076 - public const int playerMetadata_lblAlbumTitle = 2131492982; + // aapt resource value: 0x7f0c0066 + public const int notificationPlayer_btnNext = 2131492966; - // aapt resource value: 0x7f0c0075 - public const int playerMetadata_lblArtistName = 2131492981; + // aapt resource value: 0x7f0c0065 + public const int notificationPlayer_btnPlayPause = 2131492965; - // aapt resource value: 0x7f0c0077 - public const int playerMetadata_lblSongTitle = 2131492983; + // aapt resource value: 0x7f0c0064 + public const int notificationPlayer_btnPrevious = 2131492964; - // aapt resource value: 0x7f0c0071 - public const int player_btnNext = 2131492977; + // aapt resource value: 0x7f0c0063 + public const int notificationPlayer_lblSubtitle = 2131492963; - // aapt resource value: 0x7f0c0070 - public const int player_btnPlayPause = 2131492976; + // aapt resource value: 0x7f0c0062 + public const int notificationPlayer_lblTitle = 2131492962; - // aapt resource value: 0x7f0c0072 - public const int player_btnPlaylist = 2131492978; + // aapt resource value: 0x7f0c006b + public const int pitchShifting_btnChangeKey = 2131492971; - // aapt resource value: 0x7f0c006f - public const int player_btnPrevious = 2131492975; + // aapt resource value: 0x7f0c0071 + public const int pitchShifting_btnDecrement = 2131492977; - // aapt resource value: 0x7f0c0073 - public const int player_btnRepeat = 2131492979; + // aapt resource value: 0x7f0c0072 + public const int pitchShifting_btnIncrement = 2131492978; - // aapt resource value: 0x7f0c0074 - public const int player_btnShuffle = 2131492980; + // aapt resource value: 0x7f0c0073 + public const int pitchShifting_btnReset = 2131492979; // aapt resource value: 0x7f0c006c - public const int player_imageViewAlbumArt = 2131492972; + public const int pitchShifting_lblCurrentInterval = 2131492972; // aapt resource value: 0x7f0c006e - public const int player_layoutButtons = 2131492974; + public const int pitchShifting_lblCurrentIntervalValue = 2131492974; - // aapt resource value: 0x7f0c0066 - public const int player_layoutPosition = 2131492966; + // aapt resource value: 0x7f0c006d + public const int pitchShifting_lblNewKey = 2131492973; - // aapt resource value: 0x7f0c0069 - public const int player_lblLength = 2131492969; + // aapt resource value: 0x7f0c006f + public const int pitchShifting_lblNewKeyValue = 2131492975; - // aapt resource value: 0x7f0c0067 - public const int player_lblPosition = 2131492967; + // aapt resource value: 0x7f0c0069 + public const int pitchShifting_lblReferenceKey = 2131492969; - // aapt resource value: 0x7f0c006b - public const int player_linearLayoutSubviews = 2131492971; + // aapt resource value: 0x7f0c006a + public const int pitchShifting_lblReferenceKeyValue = 2131492970; - // aapt resource value: 0x7f0c0065 - public const int player_mainLayout = 2131492965; + // aapt resource value: 0x7f0c0068 + public const int pitchShifting_lblTitle = 2131492968; - // aapt resource value: 0x7f0c006d - public const int player_pager = 2131492973; + // aapt resource value: 0x7f0c0070 + public const int pitchShifting_seekBar = 2131492976; - // aapt resource value: 0x7f0c0068 - public const int player_seekBar = 2131492968; + // aapt resource value: 0x7f0c00d6 + public const int playerMenu_item_effects = 2131493078; - // aapt resource value: 0x7f0c006a - public const int player_waveFormView = 2131492970; + // aapt resource value: 0x7f0c0085 + public const int playerMetadata_lblAlbumTitle = 2131492997; - // aapt resource value: 0x7f0c0078 - public const int preferences_mainLayout = 2131492984; + // aapt resource value: 0x7f0c0084 + public const int playerMetadata_lblArtistName = 2131492996; - // aapt resource value: 0x7f0c0079 - public const int preferences_pager = 2131492985; + // aapt resource value: 0x7f0c0086 + public const int playerMetadata_lblSongTitle = 2131492998; - // aapt resource value: 0x7f0c007a - public const int preferences_pager_title_strip = 2131492986; + // aapt resource value: 0x7f0c0080 + public const int player_btnNext = 2131492992; - // aapt resource value: 0x7f0c007b - public const int splash_layout = 2131492987; + // aapt resource value: 0x7f0c007f + public const int player_btnPlayPause = 2131492991; - // aapt resource value: 0x7f0c007c - public const int splash_text = 2131492988; + // aapt resource value: 0x7f0c0081 + public const int player_btnPlaylist = 2131492993; - // aapt resource value: 0x7f0c0088 - public const int syncDownload_lblCompleted = 2131493000; + // aapt resource value: 0x7f0c007e + public const int player_btnPrevious = 2131492990; - // aapt resource value: 0x7f0c0087 - public const int syncDownload_lblCompletedValue = 2131492999; + // aapt resource value: 0x7f0c0082 + public const int player_btnRepeat = 2131492994; - // aapt resource value: 0x7f0c008e - public const int syncDownload_lblCurrentFileProgress = 2131493006; + // aapt resource value: 0x7f0c0083 + public const int player_btnShuffle = 2131492995; - // aapt resource value: 0x7f0c008d - public const int syncDownload_lblCurrentFileProgressValue = 2131493005; + // aapt resource value: 0x7f0c007b + public const int player_imageViewAlbumArt = 2131492987; - // aapt resource value: 0x7f0c0090 - public const int syncDownload_lblDownloadSpeed = 2131493008; + // aapt resource value: 0x7f0c007d + public const int player_layoutButtons = 2131492989; - // aapt resource value: 0x7f0c008f - public const int syncDownload_lblDownloadSpeedValue = 2131493007; + // aapt resource value: 0x7f0c0075 + public const int player_layoutPosition = 2131492981; - // aapt resource value: 0x7f0c0092 - public const int syncDownload_lblErrors = 2131493010; + // aapt resource value: 0x7f0c0078 + public const int player_lblLength = 2131492984; - // aapt resource value: 0x7f0c0091 - public const int syncDownload_lblErrorsValue = 2131493009; + // aapt resource value: 0x7f0c0076 + public const int player_lblPosition = 2131492982; - // aapt resource value: 0x7f0c0086 - public const int syncDownload_lblFileName = 2131492998; + // aapt resource value: 0x7f0c007a + public const int player_linearLayoutSubviews = 2131492986; - // aapt resource value: 0x7f0c008a - public const int syncDownload_lblFilesDownloaded = 2131493002; + // aapt resource value: 0x7f0c0074 + public const int player_mainLayout = 2131492980; - // aapt resource value: 0x7f0c0089 - public const int syncDownload_lblFilesDownloadedValue = 2131493001; + // aapt resource value: 0x7f0c007c + public const int player_pager = 2131492988; - // aapt resource value: 0x7f0c0085 - public const int syncDownload_lblTitle = 2131492997; + // aapt resource value: 0x7f0c0077 + public const int player_seekBar = 2131492983; - // aapt resource value: 0x7f0c008c - public const int syncDownload_lblTotalFiles = 2131493004; + // aapt resource value: 0x7f0c0079 + public const int player_waveFormView = 2131492985; - // aapt resource value: 0x7f0c008b - public const int syncDownload_lblTotalFilesValue = 2131493003; + // aapt resource value: 0x7f0c0087 + public const int preferences_mainLayout = 2131492999; - // aapt resource value: 0x7f0c0083 - public const int syncDownload_mainLayout = 2131492995; + // aapt resource value: 0x7f0c0088 + public const int preferences_pager = 2131493000; - // aapt resource value: 0x7f0c0084 - public const int syncDownload_progressBar = 2131492996; + // aapt resource value: 0x7f0c0089 + public const int preferences_pager_title_strip = 2131493001; - // aapt resource value: 0x7f0c0093 - public const int syncManualConnect_lblIPAddress = 2131493011; + // aapt resource value: 0x7f0c008a + public const int splash_layout = 2131493002; - // aapt resource value: 0x7f0c0095 - public const int syncManualConnect_lblPort = 2131493013; + // aapt resource value: 0x7f0c008b + public const int splash_text = 2131493003; - // aapt resource value: 0x7f0c0094 - public const int syncManualConnect_txtIPAddress = 2131493012; + // aapt resource value: 0x7f0c0097 + public const int syncDownload_lblCompleted = 2131493015; // aapt resource value: 0x7f0c0096 - public const int syncManualConnect_txtPort = 2131493014; + public const int syncDownload_lblCompletedValue = 2131493014; - // aapt resource value: 0x7f0c00a2 - public const int syncMenuCell_checkmark = 2131493026; + // aapt resource value: 0x7f0c009d + public const int syncDownload_lblCurrentFileProgress = 2131493021; + + // aapt resource value: 0x7f0c009c + public const int syncDownload_lblCurrentFileProgressValue = 2131493020; // aapt resource value: 0x7f0c009f - public const int syncMenuCell_image = 2131493023; + public const int syncDownload_lblDownloadSpeed = 2131493023; - // aapt resource value: 0x7f0c00a0 - public const int syncMenuCell_index = 2131493024; + // aapt resource value: 0x7f0c009e + public const int syncDownload_lblDownloadSpeedValue = 2131493022; // aapt resource value: 0x7f0c00a1 - public const int syncMenuCell_title = 2131493025; - - // aapt resource value: 0x7f0c00c8 - public const int syncMenuMenu_item_sync = 2131493064; + public const int syncDownload_lblErrors = 2131493025; - // aapt resource value: 0x7f0c009e - public const int syncMenu_btnSelectAll = 2131493022; + // aapt resource value: 0x7f0c00a0 + public const int syncDownload_lblErrorsValue = 2131493024; - // aapt resource value: 0x7f0c009d - public const int syncMenu_lblFreeSpace = 2131493021; + // aapt resource value: 0x7f0c0095 + public const int syncDownload_lblFileName = 2131493013; // aapt resource value: 0x7f0c0099 - public const int syncMenu_lblStatus = 2131493017; + public const int syncDownload_lblFilesDownloaded = 2131493017; - // aapt resource value: 0x7f0c009c - public const int syncMenu_lblTotal = 2131493020; + // aapt resource value: 0x7f0c0098 + public const int syncDownload_lblFilesDownloadedValue = 2131493016; - // aapt resource value: 0x7f0c009b - public const int syncMenu_listView = 2131493019; + // aapt resource value: 0x7f0c0094 + public const int syncDownload_lblTitle = 2131493012; - // aapt resource value: 0x7f0c0097 - public const int syncMenu_loadingLayout = 2131493015; + // aapt resource value: 0x7f0c009b + public const int syncDownload_lblTotalFiles = 2131493019; // aapt resource value: 0x7f0c009a - public const int syncMenu_mainLayout = 2131493018; + public const int syncDownload_lblTotalFilesValue = 2131493018; - // aapt resource value: 0x7f0c0098 - public const int syncMenu_progressBar = 2131493016; + // aapt resource value: 0x7f0c0092 + public const int syncDownload_mainLayout = 2131493010; - // aapt resource value: 0x7f0c00a8 - public const int syncWebBrowser_lblCode = 2131493032; + // aapt resource value: 0x7f0c0093 + public const int syncDownload_progressBar = 2131493011; + + // aapt resource value: 0x7f0c00a2 + public const int syncManualConnect_lblIPAddress = 2131493026; // aapt resource value: 0x7f0c00a4 - public const int syncWebBrowser_lblStep1 = 2131493028; + public const int syncManualConnect_lblPort = 2131493028; + + // aapt resource value: 0x7f0c00a3 + public const int syncManualConnect_txtIPAddress = 2131493027; // aapt resource value: 0x7f0c00a5 - public const int syncWebBrowser_lblStep1Details = 2131493029; + public const int syncManualConnect_txtPort = 2131493029; - // aapt resource value: 0x7f0c00a7 - public const int syncWebBrowser_lblStep2 = 2131493031; + // aapt resource value: 0x7f0c00b1 + public const int syncMenuCell_checkmark = 2131493041; - // aapt resource value: 0x7f0c00a6 - public const int syncWebBrowser_lblUrl = 2131493030; + // aapt resource value: 0x7f0c00ae + public const int syncMenuCell_image = 2131493038; - // aapt resource value: 0x7f0c00a3 - public const int syncWebBrowser_mainLayout = 2131493027; + // aapt resource value: 0x7f0c00af + public const int syncMenuCell_index = 2131493039; - // aapt resource value: 0x7f0c0082 - public const int sync_btnConnectManually = 2131492994; + // aapt resource value: 0x7f0c00b0 + public const int syncMenuCell_title = 2131493040; - // aapt resource value: 0x7f0c007e - public const int sync_lblIPAddress = 2131492990; + // aapt resource value: 0x7f0c00d7 + public const int syncMenuMenu_item_sync = 2131493079; - // aapt resource value: 0x7f0c0080 - public const int sync_lblStatus = 2131492992; + // aapt resource value: 0x7f0c00ad + public const int syncMenu_btnSelectAll = 2131493037; - // aapt resource value: 0x7f0c0081 - public const int sync_listView = 2131492993; + // aapt resource value: 0x7f0c00ac + public const int syncMenu_lblFreeSpace = 2131493036; - // aapt resource value: 0x7f0c007d - public const int sync_mainLayout = 2131492989; + // aapt resource value: 0x7f0c00a8 + public const int syncMenu_lblStatus = 2131493032; - // aapt resource value: 0x7f0c007f - public const int sync_progressBar = 2131492991; + // aapt resource value: 0x7f0c00ab + public const int syncMenu_lblTotal = 2131493035; - // aapt resource value: 0x7f0c00b2 - public const int timeShifting_btnDecrement = 2131493042; + // aapt resource value: 0x7f0c00aa + public const int syncMenu_listView = 2131493034; - // aapt resource value: 0x7f0c00ac - public const int timeShifting_btnDetectTempo = 2131493036; + // aapt resource value: 0x7f0c00a6 + public const int syncMenu_loadingLayout = 2131493030; + + // aapt resource value: 0x7f0c00a9 + public const int syncMenu_mainLayout = 2131493033; + + // aapt resource value: 0x7f0c00a7 + public const int syncMenu_progressBar = 2131493031; + + // aapt resource value: 0x7f0c00b7 + public const int syncWebBrowser_lblCode = 2131493047; // aapt resource value: 0x7f0c00b3 - public const int timeShifting_btnIncrement = 2131493043; + public const int syncWebBrowser_lblStep1 = 2131493043; // aapt resource value: 0x7f0c00b4 - public const int timeShifting_btnReset = 2131493044; + public const int syncWebBrowser_lblStep1Details = 2131493044; - // aapt resource value: 0x7f0c00ad - public const int timeShifting_lblCurrentTempo = 2131493037; + // aapt resource value: 0x7f0c00b6 + public const int syncWebBrowser_lblStep2 = 2131493046; - // aapt resource value: 0x7f0c00af - public const int timeShifting_lblCurrentTempoValue = 2131493039; + // aapt resource value: 0x7f0c00b5 + public const int syncWebBrowser_lblUrl = 2131493045; - // aapt resource value: 0x7f0c00aa - public const int timeShifting_lblDetectedTempo = 2131493034; + // aapt resource value: 0x7f0c00b2 + public const int syncWebBrowser_mainLayout = 2131493042; - // aapt resource value: 0x7f0c00ab - public const int timeShifting_lblDetectedTempoValue = 2131493035; + // aapt resource value: 0x7f0c0091 + public const int sync_btnConnectManually = 2131493009; - // aapt resource value: 0x7f0c00ae - public const int timeShifting_lblReferenceTempo = 2131493038; + // aapt resource value: 0x7f0c008d + public const int sync_lblIPAddress = 2131493005; - // aapt resource value: 0x7f0c00b0 - public const int timeShifting_lblReferenceTempoValue = 2131493040; + // aapt resource value: 0x7f0c008f + public const int sync_lblStatus = 2131493007; - // aapt resource value: 0x7f0c00a9 - public const int timeShifting_lblTitle = 2131493033; + // aapt resource value: 0x7f0c0090 + public const int sync_listView = 2131493008; - // aapt resource value: 0x7f0c00b1 - public const int timeShifting_seekBar = 2131493041; + // aapt resource value: 0x7f0c008c + public const int sync_mainLayout = 2131493004; - // aapt resource value: 0x7f0c00bb - public const int widgetPlayer = 2131493051; + // aapt resource value: 0x7f0c008e + public const int sync_progressBar = 2131493006; - // aapt resource value: 0x7f0c00c3 - public const int widgetPlayerLoading = 2131493059; + // aapt resource value: 0x7f0c00c1 + public const int timeShifting_btnDecrement = 2131493057; - // aapt resource value: 0x7f0c00c4 - public const int widgetPlayerLoading_lblMessage = 2131493060; + // aapt resource value: 0x7f0c00bb + public const int timeShifting_btnDetectTempo = 2131493051; // aapt resource value: 0x7f0c00c2 - public const int widgetPlayer_btnNext = 2131493058; - - // aapt resource value: 0x7f0c00c1 - public const int widgetPlayer_btnPlayPause = 2131493057; + public const int timeShifting_btnIncrement = 2131493058; - // aapt resource value: 0x7f0c00c0 - public const int widgetPlayer_btnPrevious = 2131493056; + // aapt resource value: 0x7f0c00c3 + public const int timeShifting_btnReset = 2131493059; // aapt resource value: 0x7f0c00bc - public const int widgetPlayer_imageAlbum = 2131493052; + public const int timeShifting_lblCurrentTempo = 2131493052; // aapt resource value: 0x7f0c00be - public const int widgetPlayer_lblAlbumTitle = 2131493054; + public const int timeShifting_lblCurrentTempoValue = 2131493054; + + // aapt resource value: 0x7f0c00b9 + public const int timeShifting_lblDetectedTempo = 2131493049; + + // aapt resource value: 0x7f0c00ba + public const int timeShifting_lblDetectedTempoValue = 2131493050; // aapt resource value: 0x7f0c00bd - public const int widgetPlayer_lblArtistName = 2131493053; + public const int timeShifting_lblReferenceTempo = 2131493053; // aapt resource value: 0x7f0c00bf - public const int widgetPlayer_lblSongTitle = 2131493055; + public const int timeShifting_lblReferenceTempoValue = 2131493055; + + // aapt resource value: 0x7f0c00b8 + public const int timeShifting_lblTitle = 2131493048; + + // aapt resource value: 0x7f0c00c0 + public const int timeShifting_seekBar = 2131493056; + + // aapt resource value: 0x7f0c00ca + public const int widgetPlayer = 2131493066; + + // aapt resource value: 0x7f0c00d2 + public const int widgetPlayerLoading = 2131493074; + + // aapt resource value: 0x7f0c00d3 + public const int widgetPlayerLoading_lblMessage = 2131493075; + + // aapt resource value: 0x7f0c00d1 + public const int widgetPlayer_btnNext = 2131493073; + + // aapt resource value: 0x7f0c00d0 + public const int widgetPlayer_btnPlayPause = 2131493072; + + // aapt resource value: 0x7f0c00cf + public const int widgetPlayer_btnPrevious = 2131493071; + + // aapt resource value: 0x7f0c00cb + public const int widgetPlayer_imageAlbum = 2131493067; + + // aapt resource value: 0x7f0c00cd + public const int widgetPlayer_lblAlbumTitle = 2131493069; + + // aapt resource value: 0x7f0c00cc + public const int widgetPlayer_lblArtistName = 2131493068; + + // aapt resource value: 0x7f0c00ce + public const int widgetPlayer_lblSongTitle = 2131493070; static Id() { @@ -951,94 +996,100 @@ public partial class Layout public const int AudioPreferences = 2130903042; // aapt resource value: 0x7f030003 - public const int EqualizerPresetCell = 2130903043; + public const int BigNotificationPlayer = 2130903043; // aapt resource value: 0x7f030004 - public const int EqualizerPresetDetails = 2130903044; + public const int EqualizerPresetCell = 2130903044; // aapt resource value: 0x7f030005 - public const int EqualizerPresetFaderCell = 2130903045; + public const int EqualizerPresetDetails = 2130903045; // aapt resource value: 0x7f030006 - public const int EqualizerPresets = 2130903046; + public const int EqualizerPresetFaderCell = 2130903046; // aapt resource value: 0x7f030007 - public const int GeneralPreferences = 2130903047; + public const int EqualizerPresets = 2130903047; // aapt resource value: 0x7f030008 - public const int GenericCell = 2130903048; + public const int GeneralPreferences = 2130903048; // aapt resource value: 0x7f030009 - public const int LibraryPreferences = 2130903049; + public const int GenericCell = 2130903049; // aapt resource value: 0x7f03000a - public const int Loops = 2130903050; + public const int LibraryPreferences = 2130903050; // aapt resource value: 0x7f03000b - public const int Main = 2130903051; + public const int Loops = 2130903051; // aapt resource value: 0x7f03000c - public const int MarkerCell = 2130903052; + public const int Main = 2130903052; // aapt resource value: 0x7f03000d - public const int MarkerDetails = 2130903053; + public const int MarkerCell = 2130903053; // aapt resource value: 0x7f03000e - public const int Markers = 2130903054; + public const int MarkerDetails = 2130903054; // aapt resource value: 0x7f03000f - public const int MobileLibraryBrowser = 2130903055; + public const int Markers = 2130903055; // aapt resource value: 0x7f030010 - public const int MobileLibraryBrowserCell = 2130903056; + public const int MobileLibraryBrowser = 2130903056; // aapt resource value: 0x7f030011 - public const int PitchShifting = 2130903057; + public const int MobileLibraryBrowserCell = 2130903057; // aapt resource value: 0x7f030012 - public const int Player = 2130903058; + public const int NotificationPlayer = 2130903058; // aapt resource value: 0x7f030013 - public const int PlayerMetadata = 2130903059; + public const int PitchShifting = 2130903059; // aapt resource value: 0x7f030014 - public const int Preferences = 2130903060; + public const int Player = 2130903060; // aapt resource value: 0x7f030015 - public const int spinner_dropdown_item = 2130903061; + public const int PlayerMetadata = 2130903061; // aapt resource value: 0x7f030016 - public const int Splash = 2130903062; + public const int Preferences = 2130903062; // aapt resource value: 0x7f030017 - public const int Sync = 2130903063; + public const int spinner_dropdown_item = 2130903063; // aapt resource value: 0x7f030018 - public const int SyncDownload = 2130903064; + public const int Splash = 2130903064; // aapt resource value: 0x7f030019 - public const int SyncManualConnect = 2130903065; + public const int Sync = 2130903065; // aapt resource value: 0x7f03001a - public const int SyncMenu = 2130903066; + public const int SyncDownload = 2130903066; // aapt resource value: 0x7f03001b - public const int SyncMenuCell = 2130903067; + public const int SyncManualConnect = 2130903067; // aapt resource value: 0x7f03001c - public const int SyncWebBrowser = 2130903068; + public const int SyncMenu = 2130903068; // aapt resource value: 0x7f03001d - public const int TimeShifting = 2130903069; + public const int SyncMenuCell = 2130903069; // aapt resource value: 0x7f03001e - public const int UpdateLibrary = 2130903070; + public const int SyncWebBrowser = 2130903070; // aapt resource value: 0x7f03001f - public const int WidgetPlayer = 2130903071; + public const int TimeShifting = 2130903071; // aapt resource value: 0x7f030020 - public const int WidgetPlayerLoading = 2130903072; + public const int UpdateLibrary = 2130903072; + + // aapt resource value: 0x7f030021 + public const int WidgetPlayer = 2130903073; + + // aapt resource value: 0x7f030022 + public const int WidgetPlayerLoading = 2130903074; static Layout() {