protected override void OnCreate(Bundle bundle) { TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Resource.Layout.Toolbar; base.OnCreate(bundle); HtmlLabelRenderer.Initialize(); Window.AddFlags(WindowManagerFlags.KeepScreenOn); Xamarin.Essentials.Platform.Init(this, bundle); Rg.Plugins.Popup.Popup.Init(this, bundle); //AnimationViewRenderer.Init(); global::Xamarin.Forms.Forms.Init(this, bundle); CrossCurrentActivity.Current.Init(this, bundle); if (CrossMediaManager.Current == null) { CrossMediaManager.Current = new MediaManagerImplementation(); } // use custom Android notifications CrossMediaManager.Current.MediaNotificationManager = new PVLMediaNotificationManager(Android.App.Application.Context, typeof(ExoPlayerAudioService)); //CrossMediaManager.Current.MediaNotificationManager = new PVLMediaNotificationManager(Android.App.Application.Context, typeof(MediaPlayerService)); // use exoPlayer MediaManagerImplementation current = CrossMediaManager.Current as MediaManagerImplementation; var exoPlayer = new ExoPlayerAudioImplementation(current.MediaSessionManager); CrossMediaManager.Current.AudioPlayer = exoPlayer; CrossNotifications.Current.GetType(); TintedImageRenderer.Init(); var s = new SfPickerRenderer(); VideoViewRenderer.Init(); CarouselViewRenderer.Init(); FFImageLoading.Forms.Platform.CachedImageRenderer.Init(false); BlobCache.ApplicationName = "Medit"; LoadApplication(new App()); }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.FirstView); var exoPlayer = new ExoPlayerAudioImplementation( ((MediaManagerImplementation)CrossMediaManager.Current).MediaSessionManager); exoPlayer.RequestProperties = new Dictionary <string, string> { { "Test", "1234" } }; CrossMediaManager.Current.AudioPlayer = exoPlayer; //new AudioImp }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); ViewModel = new MediaPlayerViewModel(); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); toolbar = FindViewById <Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar); if (toolbar != null) { SetSupportActionBar(toolbar); SupportActionBar.SetDisplayHomeAsUpEnabled(true); SupportActionBar.SetHomeButtonEnabled(true); } var exoPlayer = new ExoPlayerAudioImplementation(((MediaManagerImplementation)CrossMediaManager.Current).MediaSessionManager); exoPlayer.RequestHeaders = new Dictionary <string, string> { { "Test", "1234" } }; CrossMediaManager.Current.AudioPlayer = exoPlayer; //new AudioPlayerImplementation<ExoPlayerAudioService>(MediaSessionManager));} var previous = FindViewById <ImageButton>(Resource.Id.btnPrevious); previous.Click += async(sender, args) => { await ViewModel.MediaPlayer.PlayPrevious(); }; var playpause = FindViewById <ToggleButton>(Resource.Id.btnPlayPause); playpause.Click += async(sender, args) => { await ViewModel.MediaPlayer.PlayPause(); }; var next = FindViewById <ImageButton>(Resource.Id.btnNext); next.Click += async(sender, args) => { await ViewModel.MediaPlayer.PlayNext(); }; var position = FindViewById <TextView>(Resource.Id.textview_position); var duration = FindViewById <TextView>(Resource.Id.textview_duration); var seekbar = FindViewById <SeekBar>(Resource.Id.player_seekbar); seekbar.ProgressChanged += (sender, args) => { if (args.FromUser) { ViewModel.MediaPlayer.Seek(TimeSpan.FromSeconds(args.Progress)); } }; ViewModel.MediaPlayer.PlayingChanged += (sender, e) => { RunOnUiThread(() => { try { seekbar.Max = Convert.ToInt32(e.Duration.TotalSeconds); seekbar.Progress = Convert.ToInt32(Math.Floor(e.Position.TotalSeconds)); position.Text = $"{e.Position.Minutes:00}:{e.Position.Seconds:00}"; duration.Text = $"{e.Duration.Minutes:00}:{e.Duration.Seconds:00}"; } catch (Exception ex) { Console.WriteLine($"Exception : PlayingChanged: {ex.Message}"); } }); }; ViewModel.MediaPlayer.BufferingChanged += (sender, args) => { RunOnUiThread(() => { try { Console.WriteLine($"BufferingChanged: {args.BufferedTime.TotalSeconds}"); seekbar.SecondaryProgress = Convert.ToInt32(args.BufferedTime.TotalSeconds); } catch (Exception ex) { Console.WriteLine($"Exception : BufferingChanged: {ex.Message}"); } }); }; ViewModel.MediaPlayer.StatusChanged += (sender, e) => { Console.WriteLine($"StausChanged {e.Status}"); RunOnUiThread(() => { try { playpause.Checked = e.Status == MediaPlayerStatus.Playing || e.Status == MediaPlayerStatus.Loading || e.Status == MediaPlayerStatus.Buffering; if (e.Status == MediaPlayerStatus.Stopped || e.Status == MediaPlayerStatus.Failed || e.Status == MediaPlayerStatus.Loading) { seekbar.Progress = 0; seekbar.SecondaryProgress = 0; position.Text = "00:00"; duration.Text = "00:00"; } } catch (Exception ex) { Console.WriteLine($"Exception : StausChanged: {ex.Message}"); } }); }; ViewModel.MediaPlayer.MediaFailed += (sender, e) => { try { Console.WriteLine($"Media failed => {e.Description}"); } catch (Exception ex) { Console.WriteLine($"Exception : MediaFailed: {ex.Message}"); } }; ViewModel.MediaPlayer.MediaFileFailed += (sender, e) => { try { Console.WriteLine($"Media file ({e.File.Url}) failed: Message => {e.MediaExeption.Message}"); } catch (Exception ex) { Console.WriteLine($"Exception : MediaFileFailed: {ex.Message}"); } }; var title = FindViewById <TextView>(Resource.Id.textview_title); var subtitle = FindViewById <TextView>(Resource.Id.textview_subtitle); ViewModel.MediaPlayer.MediaFileChanged += (sender, args) => { try { Console.WriteLine($"File changed: {args.File.Metadata.Title}"); } catch (Exception ex) { Console.WriteLine($"Exception : MediaFileChanged: {ex.Message}"); } RunOnUiThread(() => { try { if (args.File.Url == ViewModel.Queue.Current.Url) { title.Text = args.File.Metadata.Title; subtitle.Text = args.File.Metadata.Artist; var cover = FindViewById <ImageView>(Resource.Id.imageview_cover); cover.SetImageBitmap(args.File.Metadata.AlbumArt as Bitmap); } } catch (Exception ex) { Console.WriteLine($"Exception : MediaFileChangedUI: {ex.Message}"); } }); }; ViewModel.Queue.Clear(); ViewModel.Queue.Add(new MediaFile() { Type = MediaFileType.AudioUrl, Url = "https://ia800806.us.archive.org/15/items/Mp3Playlist_555/AaronNeville-CrazyLove.mp3" }); ViewModel.Queue.Add(new MediaFile() { Type = MediaFileType.AudioUrl, Url = "http://www.bensound.org/bensound-music/bensound-goinghigher.mp3" }); ViewModel.Queue.Add(new MediaFile() { Type = MediaFileType.AudioUrl, Url = "http://www.montemagno.com/sample.mp3" }); ViewModel.Queue.Add(new MediaFile() { Type = MediaFileType.AudioUrl, Url = "http://www.bensound.org/bensound-music/bensound-tenderness.mp3" }); }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); ViewModel = new MediaPlayerViewModel(); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar); if (toolbar != null) { SetSupportActionBar(toolbar); SupportActionBar.SetDisplayHomeAsUpEnabled(true); SupportActionBar.SetHomeButtonEnabled(true); } var exoPlayer = new ExoPlayerAudioImplementation(((MediaManagerImplementation)CrossMediaManager.Current).MediaSessionManager); exoPlayer.RequestHeaders = new Dictionary<string, string> { { "Test", "1234" } }; CrossMediaManager.Current.AudioPlayer = exoPlayer; //new AudioPlayerImplementation<ExoPlayerAudioService>(MediaSessionManager));} var previous = FindViewById<ImageButton>(Resource.Id.btnPrevious); previous.Click += async (sender, args) => { await ViewModel.MediaPlayer.PlayPrevious(); }; var playpause = FindViewById<ToggleButton>(Resource.Id.btnPlayPause); playpause.Click += async (sender, args) => { await ViewModel.MediaPlayer.PlayPause(); }; var next = FindViewById<ImageButton>(Resource.Id.btnNext); next.Click += async (sender, args) => { await ViewModel.MediaPlayer.PlayNext(); }; var position = FindViewById<TextView>(Resource.Id.textview_position); var duration = FindViewById<TextView>(Resource.Id.textview_duration); var seekbar = FindViewById<SeekBar>(Resource.Id.player_seekbar); seekbar.ProgressChanged += (sender, args) => { if (args.FromUser) { ViewModel.MediaPlayer.Seek(TimeSpan.FromSeconds(args.Progress)); } }; ViewModel.MediaPlayer.PlayingChanged += (sender, e) => { RunOnUiThread(() => { try { seekbar.Max = Convert.ToInt32(e.Duration.TotalSeconds); seekbar.Progress = Convert.ToInt32(Math.Floor(e.Position.TotalSeconds)); position.Text = $"{e.Position.Minutes:00}:{e.Position.Seconds:00}"; duration.Text = $"{e.Duration.Minutes:00}:{e.Duration.Seconds:00}"; } catch (Exception ex) { Console.WriteLine($"Exception : PlayingChanged: {ex.Message}"); } }); }; ViewModel.MediaPlayer.BufferingChanged += (sender, args) => { RunOnUiThread(() => { try { Console.WriteLine($"BufferingChanged: {args.BufferedTime.TotalSeconds}"); seekbar.SecondaryProgress = Convert.ToInt32(args.BufferedTime.TotalSeconds); } catch (Exception ex) { Console.WriteLine($"Exception : BufferingChanged: {ex.Message}"); } }); }; ViewModel.MediaPlayer.StatusChanged += (sender, e) => { Console.WriteLine($"StausChanged {e.Status}"); RunOnUiThread(() => { try { playpause.Checked = e.Status == MediaPlayerStatus.Playing || e.Status == MediaPlayerStatus.Loading || e.Status == MediaPlayerStatus.Buffering; if (e.Status == MediaPlayerStatus.Stopped || e.Status == MediaPlayerStatus.Failed || e.Status == MediaPlayerStatus.Loading) { seekbar.Progress = 0; seekbar.SecondaryProgress = 0; position.Text = "00:00"; duration.Text = "00:00"; } } catch (Exception ex) { Console.WriteLine($"Exception : StausChanged: {ex.Message}"); } }); }; ViewModel.MediaPlayer.MediaFailed += (sender, e) => { try { Console.WriteLine($"Media failed => {e.Description}"); } catch (Exception ex) { Console.WriteLine($"Exception : MediaFailed: {ex.Message}"); } }; ViewModel.MediaPlayer.MediaFileFailed += (sender, e) => { try { Console.WriteLine($"Media file ({e.File.Url}) failed: Message => {e.MediaExeption.Message}"); } catch (Exception ex) { Console.WriteLine($"Exception : MediaFileFailed: {ex.Message}"); } }; var title = FindViewById<TextView>(Resource.Id.textview_title); var subtitle = FindViewById<TextView>(Resource.Id.textview_subtitle); ViewModel.MediaPlayer.MediaFileChanged += (sender, args) => { try { Console.WriteLine($"File changed: {args.File.Metadata.Title}"); } catch (Exception ex) { Console.WriteLine($"Exception : MediaFileChanged: {ex.Message}"); } RunOnUiThread(() => { try { if (args.File.Url == ViewModel.Queue.Current.Url) { title.Text = args.File.Metadata.Title; subtitle.Text = args.File.Metadata.Artist; var cover = FindViewById<ImageView>(Resource.Id.imageview_cover); cover.SetImageBitmap(args.File.Metadata.AlbumArt as Bitmap); } } catch (Exception ex) { Console.WriteLine($"Exception : MediaFileChangedUI: {ex.Message}"); } }); }; ViewModel.Queue.Clear(); ViewModel.Queue.Add(new MediaFile() { Type = MediaFileType.AudioUrl, Url = "https://ia800806.us.archive.org/15/items/Mp3Playlist_555/AaronNeville-CrazyLove.mp3" }); ViewModel.Queue.Add(new MediaFile() { Type = MediaFileType.AudioUrl, Url = "http://www.bensound.org/bensound-music/bensound-goinghigher.mp3" }); ViewModel.Queue.Add(new MediaFile() { Type = MediaFileType.AudioUrl, Url = "http://www.montemagno.com/sample.mp3" }); ViewModel.Queue.Add(new MediaFile() { Type = MediaFileType.AudioUrl, Url = "http://www.bensound.org/bensound-music/bensound-tenderness.mp3" }); }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); ViewModel = new MediaPlayerViewModel(); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); toolbar = FindViewById <Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar); if (toolbar != null) { SetSupportActionBar(toolbar); SupportActionBar.SetDisplayHomeAsUpEnabled(true); SupportActionBar.SetHomeButtonEnabled(true); } if (ShouldUseExoPlayer) { ((MediaManagerImplementation)CrossMediaManager.Current).MediaSessionManager = new MediaSessionManager(Application.Context, typeof(ExoPlayerAudioService)); var exoPlayer = new ExoPlayerAudioImplementation(((MediaManagerImplementation)CrossMediaManager.Current).MediaSessionManager); CrossMediaManager.Current.AudioPlayer = exoPlayer; } CrossMediaManager.Current.AudioPlayer.RequestHeaders = new Dictionary <string, string> { { "Test", "1234" } }; var previous = FindViewById <ImageButton>(Resource.Id.btnPrevious); previous.Click += async(sender, args) => { await PlaybackController.PlayPreviousOrSeekToStart(); }; var playpause = FindViewById <ToggleButton>(Resource.Id.btnPlayPause); playpause.Click += async(sender, args) => { await PlaybackController.PlayPause(); }; var next = FindViewById <ImageButton>(Resource.Id.btnNext); next.Click += async(sender, args) => { await PlaybackController.PlayNext(); }; var position = FindViewById <TextView>(Resource.Id.textview_position); var duration = FindViewById <TextView>(Resource.Id.textview_duration); var seekbar = FindViewById <SeekBar>(Resource.Id.player_seekbar); seekbar.ProgressChanged += (sender, args) => { if (args.FromUser) { PlaybackController.SeekTo(args.Progress); } }; ViewModel.MediaPlayer.PlayingChanged += (sender, e) => { RunOnUiThread(() => { try { seekbar.Max = Convert.ToInt32(e.Duration.TotalSeconds); seekbar.Progress = Convert.ToInt32(Math.Floor(e.Position.TotalSeconds)); position.Text = $"{e.Position.Minutes:00}:{e.Position.Seconds:00}"; duration.Text = $"{e.Duration.Minutes:00}:{e.Duration.Seconds:00}"; } catch (Exception ex) { Console.WriteLine($"Exception : PlayingChanged: {ex.Message}"); } }); }; ViewModel.MediaPlayer.BufferingChanged += (sender, args) => { RunOnUiThread(() => { try { Console.WriteLine($"BufferingChanged: {args.BufferedTime.TotalSeconds}"); seekbar.SecondaryProgress = Convert.ToInt32(args.BufferedTime.TotalSeconds); } catch (Exception ex) { Console.WriteLine($"Exception : BufferingChanged: {ex.Message}"); } }); }; ViewModel.MediaPlayer.StatusChanged += (sender, e) => { Console.WriteLine($"StausChanged {e.Status}"); RunOnUiThread(() => { try { playpause.Checked = e.Status == MediaPlayerStatus.Playing || e.Status == MediaPlayerStatus.Loading || e.Status == MediaPlayerStatus.Buffering; if (e.Status == MediaPlayerStatus.Stopped || e.Status == MediaPlayerStatus.Failed || e.Status == MediaPlayerStatus.Loading) { seekbar.Progress = 0; seekbar.SecondaryProgress = 0; position.Text = "00:00"; duration.Text = "00:00"; } } catch (Exception ex) { Console.WriteLine($"Exception : StausChanged: {ex.Message}"); } }); }; ViewModel.MediaPlayer.MediaFailed += (sender, e) => { try { Console.WriteLine($"Media failed => {e.Description}"); } catch (Exception ex) { Console.WriteLine($"Exception : MediaFailed: {ex.Message}"); } }; ViewModel.MediaPlayer.MediaFileFailed += (sender, e) => { try { Console.WriteLine($"Media file ({e.File.Url}) failed: Message => {e.MediaExeption.Message}"); } catch (Exception ex) { Console.WriteLine($"Exception : MediaFileFailed: {ex.Message}"); } }; var title = FindViewById <TextView>(Resource.Id.textview_title); var subtitle = FindViewById <TextView>(Resource.Id.textview_subtitle); ViewModel.MediaPlayer.MediaFileChanged += (sender, args) => { try { Console.WriteLine($"File changed: {args.File.Metadata.Title}"); } catch (Exception ex) { Console.WriteLine($"Exception : MediaFileChanged: {ex.Message}"); } RunOnUiThread(() => { try { if (args.File.Url == ViewModel.Queue.Current.Url) { title.Text = args.File.Metadata.Title; subtitle.Text = args.File.Metadata.Artist; var cover = FindViewById <ImageView>(Resource.Id.imageview_cover); cover.SetImageBitmap(args.File.Metadata.AlbumArt as Bitmap); } } catch (Exception ex) { Console.WriteLine($"Exception : MediaFileChangedUI: {ex.Message}"); } }); }; ViewModel.Init(); }