public async Task<PodcastEpisode> SaveTimeAsync(PodcastEpisode ep) { try { //Check to see if the podcast already exists, if Id is set. //then update it, else insert. if (!string.IsNullOrWhiteSpace(ep.Id)) { await podcastTable.UpdateAsync(ep); } else { await podcastTable.InsertAsync(ep); } //return the episode back with the updated Id return ep; } catch (Exception ex) { } return null; }
protected async override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.PodcastDetail); var showNumber = Intent.GetIntExtra("show_number", 0); episode = Activity1.ViewModel.GetPodcast(showNumber); var description = FindViewById<TextView>(Resource.Id.descriptionView); description.Text = episode.Description; var play = FindViewById<Button>(Resource.Id.playButton); var pause = FindViewById<Button>(Resource.Id.pauseButton); var stop = FindViewById<Button>(Resource.Id.stopButton); seekBar = FindViewById<SeekBar>(Resource.Id.seekBar1); status = FindViewById<TextView>(Resource.Id.statusText); updateHandler = new Handler(); player = new MediaPlayer(); player.SetDataSource(this, Android.Net.Uri.Parse(episode.AudioUrl)); player.PrepareAsync(); player.Prepared += (sender, e) => { initialized = true; player.SeekTo(timeToSet * 1000); UpdateStatus(); }; play.Click += (sender, e) => { player.Start(); updateHandler.PostDelayed(UpdateStatus, 1000); }; pause.Click += (sender, e) => player.Pause(); stop.Click += (sender, e) => { player.Stop(); player.Reset(); player.SetDataSource(this, Android.Net.Uri.Parse(episode.AudioUrl)); player.Prepare(); }; seekBar.ProgressChanged += (sender, e) => { if (!e.FromUser) return; player.SeekTo((int)(player.Duration * ((float)seekBar.Progress / 100.0))); }; var updated = await episode.GetTimeAsync(); if (updated == null || updated.ShowNumber != episode.ShowNumber) return; if (initialized && player != null) { player.SeekTo(updated.CurrentTime * 1000); UpdateStatus(); } else { timeToSet = updated.CurrentTime; } }